Получение значений флажка при отправке

У меня есть 6 вариантов, я хочу получить проверенные значения, чтобы сохранить их в переменной на второй странице. Как мне это сделать?

<form action="third.php" method="get"> <!-- Choices --> Red <input type="checkbox" name="color[]" id="color" value="Red"> Green <input type="checkbox" name="color[]" id="color" value="Green"> Blue <input type="checkbox" name="color[]" id="color" value="Blue"> Cyan <input type="checkbox" name="color[]" id="color" value="Cyan"> Magenta <input type="checkbox" name="color[]" id="color" value="Magenta"> Yellow <input type="checkbox" name="color[]" id="color" value="Yellow"> Black <input type="checkbox" name="color[]" id="color" value="Black"> <!-- Submit --> <input type="submit" value="submit"> </form> 

И страница third.php :

 $color = $_GET['color']; echo 'The color is '.$color; 

Если я удалю [] , я получаю, что цвет включен, когда я делаю это как color[] Я получаю уведомление, говорящее:

Преобразование массива в строку

Я хочу, чтобы значение checked, checkboxes, чтобы я мог хранить его в переменной.

Хороший метод, который является моим фаворитом, и для многих, я уверен, состоит в том, чтобы использовать foreach который будет выводить каждый выбранный вами цвет, и появляться на экране один под другим.

Когда дело доходит до использования флажков, у вас вроде бы нет выбора, кроме как использовать foreach , и именно поэтому вы получаете только одно значение, возвращаемое из вашего массива.

Вот пример использования $_GET . Тем не менее, вы можете использовать $_POST и для того, чтобы работать правильно, необходимо, чтобы обе директивы совпадали в обоих файлах.

HTML-форма

 <form action="third.php" method="get"> Red<input type="checkbox" name="color[]" id="color" value="red"> Green<input type="checkbox" name="color[]" id="color" value="green"> Blue<input type="checkbox" name="color[]" id="color" value="blue"> Cyan<input type="checkbox" name="color[]" id="color" value="cyan"> Magenta<input type="checkbox" name="color[]" id="color" value="Magenta"> Yellow<input type="checkbox" name="color[]" id="color" value="yellow"> Black<input type="checkbox" name="color[]" id="color" value="black"> <input type="submit" value="submit"> </form> 

PHP (используя $ _GET), используя third.php качестве обработчика

 <?php $name = $_GET['color']; // optional // echo "You chose the following color(s): <br>"; foreach ($name as $color){ echo $color."<br />"; } ?> 

Предполагая, что вы выбрали красный, зеленый, синий и голубой цвета, появится следующее:

красный
зеленый
синий
циан


ВАРИАНТ № 2

Вы также можете проверить, был ли выбран цвет. Если ни один не выбран, появится отдельное сообщение.

 <?php $name = $_GET['color']; if (isset($_GET['color'])) { echo "You chose the following color(s): <br>"; foreach ($name as $color){ echo $color."<br />"; } } else { echo "You did not choose a color."; } ?> 

Дополнительные опции:

Для отображения в виде списка: ( <ul></ul> может быть заменено на <ol></ol> )

 <?php $name = $_GET['color']; if (isset($_GET['color'])) { echo "You chose the following color(s): <br>"; echo "<ul>"; foreach ($name as $color){ echo "<li>" .$color."</li>"; } echo "</ul>"; } else { echo "You did not choose a color."; } ?> 

Флаг: (5 августа 2016 года)

Сегодня утром я получил 2 downvotes и мои комментарии мы удалены; Зачем? Кто бы это ни делал, это obvioulsy делает это со злобой. Ответ не получил ничего, кроме отсрочек, и теперь это. Я имею в виду серьезно; WTF? – Fred -ii- 1 час назад отказался – люди могут голосовать, как хотят, до тех пор, пока вас не привлекают. Я не вижу никаких доказательств этого. Ваши комментарии к голосам были помечены шумом, помечены как таковые и удалены.

Ответьте на это: Это просто вещь; Я.

