Наконец-то я получил контрольный список, работающий на PHP, но в нем указано «значение:» моего ввода, а не «для:», причина, по которой я не могу использовать «значение:», заключается в том, что значение представляет собой число, которое суммируется и я хочу знать, какая опция была отмечена галочкой, а не просто видеть число,
<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 = "[email protected]";
$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";
}
Как я могу заставить его отображать имя «для» или даже «id» отмеченного флажка вместо «значения»?
Например, это то, что я хочу:
Дополнительно: Вариант 1, Вариант 2 Итого: 300 долларов США
Это то, что у меня есть на данный момент, а не то, что я хочу:
Дополнительно: 100, 200 Итого: 300 долларов США
Был бы признателен за любую помощь!
Соглашаясь с комментарием @cteski; вам, вероятно, придется реорганизовать соглашение, которое вы используете для назначения атрибутов name
вашим флажкам, чтобы сделать их доступными способом, аналогичным тому, что вы описываете. Доступ к input
из type='checkbox'
с name = "ch['basic-option1']"
можно получить как $_POST['ch']['basic-option1']
.
Отправляются только успешные элементы управления (входы) и только значение. Вы можете использовать опцию в качестве ключа массива:
<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']));
Первый метод, который у вас есть, работает отлично, спасибо за ваш ответ!
просто сделайте свой стоимость идентичным вашему я бы, например:
<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>
Тогда как они суммируют 100 и 200?
Незначительные проблемы, не связанные с вашей реальной проблемой: здесь у вас есть лишняя двойная кавычка
name = "ch[]""
, а метка вашего второго флажка ссылается на идентификатор первого флажка. Ваша актуальная проблема: PHP не обращается к идентификаторам ввода формы так, как вам хотелось бы.