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


У меня есть 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[] Я получаю уведомление, в котором говорится:

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

Что мне нужно, так это значение флажков, чтобы я мог хранить его в переменной.

 40
Author: Nofel, 2013-08-24

9 answers

Хороший метод, который является моим любимым и для многих, я уверен, заключается в использовании 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 отрицательных голоса, и мои комментарии мы удалили; почему? Кто бы это ни делал, очевидно, что он делает это со злым умыслом. Ответ не получил ничего, кроме повышающих голосов, а теперь еще и это. Я имею в виду серьезно; wtf? – Фред -ii - 1 час назад отказался - Люди могут голосовать так, как они хотят, до тех пор, пока вы не становитесь мишенью. Я не вижу никаких доказательств этого. Ваши комментарии о голосованиях были шумом, помеченным как такие, и удаленные.

Ответ на это: В том-то и дело; Я.

 109
Author: Funk Forty Niner, 2017-07-13 21:19:09

(Это не 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

Или для перикулярного поля вы можете получить значение в:

$_POST['color'][0] //for RED
$_POST['color'][1] // for GREEN
 11
Author: Rahul, 2013-08-24 23:13:40

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

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

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

Некоторые примечания к запросам на публикацию:

  1. Запросы POST никогда не кэшируются
  2. Запросы на публикацию не остаются в истории браузера
  3. Запросы на публикацию не могут быть помечены закладками
  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.";

    }

    ?>
 8
Author: Sathya Baman, 2015-12-24 18:25:02

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

print_r($_GET['color']);

Или

var_dump($_GET['color']);
 0
Author: Vaibhavraj Roham, 2015-04-06 17:10:21

Я думаю, что значение для $_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.";

}

?>
 0
Author: Blacboy, 2015-12-24 17:39:05

Возможно, лучший способ - использовать функцию 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, затем мы проверяем каждый элемент, если он должно быть проверено в нашей возвращенной форме. Я считаю, что это должно упростить способ воспроизведения формы с флажками.

 0
Author: Cor Cool, 2016-05-25 10:43:06

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

// 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';
}
 0
Author: , 2017-11-09 22:26:00

Foreach - лучший способ получить массив значений.

Вот пример кода: html-код:

<form action="send.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>

Код Php:

<?php

$name = $POST['color'];



foreach ($name as $color){ 
    echo $color."<br />";
}

?>
 0
Author: manikandanpachaiyappan, 2018-05-23 03:40:26
//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']);
 -1
Author: jigar, 2016-08-11 09:44:44