Formulaire et recuperation de cases a cocher

Eléphant du PHP | 109 Messages

11 nov. 2008, 12:33

Bonjour
J'ai un formulaire dontje veux recuperer les cases a cocher le hic c'est que ce ne me recupere que la derniere case cochées.Pourtant quand je fais echo $creation toutes les cases cochées sont là
Si quelqu'un pouvait me dire d'ou vient l'erreur
merci
Nadege
<?


// pour les cases a cocher
if (isset($_POST['mon_champ'])) {
    for ($i = 0, $c = count($_POST['mon_champ']); $i < $c; $i++) {
	$creation=$_POST['mon_champ'][$i].", ";
    }
}
//fin des cases a cocher


if (!isset($_POST["action"])) $_POST["action"]="";
if (!isset($_POST['mon_champ'][$i])) $_POST['mon_champ'][$i]="";
if (!isset($creation)) $creation="";
$msg="";
$flag=1;
if ($_POST["action"]=="Envoyer" ){
	$destinataire="[email protected]"; //mettez ici votre adresse e-mail 
	$objet="Formulaire de contact du site web"; // titre du mail automatique
	//$message_envoi.="Vous avez choisi dans les cases a cocher:".$_POST['mon_champ'][$i]." \n";
	$message_envoi.="Vous avez choisi dans les cases a cocher :".$creation." \n";
	
	mail($destinataire,$objet,$message_envoi); // envoi du message
	
	$flag=0; //si tout est OK, on passe cette variable à 1
}
else{
	$msg="<span class='info'>Vous devez remplir tous les champs, portant un astérisque *.</span>";
}




// quand le message est parti voici ce qui est affiche
if($flag==0){
 echo "<span class='textegris'>Merci pour votre message, nous vous répondrons dans les meilleurs délais<br />";
 echo '<a href="index.html">Retour</a></span>';
}
else {
?>

<!-- A partir d'ici il s'agit du traitement du formulaire (ce qui est apparent)-->
<div id="formu">
<form method="post" name="contact" action="<?php echo $PHP_SELF ?>">
	<? echo $msg ?><p>

	  <input type="checkbox" name="mon_champ[]" value="terrassement"/>
	  Terrassement
      <input type="checkbox" name="mon_champ[]" value="cloture" />
      Cloture
      <input type="checkbox" name="mon_champ[]" value="engazonnement" />
      Engazonnement
      <input type="checkbox" name="mon_champ[]" value="amenagement_terrase"/>
      Am&eacute;nagement de terrasse
      <input type="checkbox" name="mon_champ[]" value="arrosage" />
      Arrosage
      <input type="checkbox" name="mon_champ[]" value="elagage" />
    Elagage <br />
	<input type="checkbox" name="mon_champ[]" value="entretien"/>Entretien
	</p>
	<p>
	  <input type="submit" name="action" value="Envoyer" />
</p>
  </form>
</div>
<!-- Ici c'est la fin du traitement du formulaire-->

<? } ?>

Mammouth du PHP | 686 Messages

11 nov. 2008, 13:17

Tout simplement parce que toutes tes cases a cochées s'appellent name="mon_champ[]" et que la selection multiple n'existe pas pour les cases
Chaque case a cocher appelle les differement
name="mon_champ1[]"
name="mon_champ2[]"

Eléphant du PHP | 109 Messages

11 nov. 2008, 13:36

je nomme toutes les cases mon_champ[] ca me les incremente dans un tableau sinon on ne peut pas les recuperer

ViPHP
ViPHP | 1136 Messages

11 nov. 2008, 19:19

@sylvaing26
Tout simplement parce que toutes tes cases a cochées s'appellent name="mon_champ[]" et que la selection multiple n'existe pas pour les cases
ha bon ?

Les cases à cocher peuvent aussi être multiple .. je te l'assure ...

si tu fais un echo de $creation , c'est normal qu'il ne t'affiche que la dernière valeur car
$creation=$_POST['mon_champ'][$i].", "; 
il n'y a pas de concaténation ...
$creation.=$_POST['mon_champ'][$i].", "; 
là ca devrait aller mieux ...

Eléphant du PHP | 109 Messages

12 nov. 2008, 14:02

effectivement avec ce petit point ca marche beaucoup mieux
merci