Checkbox et récupération de leur valeur

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Checkbox et récupération de leur valeur

par iclo » 05 juin 2006, 10:33

On peut mentionné au passage la fonction foreach qui permet de parcourir facilement un tableau.

par Ryle » 05 juin 2006, 10:29

Petite précision importante concernant les checkbox, leurs valeurs ne sont envoyées par le formulaire que si elle sont cochées.

Afin de savoir si la case est cochée, au lieu d'en afficher la valeur, tu peux simplement tester si elle est définie avec la fonction isSet()

Dans ton premier exemple :

Code : Tout sélectionner

<input type="checkbox" name="choix1" value="0" /> <input type="checkbox" name="choix2" value="0" /> <input type="checkbox" name="choix3" value="0" /> <input type="checkbox" name="choix4" value="0" />
Tes cases cochées ont pour valeur "0", que php va considérer comme faux ou vide. Si tu demandes de l'afficher tu ne verras donc rien, il faut donc éviter de mettre zéro. (Personnellement je met toujours value="true" sur mes cases, sachant que si elle ne sont pas cochées, le fait de les interroger me retournera false. Cela dit, tu peux mettre ce que tu veux, sachant que si tu ne met pas d'attribut value, la valeur récupérée sera "on")

En testant si l'index est défini avec isSet(), tu aurais le résultat attendu :
$valeurs = "checkbox1 : " . isSet($_POST['choix1']) . "...";


Dans le deuxième cas, tes checkbox ayant toutes le même nom, toutes les valeurs des cases cochées seront regroupées dans un tableau.

Code : Tout sélectionner

<input type="checkbox" name="choix[]" value="1" /> <input type="checkbox" name="choix[]" value="2" /> <input type="checkbox" name="choix[]" value="3" /> <input type="checkbox" name="choix[]" value="4" />
$_POST['choix'] contiendra donc array(1,3,4) si les cases de valeur 1, 3 et 4 sont cochées.
Pour les tester tu utilises alors la fonction in_array() :
$valeurs = "checkbox1 : " . in_array("1", $_POST['choix']) . "...";
Ce fonctionnement est très utile lorsque tu ne connais pas le nombre ou le nom des cases (typiquement une liste d'objet avec id, on utilises les identifiants comme valeur et cela permet de travailler uniquement sur ceux selectionnés en parcourant le tableau :))



Ps : si tu ne fais pas un echo de $valeurs tu ne verras pas ce qu'elle contient ;)

par Grummfy » 05 juin 2006, 01:23

hello,
tout d'abord je ne te conseillerait que trop l'utilisation de la balise [ p h p ] ou [ c o d e ]

sinon

dans ton formulaire si tu as :

Code : Tout sélectionner

<form action="monscript.php" method="post">
tu récupères les valeur envoyé à la page "monscript.php" via $_POST

Code : Tout sélectionner

<form action="monscript.php" method="get">
tu récupères les valeur envoyé à la page "monscript.php" via $_GET

ensuite que tu utilises $_GET ou $_POST, cela s'utilsie comme ceci :
$_POST['nomduname']

"nomduname" étant la valeur de l'attribut name de ton formulaire.
exemple

Code : Tout sélectionner

<form action="script.php" method="POST"> <input type="checkbox" name="choix1" /> </form>
donc ici

Code : Tout sélectionner

if (isset($_POST['choix1'])) echo 'choix 1 est sélectionner';
par contre avec les radiobox t'es attribut name devront avoir comme nom qqchose[] dès lors tu récupéreras un tableau....

un conseil tu peux toujours faire un
echo '<pre>';
print_r($_POST);
echo '</pre>';
lorsque un formulaire est soumis cela t'affichera le contenu du tableau $_POST....

Checkbox et récupération de leur valeur

par i386 » 05 juin 2006, 00:47

Bonsoir,

Voici mon souci :

J'ai un formulaire avec 4 checkbox et je voudrais récupéré leur valeur dans une variable

extrait du code :
//mon formulaire
<form action="script.php" method="POST">
<input type="checkbox" name="choix1" value="0" />
<input type="checkbox" name="choix2" value="0" />
<input type="checkbox" name="choix3" value="0" />
<input type="checkbox" name="choix4" value="0" />
</form>

//mon script qui se trouve dans un autre fichier
<?php
$valeurs = "checkbox1 : " . $_POST['choix1']. "\n" . "checkbox2 : " . $_POST['choix2'] . "\n" . "checkbox3 : " . $_POST['choix3']. "\n" .  "checkbox4 : " . $_POST['choix4']. "\n";
?>
En fait, je voudrais récupérer leur état (0 ou 1). Dans les docs on me parle de tableau, $_GET, etc, c'est (très) flou.
J'ai l'impression de devoir "mettre" mes checkbox dans mon formulaire de la facon suivante:
<input type="checkbox" name="choix[]" value="1" />
<input type="checkbox" name="choix[]" value="2" />
<input type="checkbox" name="choix[]" value="3" />
<input type="checkbox" name="choix[]" value="4" />
Mais la je suis encore plus perdu, remarque que ca ressemble de plus en plus à un tableau, HELP, Please

Comme mes checkbox ont un nom bien distinct, je devrais pouvoir récupérer leur valeur comme pour un widget "text", je suis perdu, et extrèment débutant en php.

J'èspère que j'ai été assez claire, merci pour vos futurs réponses.