我建立了一个即时报价计算器,在点击复选框时给出了价格。其中一些复选框具有相同的价格。
当我在$_POST['package']
变量中使用具有这些复选框值的implode函数时(我将其发送到电子邮件后),我无法确定选中了哪个复选框。
HTML code:
<form>
<p><fieldset id="packages" class="logo_choice">
<legend>Do you want to register a new website?</legend>
<ol>
<li>
<input type="checkbox" name="package[]" id="package_basic" value="15.00">
<label for="package_basic">Yes <font color="F69B35">($15)</font></label>
</li>
<li>
<input type="checkbox" name="package[]" id="package_pro" value="0.00">
<label for="package_pro">No <font color="F69B35">($0)</font></label>
</li>
<li>
<input type="checkbox" name="package[]" id="package_pro" value="0.00">
<label for="package_pro">Maybe <font color="F69B35">($0)</font></label>
</li>
</ol>
</fieldset></p>
</form>
PHP代码:
$email_message .= (isset($_POST['package'])) ?
"Domain: ".implode(" ", $_POST['package'])."\n" : '';
我收到的电子邮件:
Domain: 0.00 15.00 0.00
我如何知道选择了哪一个(即选中了哪个复选框)?
答案 0 :(得分:2)
您应该同时指定合适的HTML类型,例如收音机,并适当设置名称(您现在有一个重复的ID):
<li>
<input type="radio" name="package" id="package_basic" value="15.00">
<label for="package_basic">Yes <font color="F69B35">($15)</font></label>
</li>
<li>
<input type="radio" name="package" id="package_pro" value="0.00">
<label for="package_pro">No <font color="F69B35">($0)</font></label>
</li>
<li>
<input type="radio" name="package" id="package_maybe" value="0.00">
<label for="package_maybe">Maybe <font color="F69B35">($0)</font></label>
</li>
这会让你package=<value>
没有爆炸。
或者你可以使用数组,但是你不能轻易使用implode
,因为你只会收集值,而不是它们来自哪里,所以你需要一个循环:
<li>
<input type="checkbox" name="package[basic]" id="package_basic" value="15.00">
<label for="package_basic">Yes <font color="F69B35">($15)</font></label>
</li>
<li>
<input type="checkbox" name="package[pro]" id="package_pro" value="15.00">
<label for="package_pro">No <font color="F69B35">($0)</font></label>
</li>
<li>
<input type="checkbox" name="package[extra]" id="package_extra" value="20.00">
<label for="package_extra">Maybe <font color="F69B35">($0)</font></label>
</li>
$total = 0;
foreach ($package as $key => $value) {
$email .= "package {$key} for {$value}<br />\n";
$total += $value;
}
if ($total > 0) {
$total = number_format($total, 2);
$email .= "for a total of {$total}";
}
这会给你,比方说,
package basic for 15.00
package extra for 20.00
for a total of 35.00
答案 1 :(得分:0)
如果任何时候只能勾选1,你应该使用单选按钮
如果您使用复选框,所有3个值都需要不同,那么如果您打算使用数组