Pobieranie wartości pola wyboru przy wysyłaniu

Mam 6 opcji, chcę uzyskać zaznaczone wartości, aby zapisać je w zmiennej na drugiej stronie. Jak mam to dalej robić?

<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>

I third.php Strona:

$color = $_GET['color'];

echo 'The color is '.$color;

Jeśli usunę [], dostaję kolor jest włączony, kiedy robię to tak jak color[] dostaję powiadomienie :

Konwersja tablicy na łańcuch

Chcę mieć wartość checkboxes checkboxes, więc mogę ją zapisać w zmiennej.

 40
Author: Nofel, 2013-08-24

9 answers

Dobrą metodą, która jest moją ulubioną i dla wielu jestem pewien, jest użycie foreach, które wyświetli każdy wybrany kolor i pojawią się na ekranie jeden pod drugim.

Jeśli chodzi o użycie checkboxów, nie masz wyboru, jak tylko użyć foreach, i dlatego otrzymujesz tylko jedną wartość zwracaną z tablicy.

Oto przykład użycia $_GET. Można jednak użyć $_POST i trzeba by obie dyrektywy dopasować w obu plikach, aby działały jak należy.

FORMULARZ 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 (using $_GET) using third.php as your handler

<?php

$name = $_GET['color'];

// optional
// echo "You chose the following color(s): <br>";

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

?>
Po wybraniu koloru czerwonego, zielonego, niebieskiego i cyjanowego pojawią się w następujący sposób:]}

Czerwony
zielony
Niebieski
cyan


Opcja # 2

Możesz również sprawdzić, czy wybrany został Kolor. Jeśli nie zostanie wybrana żadna, pojawi się oddzielna wiadomość.

<?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.";
}

?>

Opcje dodatkowe:

Pojawiać się jako lista: (<ul></ul> może być zastąpiony przez <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.";
}

?>

Flaga: (5 sierpnia 2016)

otrzymałem dziś rano 2 downvoty i Moje komentarze są usuwane; dlaczego? Ktokolwiek to robi, robi to ze złością. Odpowiedź nie otrzymała nic poza pozytywnymi głosami, a teraz to. Poważnie; wtf? - Fred-ii-1 godzina temu Nie widzę na to żadnych dowodów. Wasze komentarze o głosowaniach zostały oznaczone jako takie i usunięte.

Odpowiedź na to: właśnie o to chodzi; jestem.

 109
Author: Funk Forty Niner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-13 21:19:09

(to nie action="get" lub action="post" to method="get" lub method="post"

Spróbuj to zrobić metodą 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>

I w trzecim.php

Lub dla pola peryk otrzymujemy wartość w:

$_POST['color'][0] //for RED
$_POST['color'][1] // for GREEN
 11
Author: Rahul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-24 23:13:40

Sugeruję, że lepiej używać posta niż get. oto niektóre różnice między post VS get

Kilka uwag na temat żądań GET:

  1. żądania GET mogą być buforowane
  2. pobieranie żądań pozostaje w historii przeglądarki
  3. żądania GET można dodawać do zakładek
  4. żądania GET nigdy nie powinny być używane do przetwarzania wrażliwych danych
  5. GET requests have length restrictions
  6. żądania GET powinny być używane tylko do pobierania danych

Kilka uwag o Post requests:

  1. żądania POST nigdy nie są buforowane
  2. żądania POST nie pozostają w historii przeglądarki
  3. nie można dodawać postów do zakładek
  4. żądania POST nie mają ograniczeń co do długości danych

Kod 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>

Kod 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,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-24 18:25:02

Tylko do drukowania możesz użyć jak poniżej:

print_r($_GET['color']);

Lub

var_dump($_GET['color']);
 0
Author: Vaibhavraj Roham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-06 17:10:21

Myślę, że wartość $_POST['color'] powinna być odczytana dopiero po sprawdzeniu, czy jest ustawiona.

<?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,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-24 17:39:05

Być może lepszym sposobem jest użycie funkcji php in_array () w następujący sposób:

$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
;

Na początek stworzyliśmy zmienną $style do Ustawienia, jeśli chcemy, aby Opcje były poziome lub pionowe. W ten sposób nieczęsto będziemy wyświetlać nasze pola wyboru. Następnie ustawiamy $name dla naszych opcji, jest to potrzebne jako nazwa tablicy, w której chcemy zachować nasze opcje. Utworzyłem tutaj pętlę do konstruowania każdej opcji jak podano w tablicy $options, następnie sprawdzamy każdy element czy powinien sprawdź w naszym formularzu zwrotu. Uważam, że powinno to uprościć sposób, w jaki możemy odtworzyć formularz za pomocą pól wyboru.

 0
Author: Cor Cool,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-25 10:43:06

Jeśli chcesz zamienić określone wartości na nowe zmienne, jeśli zostały wybrane:

// 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: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-09 22:26:00

Foreach jest najlepszym sposobem na uzyskanie tablicy wartości.

Tutaj przykładowy kod: kod 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>

Phpcode:

<?php

$name = $POST['color'];



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

?>
 0
Author: manikandanpachaiyappan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
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,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-11 09:44:44