(Это не action="get" или action="post" это method="get" или method="post"

Попытайтесь сделать это, используя метод post:

 <form action="third.php" method="POST"> Red<input type="checkbox" name="color[]" id="color" value="red"> Green<input type="checkbox" name="color[]" id="color" value="green"> Blue<input type="checkbox" name="color[]" id="color" value="blue"> Cyan<input type="checkbox" name="color[]" id="color" value="cyan"> Magenta<input type="checkbox" name="color[]" id="color" value="Magenta"> Yellow<input type="checkbox" name="color[]" id="color" value="yellow"> Black<input type="checkbox" name="color[]" id="color" value="black"> <input type="submit" value="submit"> </form> 

и в third.php

или для отдельного поля, которое вы colud получаете в:

 $_POST['color'][0] //for RED $_POST['color'][1] // for GREEN 

Я предлагаю, лучше использовать пост, чем получить. вот какая разница между post VS get

Некоторые заметки о запросах GET:

  1. Запросы GET можно кэшировать
  2. Запросы GET остаются в истории браузера
  3. Запросы GET можно добавить в закладки
  4. Запросы GET никогда не должны использоваться при работе с конфиденциальными данными
  5. Запросы GET имеют ограничения по длине
  6. Запросы GET должны использоваться только для извлечения данных

Некоторые примечания по запросам POST:

  1. Запросы POST никогда не кэшируются
  2. Запросы POST не сохраняются в истории браузера
  3. Запросы POST не могут быть отмечены закладкой
  4. Запросы POST не имеют ограничений на длину данных

Код HTML

  <html> <head></head> <body> <form action="output.php" method="post"> Red<input type="checkbox" name="color[]" id="color" value="red"> Green<input type="checkbox" name="color[]" id="color" value="green"> Blue<input type="checkbox" name="color[]" id="color" value="blue"> Cyan<input type="checkbox" name="color[]" id="color" value="cyan"> Magenta<input type="checkbox" name="color[]" id="color" value="Magenta"> Yellow<input type="checkbox" name="color[]" id="color" value="yellow"> Black<input type="checkbox" name="color[]" id="color" value="black"> <input type="submit" value="submit"> </form> <body> </html> 

PHP-код

  <?php if(isset($_POST['color'])) { $name = $_POST['color']; echo "You chose the following color(s): <br>"; foreach ($name as $color){ echo $color."<br />"; }} // end brace for if(isset else { echo "You did not choose a color."; } ?> 

Просто для печати вы можете использовать, как показано ниже:

 print_r($_GET['color']); 

или

 var_dump($_GET['color']); 

Я думаю, что значение для $_POST['color'] должно быть прочитано только после проверки его набора.

 <?php if(isset($_POST['color'])) { $name = $_POST['color']; echo "You chose the following color(s): <br>"; foreach ($name as $color){ echo $color."<br />"; }} // end brace for if(isset else { echo "You did not choose a color."; } ?> 

Возможно, лучший способ – использовать функцию php in_array () следующим образом:

 $style='V';//can be 'V'ertical or 'H'orizontal $lineBreak=($style=='V')?'<br>':''; $name='colors';//the name of your options $Legent="Select your $name";//dress it up in a nice fieldset with a ledgent $options=array('red','green','blue','orange','yellow','white','black'); $boxes='';//innitiate the list of tickboxes to be generated if(isset($_REQUEST["$name"])){ //we shall use $_REQUEST but $_POST would be better $Checked=$_REQUEST["$name"]; }else{ $Checked=array(); } foreach($options as $option){ $checkmark=(in_array($option,$Checked))?'checked':''; $nameAsArray=$name.'[]';//we would like the returned data to be in an array so we end with [] $boxes.=($style=='V')?"<span class='label2' align='right'><b>$option : </b></span>":"<b>$option </b>"; $boxes.="<input style='width:2em;' type='checkbox' name='$nameAsArray' id='$option' value='$option' $checkmark >$lineBreak"; } echo<<<EOF <html> <head></head> <body> <form name="Update" method="GET" action="{$_SERVER['PHP_SELF']}">\n <fieldset id="tickboxes" style="width:25em;"> <legend>{$Legent}</legend> {$boxes} </fieldset> <button type="submit" >Submit Form</button> </form> <body> </html> EOF ; 

Для начала мы создали переменную $style для установки, если мы хотим, чтобы параметры были горизонтальными или вертикальными. Это будет неточно, как мы показываем наши флажки. Затем мы устанавливаем $name для наших параметров, это необходимо как имя массива, где мы хотим сохранить наши параметры. Я создал цикл здесь, чтобы построить каждый параметр, заданный в параметрах массива $options , и затем мы проверяем каждый элемент, если он должен быть проверен в нашей возвращенной форме. Я считаю, что это должно упростить способ воспроизведения формы с помощью флажков.

Если вы хотите включить определенные значения в новые переменные, если они были выбраны:

 // Retrieve array color[] and set as variable $colors = $_GET['color']; // Use array_search to find the key for "red" $key_red = array_search('red', $colors); // If "red" exists, the key will be an integer (or FALSE) if (is_int($key_red)) { $red_color = 'Red was selected'; } 
 //retrive check box and gender value $gender=$row['gender']; $chkhobby=$row['chkhobby']; <tr> <th>GENDER</th> <td> Male<input type="radio" name="gender" value="1" <?php echo ($gender== '1') ? "checked" : "" ; ?>/> Female<input type="radio" name="gender" value="0" <?php echo ($gender== '0') ? "checked" : "" ; ?>/> </td> </tr> <tr> <th>Hobbies</th> <td> <pre><?php //print_r($row); $hby = @explode(",",$row['chkhobby']); //print_r($hby); ?></pre> read<input id="check_1" type="checkbox" name="chkhobby[]" value="read" <?php if(in_array("read",$hby)){?> checked="checked"<?php }?>> write<input id="check_2" type="checkbox" name="chkhobby[]" value="write" <?php if(in_array("write",$hby)){?> checked="checked"<?php }?>> play<input id="check_4" type="checkbox" name="chkhobby[]" value="play" <?php if(in_array("play",$hby)){?> checked="checked"<?php }?>> </td> </tr> //update $gender=$_POST['gender']; $chkhobby = implode(',', $_POST['chkhobby']);