[PHP-HTML] checkbox cochée ou non ?

Résolu/Fermé
Yotte Messages postés 29 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 15 juin 2005 - 16 août 2005 à 11:17
salsh-tea Messages postés 15 Date d'inscription jeudi 13 juin 2013 Statut Membre Dernière intervention 27 janvier 2014 - 14 juin 2013 à 13:12
Bonjour,

j'ai cherché en vain une réponse à ma question sur ce forum.
Voilà mon problème :

j'ai un formulaire HTML dans une première page :
<form>
<p>Que voulez-vous étudier ?
Cocher les cases utiles.
<table border="2" cellpadding="5">
<tr><th colspan="2"><input type="checkbox" name="choix[]" value="a"><a href="a.php">A</a></th></tr>
<tr><th colspan="2"><input type="checkbox" name="choix[]" value="b"><a href="b.php">B</a></th></tr>
<tr><th colspan="2"><input type="checkbox" name="choix[]" value="c"><a href="c.php">C</a></th></tr>
<tr><th width="20%" rowspan="6">autre</th>
<td width="300"><input type="checkbox" name="choix[]" value="d"> <a href="d.php">D</a></td></tr>
<tr><td><input type="checkbox" name="choix[]" value="e"> <a href="e.php">E</a></td></tr>
<tr><td><input type="checkbox" name="choix[]" value="f"> <a href="f.php">F</a></td></tr>
<tr><td><input type="checkbox" name="choix[]" value="g"> <a href="g.php">G</a></td></tr>
<tr><td><input type="checkbox" name="choix[]" value="h"> <a href="h.php">H</a></td></tr>
<tr><td><input type="checkbox" name="choix[]" value="i"> <a href="i.php">I</a></td></tr>
</table> 
</div>
</form>


Dans une deuxième page, je voudrai pouvoir utiliser le fait que les checkbox soient cochées ou non (sans utiliser Javascript puisque je n'ai plus de formulaire dans ma 2ème page). J'ai déjà essayé d'afficher ce qui était coché, en vain :
<? if(isset($_POST['choix']))
	{$_SESSION['choix']=$_POST['choix'];}
else{$_SESSION['choix']=' ';}

echo 'Vous avez choisi d\'étudier  : ';
for ($i=0; $i<sizeof($_SESSION['choix']); $i++)
{if ($_SESSION['choix'] == '')
{echo '';}
else
{echo $_SESSION['choix'][$i].'<br>';}
}
?>


y'a-t-il un moyen de savoir si une case est cochée, un truc du genre
if ($_SESSION['choix'][$i] == 'checked')
?

Merci de votre aide !
A voir également:

8 réponses

StreM Messages postés 515 Date d'inscription lundi 18 octobre 2004 Statut Membre Dernière intervention 28 février 2007 124
16 août 2005 à 13:14
Tu es sur la bonne piste pour ce qui est d'utiliser des formulaires avec des tableaux.

Par contre, vu ce que tu veux faire, c'est pas le moyen le plus judicieux.
Appelle tes input <input name="choixA">
Et récupères les par :
$_POST['choixA']
Un input checkbox sans value coché aura une valeur à TRUE donc pour faire le test :
if ($_POST['choixA']) {...} suffit.
Et pour boucler sur tes valeur, tu peux parcourir l'alphabet :
for ($ascii = ord('A'); $ascii <= ord('Z'); $ascii++)
{
    echo chr($ascii);
}

Ou encore, tu peux appeler tes input name="choix1", et faire une boucle avec :
for ($i=0,$i<7,$i++ {
   if ($_POST['choix'.$i]) {
       echo "choix ".$i; }
  }


Sinon, avec un name="choix[]" , tu peux recuperer tes valeur avec :
$tab =$_POST['choix'];
$tab est alors un array, donc
if (isset($tab)) est toujours TRUE.
C'est if (isset($tab['A'])) qu'il faut utiliser.

bon courage !


70
Attention bullshit !
Une checkbox coché ne renvoie pas TRUE, mais plutôt 'on'.
Le test if($_POST['checkbox']) marche car les chaines non-vide sont transtypé en TRUE.
Si on fait le test if($_POST['checkbox'] === TRUE) là ça ne marche plus !

Un simple var_dump($_POST) peut éviter de propager ce genre de bêtise -_-
0
Merci à StreM pour ces explications claires et détaillées.
Merci à Zhp pour les subtilités, mais pas pour le style un peu agressif pour rien... ;)
0
BlueScreenJunky
6 déc. 2011 à 18:26
J'ai adoré le "attention bullshit" XD

En tout cas merci à tous deux =)
0
merci a tt le monde pour ces xplications .. et surtout a Zhp pour la remarque.
0
Bonjour,
J'ai trouvé un exemple qui pourrait vous aider :

