Page 1 sur 1

Besoin d'aide pour récupérer CheckBox

Posté : 11 oct. 2010, 16:51
par anadroow
Bonjour ! j'ai un problème avec l'envoie d'un formulaire par email... en faite le problème est que je n'arrive pas à recevoir ce que les gens coche dans une liste de checkbox... j'ai chercher des heures mais sans succès...

Étant donné que je suis un super noob en question de php... je me suis dénicher un script déja tout prêt pour l'envoie de formulaire par email mais quand j'ajoute des INPUTs de type CheckBox.. rien à faire :(

En gros le but est que l'utilisateur dois remplir des champs INPUT de type text et faire une sélection parmi une liste en checkbox. Une fois le message envoyer, je devrais recevoir par mail les informations entré + leurs choix dans la liste (qui ont été coché).

Pouvez vous svp m'aider à résoudre ce problème ??
voici le contenue de ma page... :)

Code : Tout sélectionner

<?php $email_dest = "[email protected]"; if ($_POST['envoi']) { $message_remerciement = "texte de remerciement. "; // E-mail headers: $headers ="MIME-Version: 1.0 \n"; $headers .="From: identifiant de réception de mail \n"; $headers .="Content-Type: text/html; charset=iso-8859-1 \n"; $subject = "Une question au webmaster"; $partie_entete = "<html><head> <meta http-equiv=Content-Type content=text/html; charset=iso-8859-1> </head> <body bgcolor=#FFFFFF>"; for ($a=1; $a<= $_POST['nbre_champs_texte']; $a++) { $partie_champs_texte .= "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_champ'.$a] . " = " . $_POST['champ'.$a] . "</font><br>"; } $aDoor = $_POST['formDoor']; if(empty($aDoor)) { echo("You didn't select any buildings."); } else { $N = count($aDoor); echo("You selected $N door(s): "); for($i=0; $i < $N; $i++) { echo($aDoor[$i] . " "); } } if ($_POST['nbre_zones_texte'] != 0) { $partie_zone_texte = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_zone'] . " = " . $_POST['zone_texte'] . "</font><br>"; $partie_zone_texte = stripslashes($partie_zone_texte); } $fin = "</body></html>"; $sortie = $partie_entete . $partie_champs_texte . $partie_zone_email . $partie_zone_texte . $fin; // Send the e-mail if (@!mail($email_dest,$subject,$sortie,$headers)) { echo("Envoi du formulaire impossible"); } // Closing if !mail... } // Closing if edit ?><html> <head> <title>Contactez le webmaster</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="JavaScript"><!-- Hide script from older browsers function verifSelection() {if (mail_form.champ1.value == "") { alert("Champs vide") return false } } // Fin de la fonction </script> </head> <body background="img_frame/metal_dark.jpg" text="FFFFFF"><br><br> <b><font size="4">Achat d'item </font></b><br><br> <form name="mail_form" method="post" action="<?=$PHP_SELF?>" onSubmit="return verifSelection()"> <div align="center"></div> <p align="center"> <?php if ($message_remerciement) { echo("<font face=Verdana size=2>"); echo(stripslashes($message_remerciement)); echo("</p></body></html>"); exit(); } ?> <table width="650" border="0" align="center"> <p align="center"> </p><tr> <td><font face="Verdana" size="2"><div style="text-align: right">Nom du champ :</div></font></td> <td><input name="champ1" type="text"></td> </tr><tr> <td valign="top"><font face="Verdana" size="2"><div style="text-align: right"><input type="checkbox" name="formDoor[]" value="10001" /></div></font></td> <td>description du produit</td> </tr> <tr> <td valign="top"><font face="Verdana" size="2"><div style="text-align: right"><input type="checkbox" name="formDoor[]" value="10002" /></div></font></td> <td>description du produit</td> </tr> <tr> <td valign="top"><font face="Verdana" size="2"><div style="text-align: right"><input type="checkbox" name="formDoor[]" value="10003" /></div></font></td> <td>description du produit</td> </tr> <tr> <td valign="top"><font face="Verdana" size="2"><div style="text-align: right"><input type="checkbox" name="formDoor[]" value="10004" /></div></font></td> <td>description du produit</td> </tr> <tr> <td valign="top"><font face="Verdana" size="2"><div style="text-align: right"><input type="checkbox" name="formDoor[]" value="10005" /></div></font></td> <td>description du produit</td> </tr><tr> <td valign="top"><font face="Verdana" size="2"><div style="text-align: right">Commantaire (au besoin) :</div></font></td> <td><textarea name="zone_texte" cols="50" rows="10"></textarea></td> </tr><tr> <td valign="top"> <input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="2"> <input name="nbre_zones_texte" type="hidden" value="1"> <input name="titre_champ1" type="hidden" value="nom du 1er champ"><input type="hidden" name="formDoor[]" value="10001" /><input type="hidden" name="formDoor[]" value="10002" /><input type="hidden" name="formDoor[]" value="10003" /><input type="hidden" name="formDoor[]" value="10004" /><input type="hidden" name="formDoor[]" value="10005" /><input name="titre_zone" type="hidden" value="commantaires"></td> <td><div align="center"> <input type="reset" name="Reset" value="Effacer"> <input type="submit" name="envoi" value="Envoyer"> </div></td> </tr> </table> <div align="center"></div> </form> </body> </html>
Pouvez vous stp m'aider à faire en sorte que je puisse voir ce que les gens coche :)

Re: Besoin d'aide pour récupérer CheckBox

Posté : 11 oct. 2010, 21:47
par Ryle
Lorsque tu as plusieurs input avec le même nom et que tu ajoutes des crochets à celui-ci, php va récupérer un tableau de valeurs contenant les value de chacune des cases cochées.

Ce code te permet de récupérer ce tableau et devrait donc t'afficher ces valeurs à l'écran.
$aDoor = $_POST['formDoor']; // récupère le tableau des cases à cocher
  if(empty($aDoor)) // si ce tableau est vide
  {
    echo("You didn't select any buildings."); // affiche qu'il n'y a pas de valeur sélectionné
  } 
  else
  {
    $N = count($aDoor); // compte le nombre de cases cochées

    echo("You selected $N door(s): ");
    for($i=0; $i < $N; $i++) // pour chaque case cochée
    {
      echo($aDoor[$i] . " "); // affiche la valeur 
    }
  }
Pour ne pas afficher les valeurs mais ajouter celles-ci dans ton mail, il te faut remplacer le echo par une variable dans laquelle tu stockeras tes valeurs. Il te suffira ensuite d'inclure cette valeur au corps de ton mail :)

Re: Besoin d'aide pour récupérer CheckBox

Posté : 12 oct. 2010, 03:04
par anadroow
Merci de l'explication mais dis moi... à quel endroit je dois mettre ce bout de code car.. je ne sais pas trop !!??

Re: Besoin d'aide pour récupérer CheckBox

Posté : 12 oct. 2010, 21:39
par Ryle
Tu peux le laisser où il se trouve, je me suis contenté de commenter ton code pour qu'il te soit plus clair :)

En fait, la fonction mail() te permet d'envoyer un mail au destinataire spécifié, avec l'objet et le corps du message que tu lui passes en paramètre. Ce qu'il te faut faire c'est donc passer dans l'argument du corps du mail, le texte que tu veux y faire figurer.

Actuellement le corps du message (qui n'est rien d'autre qu'une chaine de caractères) tu le stockes dans ta variable $sortie. Cette variable contient les chaines contenues dans $partie_entete, $partie_champs_texte, $partie_zone_email, $partie_zone_texte et $fin. Il te suffit donc de compléter l'une de ces variables ou en ajouter une nouvelle qui contiendra les valeurs de tes cases à cocher :)
$partie_case_a_cocher = "";
for($i=0; $i < $N; $i++) // pour chaque case cochée
    {
      $partie_case_a_cocher .= $aDoor[$i] . " "; // ajoute la valeur de la case dans la chaine $partie_case_a_cocher  
    }

Re: Besoin d'aide pour récupérer CheckBox

Posté : 13 oct. 2010, 00:05
par anadroow
Merci beaucoup pour tes explications qui sont très claire ! je n'y connais pratiquement rien en PHP mais je suis sur que tes explications me seront très utile :)

Autre petite chose.... surement très simple car je me souviens avoir déja vue cela à quelque part mais j'ai perdu la page...

Voilla j'explique :

J'aimerais pouvoir à partir d'un simple INPUT avec un bouton d'envoie pouvoir me rendre à la page du même nom cité dans la case INPUT.

voici un exemple >>>

INPUT >> [ page_1 ] [ GO ] >> envoie à la page qui se nomme "page_1.php"

?? ça se fais toujours ?? :D