it-swarm.com.de

Checkbox-Werte beim Senden abrufen

Ich habe 6 Optionen, ich möchte die überprüften Werte erhalten, um sie auf der zweiten Seite in einer Variablen zu speichern. Wie mache ich das weiter?

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

Und third.php Seite:

$color = $_GET['color'];

echo 'The color is '.$color;

Wenn ich [] entferne, bekomme ich die Farbe auf, wenn ich es wie color[] mache, bekomme ich eine Nachricht mit der Aufschrift: 

Konvertierung von Array in String

Was ich möchte, ist der Wert von angekreuzten Ankreuzfeldern, damit ich sie in Variablen speichern kann.

45
Nofel

Eine gute Methode, die für mich ein Favorit ist, und für viele bin ich sicher, foreach zu verwenden, die jede von Ihnen gewählte Farbe ausgibt und auf dem Bildschirm untereinander erscheint. 

Bei der Verwendung von Kontrollkästchen haben Sie irgendwie keine andere Wahl, als foreach zu verwenden. Aus diesem Grund erhalten Sie nur einen Wert, der von Ihrem Array zurückgegeben wird.

Hier ist ein Beispiel mit $_GET. Sie können jedoch $_POST verwenden und müssen beide Anweisungen in beiden Dateien übereinstimmen, damit sie ordnungsgemäß funktionieren.

HTML-FORMULAR

<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 (mit $ _GET), das third.php als Handler verwendet

<?php

$name = $_GET['color'];

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

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

?>

Angenommen, Rot, Grün, Blau und Cyan als Farben ausgewählt haben, wird dies folgendermaßen aussehen:

rot
Grün
Blau
Cyan 


OPTION 2

Sie können auch überprüfen, ob eine Farbe ausgewählt wurde. Wenn keine ausgewählt sind, wird eine separate Meldung angezeigt.

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

?>

Zusatzoptionen:

So erscheinen Sie als Liste: (<ul></ul> kann durch <ol></ol> ersetzt werden)

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

?>

Flagge: (5. August 2016)

Ich habe heute morgen 2 Downvotes erhalten und meine Kommentare werden entfernt. Warum? Wer auch immer das tut, ist offensichtlich mit Bosheit. Die Antwort hat nur Upvotes erhalten und jetzt das. Ich meine, ernsthaft; wtf? - Fred -ii- vor 1 Stunde abgelehnt - Die Menschen können frei wählen, wie sie wollen, solange Sie nicht ins Visier genommen werden. Ich sehe keinen Beweis dafür. Ihre Kommentare zu den Abstimmungen waren Lärm, wurden als solche markiert und entfernt.

Antwort darauf: Das ist genau das Richtige. Ich bin.

113

(Es ist nicht action="get" oder action="post", es ist method="get" oder method="post"

Versuchen Sie es mit der Post-Methode:

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

und in dritter.php

oder für ein perikuläres Feld, für das Sie einen Wert haben:

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

Was ich vorschlage, ist, dass es besser ist, Post zu benutzen als zu bekommen. hier gibt es einige unterschiede zwischen post VS bekommen

Einige Hinweise zu GET-Anfragen:

  1. GET-Anforderungen können zwischengespeichert werden
  2. GET-Anforderungen verbleiben im Browserverlauf
  3. GET-Anfragen können mit einem Lesezeichen versehen werden
  4. GET-Anfragen sollten niemals verwendet werden, wenn sensible Daten verarbeitet werden
  5. GET-Anforderungen haben Längenbeschränkungen
  6. GET-Anforderungen sollten nur zum Abrufen von Daten verwendet werden

Einige Hinweise zu POST -Anfragen:

  1. POST-Anforderungen werden niemals zwischengespeichert
  2. POST-Anfragen bleiben nicht im Browserverlauf
  3. POST-Anforderungen können nicht mit einem Lesezeichen versehen werden
  4. POST-Anforderungen haben keine Einschränkungen bezüglich der Datenlänge

HTML Quelltext

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

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

    }

    ?>
9
Sathya Baman

Ich denke, der Wert für den $_POST['color'] sollte nur gelesen werden, wenn geprüft wird, ob er gesetzt ist.

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

Wenn Sie bestimmte Werte in neue Variablen umwandeln möchten, falls diese ausgewählt wurden:

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

foreach ist der beste Weg, um Werte zu erhalten.

hier der beispielcode: html code:

<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 />";
}

?>

Ein besserer Weg ist vielleicht die Verwendung der PHP-Funktion in_array () wie folgt:

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

Zu Beginn haben wir eine Variable $style erstellt, um festzulegen, ob die Optionen horizontal oder vertikal angezeigt werden sollen. Dies wird selten dazu führen, wie wir unsere Checkboxen anzeigen. Als Nächstes legen wir den $name für unsere Optionen fest. Dieser wird als Name des Arrays benötigt, in dem wir unsere Optionen beibehalten möchten ..__ Ich habe hier eine Schleife erstellt, um jede Option wie im Array $options angegeben zu konstruieren, dann überprüfen wir jede Einzelteil, wenn es in unserem zurückgesandten Formular überprüft werden sollte. Ich glaube, dies sollte die Möglichkeit vereinfachen, ein Formular mit Kontrollkästchen zu reproduzieren.

0
Cor Cool

Nur zum Drucken können Sie wie folgt verwenden: 

print_r($_GET['color']);

oder

var_dump($_GET['color']);
0

Es ist sehr einfach.

Das Kontrollkästchen ist wie ein Eingabetext. Wenn Sie nichts in das Feld schreiben, wird das Feld nicht existieren.

<form method="post">
    <input type="checkbox" name="check">This is how it works!<br>
    <button type="submit" name="submit">Submit</button>
</form>
<?php
if(isset($_POST['submit'])) {
    if(!isset($_POST['check'])) {
        echo "Not selected!";
    }else{
        echo "Selected!";
    }
}
?>
0
Arty