[PHP-HTML] checkbox cochée ou non ? [Résolu/Fermé]

Messages postés
30
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
16 août 2005
- - Dernière réponse : salsh-tea
Messages postés
16
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 !
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
519
Date d'inscription
lundi 18 octobre 2004
Statut
Membre
Dernière intervention
28 février 2007
121
70
Merci
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 !


Dire « Merci » 70

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 62894 internautes nous ont dit merci ce mois-ci

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 -_-
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... ;)
-
J'ai adoré le "attention bullshit" XD

En tout cas merci à tous deux =)
merci a tt le monde pour ces xplications .. et surtout a Zhp pour la remarque.
33
Merci
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>
####################################
22
Merci
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 !
3
Merci
le réponse de emibru marche nickel
merci :p
Messages postés
134
Date d'inscription
lundi 21 juillet 2003
Statut
Membre
Dernière intervention
11 juillet 2016
3
Merci
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 ?
2
Merci
Merci c'est exactement ce que je cherchais
Je vais m'en servir tres prochainement
Messages postés
16
Date d'inscription
jeudi 13 juin 2013
Statut
Membre
Dernière intervention
27 janvier 2014
1
Merci
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>
-12
Merci
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