Контрольный список формы PHP показывает метку «Для:» вместо «Значение:»

Наконец-то я получил контрольный список, работающий на 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 долларов США

Был бы признателен за любую помощь!

Незначительные проблемы, не связанные с вашей реальной проблемой: здесь у вас есть лишняя двойная кавычка name = "ch[]"", а метка вашего второго флажка ссылается на идентификатор первого флажка. Ваша актуальная проблема: PHP не обращается к идентификаторам ввода формы так, как вам хотелось бы.

cteski 10.04.2019 21:00

Соглашаясь с комментарием @cteski; вам, вероятно, придется реорганизовать соглашение, которое вы используете для назначения атрибутов name вашим флажкам, чтобы сделать их доступными способом, аналогичным тому, что вы описываете. Доступ к input из type='checkbox' с name = "ch['basic-option1']" можно получить как $_POST['ch']['basic-option1'].

esqew 10.04.2019 21:03
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
49
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Отправляются только успешные элементы управления (входы) и только значение. Вы можете использовать опцию в качестве ключа массива:

<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']));

Первый метод, который у вас есть, работает отлично, спасибо за ваш ответ!

JTR 10.04.2019 21:57

просто сделайте свой стоимость идентичным вашему я бы, например:

<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?

AbraCadaver 10.04.2019 21:09

Другие вопросы по теме