J'ai 6 options, je veux obtenir les valeurs vérifiées pour les stocker dans la variable sur la deuxième page. Comment je continue à faire ça?
<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>
Et third.php
page:
$color = $_GET['color'];
echo 'The color is '.$color;
Si je supprime []
, la couleur est activée. Lorsque je le fais comme color[]
, je reçois un avis disant:
Conversion de tableau à chaîne
Ce que je veux, c’est la valeur des cases à cocher cochées pour pouvoir les stocker dans une variable.
Une bonne méthode qui est l'une de mes préférées et pour beaucoup, j'en suis sûr, consiste à utiliser foreach
qui permet d'afficher chaque couleur que vous avez choisie et d'apparaître à l'écran l'une sous l'autre.
Quand il s'agit d'utiliser des cases à cocher, vous n'avez généralement pas d'autre choix que d'utiliser foreach
, et c'est pourquoi vous ne recevez qu'une seule valeur renvoyée de votre tableau.
Voici un exemple utilisant $_GET
. Cependant, vous pouvez utiliser $_POST
et vous devrez faire correspondre les deux directives dans les deux fichiers pour fonctionner correctement.
<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
comme gestionnaire<?php
$name = $_GET['color'];
// optional
// echo "You chose the following color(s): <br>";
foreach ($name as $color){
echo $color."<br />";
}
?>
En supposant que vous ayez choisi le rouge, le vert, le bleu et le cyan comme couleurs, vous verrez apparaître ceci:
rouge
vert
bleu
cyan
Vous pouvez également vérifier si une couleur a été choisie. Si aucun n'est choisi, un message séparé apparaîtra.
<?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.";
}
?>
Pour apparaître sous forme de liste: (<ul></ul>
peut être remplacé par <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.";
}
?>
Drapeau: (5 août 2016)
J'ai reçu 2 votes négatifs ce matin et mes commentaires ont été supprimés. Pourquoi? Celui qui fait cela le fait évidemment avec malice. La réponse n'a reçu que des votes positifs et maintenant ceci. Je veux dire sérieusement; wtf? - Fred -ii- Il y a une heure, a refusé - Les gens sont libres de voter comme ils veulent, tant que vous n'êtes pas ciblé. Je ne vois aucune preuve de cela. Vos commentaires sur les votes étaient du bruit, marqués comme tels et supprimés.
Réponse à ceci: c'est juste la chose; Je suis.
(Ce n'est pas action="get"
ou action="post"
c'est method="get"
ou method="post"
Essayez de le faire en utilisant la méthode 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>
et dans third.php
ou pour un champ periculaire, vous obtenez une valeur:
$_POST['color'][0] //for RED
$_POST['color'][1] // for GREEN
Ce que je suggère, c’est mieux d’utiliser post que d’obtenir. voici une différence entre post VS obtenir
Quelques notes sur les requêtes GET:
Quelques notes sur les demandes POST:
Code 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>
Code 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.";
}
?>
Je pense que la valeur du $_POST['color']
devrait être lue uniquement après avoir vérifié si elle est définie.
<?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.";
}
?>
Si vous souhaitez attribuer des valeurs spécifiques à de nouvelles variables si elles ont été sélectionnées:
// 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';
}
foreach est le meilleur moyen d’obtenir un tableau de valeurs.
voici l'exemple de code: code 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 />";
}
?>
Peut-être un meilleur moyen utilise-t-il la fonction php in_array () comme ceci:
$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
;
Pour commencer, nous avons créé une variable $style
à définir si nous voulons que les options soient horizontales ou verticales. Cela n'influencera pas la façon dont nous affichons nos cases à cocher. Ensuite, nous définissons le $name
pour nos options. C’est nécessaire comme nom du tableau dans lequel nous voulons conserver nos options. J'ai créé une boucle ici pour construire chaque option comme indiqué dans le tableau $options
, puis nous les vérifions article s'il doit être vérifié dans notre forme renvoyée. Je pense que cela devrait simplifier la manière dont nous pouvons reproduire un formulaire avec des cases à cocher.
Juste pour imprimer, vous pouvez utiliser comme ci-dessous:
print_r($_GET['color']);
ou
var_dump($_GET['color']);
C'est très simple.
Le champ de case à cocher est comme un texte saisi. Si vous n'écrivez rien dans le champ, cela signifie que le champ n'existe pas.
<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!";
}
}
?>