#php #arrays
#php #массивы
Вопрос:
У меня есть эта простая форма:
HTML:
<input type="checkbox" name="product[]" value="20$" /> book
<input type="checkbox" name="product[]" value="30$" /> plane
PHP:
$product = $_POST['product'];
foreach($product as $value) {
echo $value;
}
Примечание:
Пользователь может выбрать один или два… продукты.
Вопрос:
Я хочу знать, есть ли решение для получения name
тоже, например, добавление класса ID или что-то в этом роде..
В принципе, я не могу получить name
атрибут, потому что я не отправил его с формой.
Комментарии:
1. Примечание: для лучшего доступа используйте метку:
<input id="book" ... /><label for="book">book</label>
2. Вы действительно отправили атрибут name. Это
product[]
. 🙂3. Я имею в виду название каждого выбранного (самолет или книга)
Ответ №1:
Добавьте недостающую информацию в свои POST-параметры:
<input type="checkbox" name="product[book]" value="20$" /> book
<input type="checkbox" name="product[plane]" value="30$" /> plane
Вы можете выполнить итерацию по нему следующим образом:
foreach ($_POST['product'] as $name => $value) {
// ...
}
Комментарии:
1. следует отметить, что первой переменной является ключ массива. 1
Ответ №2:
Вы можете использовать опцию, представленную elusive, но, похоже, в этом случае вы передаете цену от клиента к серверу. Это может позволить людям мошенничать. Они могли бы с небольшим взломом отправить другую (более низкую) цену. Если вы просто отправите ‘book’ и переопределите цену на сервере, это не будет проблемой.
Если вы выберете этот путь, вы можете просто поместить продукт (‘book’) в значение:
<input type="checkbox" id="book" name="product[]" value="book" />
<label for="book">book</label>
<input type="checkbox" id="plane" name="product[]" value="plane" />
<label for="plane">plane</label>
Комментарии:
1. Да, но я тоже хочу значение (price) 🙂