У меня есть 1 форма с несколькими чекбоксами в ней (каждый с кодом):
<input type="checkbox" name="check_list" value="<? echo $row['Report ID'] ?>">
Где $row['Report ID']
является первичным ключом в базе данных - поэтому каждое значение разное.
Как я смогу определить, какие флажки были установлены? (Возможно, несколько)
Это для системы входящих сообщений, и у меня есть кнопка внизу, которую я хочу (при нажатии) удалить все сообщения (id: $row['Report ID']
), у которых установлен флажок.
Задайте в форме имя check_list[]
и вы сможете получить доступ ко всем чекбоксам как к массиву($_POST['check_list'][]
).
Вот'небольшой пример по запросу:
<form action="test.php" method="post">
<input type="checkbox" name="check_list[]" value="value 1">
<input type="checkbox" name="check_list[]" value="value 2">
<input type="checkbox" name="check_list[]" value="value 3">
<input type="checkbox" name="check_list[]" value="value 4">
<input type="checkbox" name="check_list[]" value="value 5">
<input type="submit" />
</form>
<?php
if(!empty($_POST['check_list'])) {
foreach($_POST['check_list'] as $check) {
echo $check; //echoes the value set in the HTML form for each checked checkbox.
//so, if I were to check 1, 3, and 5 it would echo value 1, value 3, value 5.
//in your case, it would echo whatever $row['Report ID'] is equivalent to.
}
}
?>
Редактировать чтобы отразить то, что @Марк сказал в комментарии ниже.
Вы можете сделать петлю через все значения.
HTML-код:
<input type="checkbox" name="check_list[]" value="<?=$rowid?>" />
<input type="checkbox" name="check_list[]" value="<?=$rowid?>" />
<input type="checkbox" name="check_list[]" value="<?=$rowid?>" />
РНР:
foreach($_POST['check_list'] as $item){
// query to delete where item = $item
}
вы должны назвать свои флажки соответствующим образом:
<input type="checkbox" name="check_list[]" value="…" />
Затем вы можете получить доступ ко всем отмеченным флажкам с помощью кнопки
// loop over checked checkboxes
foreach($_POST['check_list'] as $checkbox) {
// do something
}
ps. не забудьте правильно экранировать вывод (htmlspecialchars()
)
<input type="checkbox" name="check_list[<? echo $row['Report ID'] ?>]" value="<? echo $row['Report ID'] ?>">
И после поста вы можете просмотреть их в цикле:
if(!empty($_POST['check_list'])){
foreach($_POST['check_list'] as $report_id){
echo "$report_id was checked! ";
}
}
Или получить определенное значение, опубликованное на предыдущей странице:
if(isset($_POST['check_list'][$report_id])){
echo $report_id . " was checked!<br/>";
}
К сожалению, старая тема, но это одна из важных частей упомянуть, что @JamesRattray и другие испытывают проблемы.
Не занимайтесь самолечением закрыть вход теге (используя />
) когда вы выкладываете несколько значений в php-скрипт. Когда вы самостоятельно закрыть тег, он заканчивается определение массива и вы будете иметь только одно значение опубликовано в сценарии на представление. В силу @Скон 'ы ответ может не работать до />
изменилась.
Это то, что вызывает предупреждение: неверный аргумент поставляются для foreach() в /home1/...` ошибка PHP в этом случае.
Редактировать: как отмечалось в комментариях ниже, дальнейшие исследования показывают, что это зависит от параметра "DOCTYPE". Если у вас установлен набор для XHTML, он потребует, чтобы тег вход закрыт. Если у вас установлен набор на HTML5, он потребует, чтобы тег input не закроют. Есть также шанс, что это может быть продиктовано какой браузер пользователь просматривает страницу в и как же следует указать DOCTYPE, указанных в Кодексе.
Это'ы довольно простой. Обратите внимание и вы'll получить это прямо сейчас! :)
Вы сможете создать HTML в массив, который потом будет отправлен в PHP-массив. Ваш HTML-код будет выглядеть следующим образом:
<input type="checkbox" name="check_list[1]" alt="Checkbox" value="checked">
<input type="checkbox" name="check_list[2]" alt="Checkbox" value="checked">
<input type="checkbox" name="check_list[3]" alt="Checkbox" value="checked">
Где[1] [2] [3]
- это идентификатор вашего сообщения, это означает, что вы Эхо
свой `$строки['идентификатор отчета'] в своем месте.
Затем, когда вы отправите форму, ваш PHP-массив будет выглядеть так:
print_r($check_list)
[1] => проверено [3] => проверено
В зависимости от которые были проверены, а какие нет.
Я'м уверена, что вы сможете продолжить с этого момента.