PHP表单清单显示“ For:”标签,而不是“ Value:”

时间:2019-04-10 18:55:04

标签: php forms checkbox

我终于有了一个在PHP中工作的清单,但是它列出了输入的“值:”而不是“ for:”,原因是我不能使用“值:”是因为该值是一个总计,我想知道已经勾选了哪个选项,而不仅仅是看到一个数字,

<input class="basic-config" type="checkbox" name="ch[]" id="basic-option1" value="100"><label for="basic-option1">option 1<span class="right-align">$100</span></label>

<input class="basic-config" type="checkbox" name="ch[]" id="basic-option2" value="200"><label for="basic-option2">option 2<span class="right-align">$200</span></label>

PHP在下面:

if (isset($_POST['submit'])) {

$name = $_POST ['name'];
$mailFrom = $_POST ['mail'];
$website = $_POST ['website'];
$comments = $_POST ['comments'];
$basicAmount = $_POST ['basic-amount'];
$extras = "None";
if(isset($_POST["ch"]))
$extras = implode(", ", $_POST["ch"]);

$mailTo = "josh@myemail.com";
$headers = "From: ".$mailFrom; 
$txt = "\n
Basic Order Request. \n\n
From: $name \n\n
Email: $mailFrom \n\n
Website: $website \n\n
Comments: $comments \n\n
Extras: $extras \n\n
Total: $basicAmount";
}

如何获取列出复选框的“ for”或“ id”名称而不是列出“ value”?

例如,这就是我想要的:

其他:选项1,选项2 总计:$ 300

这是我目前所拥有的,而不是我想要的:

额外:100、200 总计:$ 300

不胜感激!

2 个答案:

答案 0 :(得分:1)

仅提交成功的控件(输入),仅提交值。您可以将该选项用作数组键:

<input type="checkbox" name="ch[Option 1]" value="100">
<input type="checkbox" name="ch[Option 2]" value="200">

然后获取那些键:

$extras = implode(", ", array_keys($_POST['ch']));

或创建一个隐藏的输入数组并将它们配对(使用相同的键):

<input type="hidden" name="ex[0]" value="Option 1">
<input type="checkbox" name="ch[0]" value="100">
<input type="hidden" name="ex[1]" value="Option 2">
<input type="checkbox" name="ch[1]" value="200">

然后访问具有相应检查的选项:

$extras = implode(", ", array_intersect_key($_POST['ex'], $_POST['ch']));

答案 1 :(得分:-1)

只需将您的与您的 id 相同,例如:

<input class="basic-config" type="checkbox" name="ch[]" id="basic-option1" value="Option 1"><label for="basic-option1">option 1<span class="right-align">$100</span></label>
<input class="basic-config" type="checkbox" name="ch[]" id="basic-option2" value="Option 2"><label for="basic-option1">option 2<span class="right-align">$200</span></label>