Получение нескольких имен / идентификаторов флажков с php - PullRequest
7 голосов
/ 08 января 2011

Как я могу получить имена или идентификаторы нескольких выбранных флажков при отправке, используя PHP?Ниже приведен пример формы.Спасибо.

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
   <input type="checkbox" name="orange" id="orange">
   <input type="checkbox" name="apple" id="apple">
   <input type="checkbox" name="sky" id="sky">
   <input type="checkbox" name="sea" id="sea">
   <br>
   <br>
   <input type="submit" name="Submit" value="Submit">
</form>

Ответы [ 4 ]

22 голосов
/ 08 января 2011

Значения флажков отправляются из формы, только если флажок установлен. Более того, учитывается атрибут name, а не ID.

Существует несколько способов обработки флажков в PHP:

  1. Дайте всем флажкам одно и то же имя, за которым следует пара квадратных скобок, чтобы весь набор обрабатывался как массив. В этом случае присвойте каждому флажку значение.
  2. Дайте каждому флажку другое имя и значение.
  3. Дайте каждому флажку свое имя, но не значение.

В каждом случае вам необходимо проверить наличие имени флажка в массиве $ _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 ().

9 голосов
/ 08 января 2011

Вам необходимо присвоить входным данным одно и то же имя:

<input type="checkbox" name="selection[]" value="orange">
<input type="checkbox" name="selection[]" value="apple">
<input type="checkbox" name="selection[]" value="sky">
<input type="checkbox" name="selection[]" value="sea">

Затем выполнить итерацию по массиву $ _POST ['selection'] в PHP.

4 голосов
/ 08 января 2011

Вы не получите идентификаторы, но имена будут ассоциативными индексами в массиве $_POST$_REQUEST).ПРИМЕЧАНИЕ. Они будут доступны в массиве, только если они были проверены клиентом.

if ($_POST['oragne'] == 'on')

2 голосов
/ 08 января 2011

Вы можете настроить их для публикации в PHP в виде массивов, если вы создадите их, как показано ниже:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
   <input type="checkbox" name="box_group_1[oragne]" id="oragne">
   <input type="checkbox" name="box_group_1[apple]" id="apple">
   <input type="checkbox" name="box_group_1[sky]" id="sky">
   <input type="checkbox" name="box_group_1[sea]" id="sea">
   <br>
   <br>
   <input type="submit" name="Submit" value="Submit">
</form>
<?php
print_r($_POST['box_group_1']);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...