Значения флажков отправляются из формы, только если флажок установлен. Более того, учитывается атрибут name, а не ID.
Существует несколько способов обработки флажков в PHP:
- Дайте всем флажкам одно и то же имя, за которым следует пара квадратных скобок, чтобы весь набор обрабатывался как массив. В этом случае присвойте каждому флажку значение.
- Дайте каждому флажку другое имя и значение.
- Дайте каждому флажку свое имя, но не значение.
В каждом случае вам необходимо проверить наличие имени флажка в массиве $ _POST.
Например:
<input type="checkbox" name="color[]" id="orange" value="orange">
<input type="checkbox" name="color[]" id="apple" value="apple">
Чтобы получить значения для этих флажков:
if (isset($_POST['color'])) {
$colors = $_POST['color'];
// $colors is an array of selected values
}
Однако, если каждый флажок имеет свое имя и явное значение, подобное этому:
<input type="checkbox" name="orange" id="orange" value="orange">
<input type="checkbox" name="apple" id="apple" value="apple">
Вам все еще нужно использовать isset ():
if (isset($_POST['orange'])) {
// orange has been set and its value is "orange"
}
Если вы не установите значение, значением по умолчанию будет «on», но оно не будет в массиве $ _POST, если оно не выбрано, поэтому вам все равно нужно использовать isset ().