#################################
<? if(!empty($_POST["mon_champ"])) { ?>
Vous avez choisi comme option -
<b>
<?
for ($i = 0; $i < count($_POST["mon_champ"]); $i++)
echo $_POST["mon_champ"][$i]." - ";
?>
</b><br><br>
<? } ?>

<FORM method="POST">
<input type="checkbox" name="mon_champ[]"
value=1>Option 1<br>
<input type="checkbox" name="mon_champ[]"
value=2>Option 2<br>
<input type="checkbox" name="mon_champ[]"
value=3>Option 3<br>
<input type="Submit" value="OK">
</FORM>
####################################
33
pour faire ca facilement, y'a la fonction implode en php qui est tres simple à utiliser est qui renvoi sous forme de string toute les checkbox cochées séparé par un caractère de séparation à definir dans la fonction.
Avec cette technique, aucune boucle à créer !
22
le réponse de emibru marche nickel
merci :p
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pdf Messages postés 133 Date d'inscription lundi 21 juillet 2003 Statut Membre Dernière intervention 11 juillet 2016
11 déc. 2010 à 14:01
hello ,
la solution de emibru super mais le problème est que dés qu'on sort de la boucle la variable n'a plus de valeur , alors que récupéré les valeurs de checkbos sert a inséré celle-ci dans une table.

donc ma question comment sortir la variable de la boucle en gardant ses valeurs ?
3
Merci c'est exactement ce que je cherchais
Je vais m'en servir tres prochainement
2
salsh-tea Messages postés 15 Date d'inscription jeudi 13 juin 2013 Statut Membre Dernière intervention 27 janvier 2014
14 juin 2013 à 13:12
Bonjour je rencontre le même problème aussi, sauf que je sais pas comment savoir quel checkbox a été choisi puisque tous ont le même nom...j'utilise une boucle While parceque je sais pas combien de ligne mon tableau va contenir, sa dépend de la base de données...On ce qui concerne le test j'incrémente une variable lorsque un checkbox est coché, mais ca renvoie toujours 1 parce que tous les checkbox ont le même nom peut être.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Bibliotheque</title>
</head>
<body>
<H3><center style="color: brown">Liste des Livres de la bibliotheque</center></H3><br/>
<?php
include('connexion.php');
$NbrC=0;
$select="Select *FROM livre";
$resultat=mysql_query($select)
or die('Requete non conforme');
echo "<table border=1 align=center><tr><th>Titre du livre</th><th>Nom de l'auteur</th><th>Categorie</th><th>Statut du livre</th><th>Reserver</th></tr>";
while($x=mysql_fetch_array($resultat))
{
echo "<tr>";
echo"<td>".$x['Titre']."</td>";
echo"<td>".$x['Nom_Auteur']."</td>";
echo"<td>".$x['Categorie']."</td>";
echo"<td>".$x['Code_enreg']."</td>";
echo"<td><form method=POST action=lecteurLivres.php><input type=checkbox name=check>reserver</td>";
echo "</tr>";
}
echo "</table><br/>\n";
echo "<center><input type=Submit name=bouton size=30 value=Valider></form></center>";
if(isset($_POST['check']))
{
$NbrC++;
if(isset($_POST['bouton']))
{
echo $NbrC;
}
}
?>
</body>
</html>
1
Bonjour je veux faire exactement la même chose i.e. voir si des checkbox sont à vrai ou pas sur VBA pour excell. Mon gros problème est de faire boucler les checkbox il y en a une centaine. Merci de votre aide
-12