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

Résolu/Fermé
amandine - 12 mai 2008 à 20:29
 amandine - 12 mai 2008 à 21:42
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 samedi 20 octobre 2007 Statut Membre Dernière intervention 11 novembre 2010 348
12 mai 2008 à 20:38
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 samedi 20 octobre 2007 Statut Membre Dernière intervention 11 novembre 2010 348
12 mai 2008 à 20:57
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
Merci beaucoup, ça marche bien...
0