У меня есть 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
и для того, чтобы работать правильно, необходимо, чтобы обе директивы совпадали в обоих файлах.
<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>
third.php
качестве обработчика <?php $name = $_GET['color']; // optional // echo "You chose the following color(s): <br>"; foreach ($name as $color){ echo $color."<br />"; } ?>
Предполагая, что вы выбрали красный, зеленый, синий и голубой цвета, появится следующее:
красный
зеленый
синий
циан
Вы также можете проверить, был ли выбран цвет. Если ни один не выбран, появится отдельное сообщение.
<?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:
Некоторые примечания по запросам 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']);