Check box HTML / PHP

Résolu/Fermé
Messages postés
124
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
1 juillet 2014
-
Messages postés
112
Date d'inscription
samedi 8 mars 2008
Statut
Membre
Dernière intervention
19 juillet 2012
-
Bonjour,

J'ai fait un formulaire en HTML qui se crée grace à une base de donnée mysql.

<input type="checkbox" name="choixModule_<?php echo $i;?>" value="<?php echo $row['idArt'];?>" >


$row['idArt']; correspond à l'article que je séléctionne. Je ne peux donc pas le changer. (J'anticipe la réponse parce que j'ai deja vu cette réponse sur les forums.)

Dans ce formulaire, j'ai aussi rajouter un compteur pour savoir combien d'entrée j'affiche afin de faire une boucle correcte.

<input type="hidden" name="nbEntree" value="<?php echo $i;?>" />


Voici donc la page qui récupère les informations du formulaire. (Jusque la aucun souci, je présentai la démarche.)



for ($i=0;$i<=$_POST['nbEntree'];$i++ ){
	   if ($_POST['choixModule_'.$i])
	   {	
	   		var_dump($_POST['choixModule_'.$i]);
			echo $_POST['choixModule_'.$i];
			$maChaine .= '/'.$_POST['choixModule'.$i]; // Correspond à l'id de l'article coché (modules) séparé par des slash.
	   }
    }

	$_SESSION['choixModule'] = $maChaine; // Enregistrement des modules choisis.
	echo $_SESSION['choixModule'];


Conclusion,

- la boucle fonctionne correctement et le nombre de fois qu'il faut.
- le var_dump m'affiche rien du tout
- l'echo du choixModule non plus
- $maChaine affiche que les slash. je me retrouve donc avec le nombre de slash correspondant au nombre de tour dans la boucle.


Donc voila, je ne trouve pas d'ou vient le problème, je suppose tout de meme que c'est la récuperation qui ne marche pas.

Merci de prendre du temps pour moi et de m'expliquer d'ou provient l'erreur.




3 réponses

Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
896
<?php

for ($i=0;$i<=$_POST['nbEntree'];$i++ ){ //déja la tu avait une erreur i allait de 0 à nbEntrée donc 1 fois de trop 0 à 5 ça fait 6 pas il aurrait fallut mettre $i<$_POST['nbEntree']
	   if ($_POST['choixModule_'.$i])
	   {	
	   		var_dump($_POST['choixModule_'.$i]);
			echo $_POST['choixModule_'.$i];
			$maChaine .= '/'.$_POST['choixModule'.$i]; // Correspond à l'id de l'article coché (modules) séparé par des slash.
	   }
    }

	$_SESSION['choixModule'] = $maChaine; // Enregistrement des modules choisis.
	echo $_SESSION['choixModule'];
?>

une autre solution:
<input type="checkbox" name="choixModule[]" value="<?php echo $row['idArt'];?>" >
le name avec les [] permet d'avoir les checkbox sous forme d'array, plus besoin de nbEntree en Hidden

<?php
$maChaine=""; //pour concatener par .=  il vaut mieux l'initialiser à vide avant
for($i=0; $i<sizeof($_POST['choixModule']);$i++){
	//echo $_POST['choixModule'][$i];
	$maChaine .= '/'.$_POST['choixModule'][$i]; // Correspond à l'id de l'article coché (modules) séparé par des slash.
}
$_SESSION['choixModule'] = $maChaine; // Enregistrement des modules choisis.
	echo $_SESSION['choixModule'];
?>
Messages postés
124
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
1 juillet 2014
2
En effet, $maChaine est initialisé avant mais je voulais pas trop blindé mon explication :p

j'ai utilisé la deuxième méthode du coup, merci beaucoup du temps que tu as pris pour me répondre.

Passe une bonne soirée et Hop un petit +1 parce que ca fait plaisir :)
Messages postés
112
Date d'inscription
samedi 8 mars 2008
Statut
Membre
Dernière intervention
19 juillet 2012
13
met résolu stp ;)