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

Résolu
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
Configuration: Windows Vista
Firefox 2.0.0.14

3 réponses

  1. 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
    1. 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
      1. Merci beaucoup, ça marche bien...
        0