У меня есть 1 форма с несколькими флажками (каждый с кодом):
<input type="checkbox" name="check_list" value="<? echo $row['Report ID'] ?>">
Где $row['Report ID']
первичный ключ в базе данных, так что каждое значение отличается.
Как я могу сказать, какие флажки были отмечены? (Может быть несколько)
Это для системы входящих сообщений, и у меня есть кнопка ниже, которую я хочу (при нажатии) удалить все сообщения (идентификаторы:), у $row['Report ID']
которых установлен флажок.
$check
будет равноon
.if($_POST)
- бесполезно,$_POST
всегда будет правдой. Вы должны проверить, если!empty($_POST['check_list'])
вместо этого.array_key_exists('check_list', $_POST) && !empty($_POST['check_list'])
empty()
не вызывает эту ошибку. Из руководства:empty() does not generate a warning if the variable does not exist.
Изменить Чтобы отразить то, что @Marc сказал в комментарии ниже.
Вы можете сделать цикл по всем опубликованным значениям.
HTML:
PHP:
источник
[]
синтаксис в определении поля, который заставляет PHP создавать это значение $ _POST в виде массива. В противном случае это будет одно значение, не являющееся массивом, что приведет к разрыву цикла foreach ().Вы должны назвать свои флажки соответственно:
Вы можете получить доступ ко всем установленным флажкам с помощью
пс. убедитесь, что правильно выходите из вашего вывода (
htmlspecialchars()
)источник
И после публикации вы можете просмотреть их:
Или получите определенное значение, опубликованное на предыдущей странице:
источник
Извините, старая тема, но это одна важная вещь для упоминания, с которой у @JamesRattray и других были проблемы.
НЕ закрывайте сам
input
тег (используя/>
), когда вы пытаетесь опубликовать несколько значений в сценарии PHP. Когда вы закрываете тег самостоятельно, он завершает определение массива, и у вас будет только одно значение, отправленное в ваш скрипт при отправке. В действительности ответ @Scone может не работать до/>
будет изменено.Это то, что вызывает
Warning: Invalid argument supplied for foreach() in /home1/...
ошибку PHP в этом случае.РЕДАКТИРОВАТЬ: Как отмечено в комментариях ниже, дальнейшие исследования показывают, что это зависит от DOCTYPE. Если вы установили DOCTYPE для XHTML, потребуется закрыть тег ввода. Если у вас есть DOCTYPE HTML5, потребуется, чтобы входной тег не был закрыт. Существует также вероятность, что это может быть продиктовано тем, в каком браузере пользователь просматривает страницу, и насколько хорошо она соответствует DOCTYPE, указанному в коде.
источник
Это довольно просто. Обратите внимание, и вы получите это прямо сейчас! :)
Вы создадите HTML-массив, который затем будет отправлен в PHP-массив. Ваш HTML-код будет выглядеть так:
Где
[1] [2] [3]
являютсяID
s из ваших сообщений, а это означает , что вы будетеecho
ваш$row['Report ID']
на своем месте.Затем, когда вы отправляете форму, ваш массив PHP будет выглядеть так:
print_r($check_list)
[1] => checked [3] => checked
В зависимости от того, какие были проверены, а какие нет.
Я уверен, что вы можете продолжить с этого момента.
источник
check_list[]
будет начинаться с,check_list[0]
а неcheck_list[1]
.В любом случае, это не только доблесть, но и моя любовь.
Consto me aseguro que los valores sean 1 год. Как и MySQL puedo hacer la consulta, venga en matriz o no:
источник