Récupérer les données d'un checkbox

Résolu
amandine -  
 amandine -
Bonjour,

J'ai créer un formulaire avec des checkbox et je voudrais récupérer les données dans un fichier texte.
Voici mon formulaire :
<form method="post" name="formulaire" action="articles.php">
<table height="300px">
	<tr>
		<td width="50" align="center"><INPUT type="checkbox" NAME="article[]" VALUE="corbeille_fruit"></td>
		<td>Corbeille de fruit<br>Quantité : 1<br>Origine : diverse</td>
	</tr>
	<tr>
		<td align="center"><INPUT type="checkbox" NAME="article[]" VALUE="corbeille_fruit_secs"></td>
		<td>Corbeille de fruit secs<br>Quantité : 1<br>Origine : diverse</td>
	</tr>
	<tr>
		<td align="center"><INPUT type="checkbox" NAME="article[]" VALUE="corbeille_fruit_sechés"></td>
		<td>Corbeille de fruit séchés<br>Quantité : 1<br>Origine : diverse</td>
	</tr>
	<tr>
		<td><input type="submit" value="Envoyer"></td>
		<td><input type="reset" value="Annuler"></td>
	</tr>
</table>
<form>

et dans articles.php j'ai fait quelques essai, mais j'arrive à récupérer qu'une seule valeur, même si je coche plusieurs cases.
<?
$inF = fopen('articles.txt', 'a'); 

$article=$_POST['article'];   
for ($i=0; isset($article[$i]); $i++){// On teste si plusieurs valeurs sont sélectionnées
$article= $article[$i];
echo $article. '<br>';
}
fputs($inF, "$article|");
fclose($inF);

?>


Merci d'avance

3 réponses

Cralon Messages postés 557 Date d'inscription   Statut Membre Dernière intervention   348
 
Bonsoir,

Le problème vient de ta boucle for. En effet, une boucle for s'écrit de cette façon : for (début, condition de fin, pas). Or ta condition de fin est "isset($article[$i])".

La fonction isset permet de savoir si une variable est déclarée ou pas. Elle renvoie donc 0 ou 1, vrai ou faux.

Dans ton cas tu dois utiliser "count($article)" qui te renverra le nombre de cases de ton tableau $article et ne s'arrêtera donc pas à la première occurence.

Ton code devient donc :

for ($i=0; $i<count($article); $i++){
0
Cralon Messages postés 557 Date d'inscription   Statut Membre Dernière intervention   348
 
Ayant vu ce problème, je n'ai pas cherché plus loin, mais je viens de m'apercevoir d'un second problème qui est que dans ta boucle for tu fais $article= $article[$i]; ce qui revient à écraser le tableau par le contenu de sa première case. C'est génant. Ceci devrait mieux fonctionner :
for ($i=0; $i<count($article); $i++){
$unarticle= $article[$i];
echo $unarticle. '<br>';
fputs($inF, "$unarticle|");
}
fclose($inF);
0
amandine
 
Merci beaucoup, ça marche bien...
0