[RESOLU] aide sur formulaire php avec bouton radio

Eléphanteau du PHP | 13 Messages

12 sept. 2012, 09:18

bonjour a tous
Je suis en réalisation d'un formulaire de sondage pour le site d'un ami, et je suis perdu et cherche depuis lundi.
dans le code ci dessous j'arrive a récupérer par email le message texte, mais sans l'intitulé du champ, et pire encore aucune réponse des selection des boutons radio, ainsi que Nom, Email, etc ....

Code : Tout sélectionner

<?php if ($_POST['envoi'] == 'ok') { $destinataire = '[email protected],[email protected]; $sujet = 'Nouvel avis site blabla: '.stripslashes($_POST['sujet']); $message = stripslashes($_POST['message']); $headers .="From: site blabla>\n"; $headers .= "Reply-To: ".$mail."\n"; $headers .= "Content-Type: text/plain; charset=\"iso-8859-1\""; if(mail($destinataire,$sujet,$message,$headers)) header("Location:merci.html"); } else { ?> <!-- Javascript qui permet la vérification de la saisie --> <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> function verif() { if (veriffacilite() != true) { return false; } if (verifprix() != true) { return false; } if (verifrecherche() != true) { return false; } if (verifcontact() != true) { return false; } return true; } function veriffacilite() { var facilite = document.test.facilite; var nb = facilite.length; for (i=0;i<nb;i++) { if (facilite[i].checked) { return true; } } alert('Merci de repondre à la question : \nQuelle est la facilité d\'utilisation du site ?'); return false; } function verifprix() { var prix = document.test.prix; var nb = prix.length; for (i=0;i<nb;i++) { if (prix[i].checked) { return true; } } alert('Merci de repondre à la question : \nQue pensez vous de nos prix ?'); return false; } function verifrecherche() { var recherche = document.test.recherche; var nb = recherche.length; for (i=0;i<nb;i++) { if (recherche[i].checked) { return true; } } alert('Merci de repondre à la question : \nAvez vous trouvez ce que vous cherchiez ?'); return false; } function verifcontact() { var contact = document.test.contact; var nb = contact.length; for (i=0;i<nb;i++) { if (contact[i].checked) { if (document.test.contact[i].value == "oui") { if (document.test.adrmail.value == '' && document.test.telephone.value == '') { document.test.adrmail.style.backgroundColor='#CCFF33'; document.test.telephone.style.backgroundColor='#CCFF33'; alert('Souhaitant être contacté, \nMerci de renseigner votre adresse mail ou votre téléphone !'); document.test.adrmail.focus(); return false; } } return true; } } alert('Merci de repondre à la question : \nSouhaitez vous être contacté ?'); return false; } </script> <!-- Fin du Javascript --> <!-- Affichage du formulaire, il te faut faire la mise en forme --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Votre avis nous interesses</title> <style type="text/css"> <!-- body { background :C3CDD2;} .content { padding:5px; background-color:#C3CDD2; /* line-height:0px;*/ } .content p {margin-left:35%;} .content h3 {text-align:center;} /*.content input { margin-left:1%;}*/ --> </style> </head> <div class="content"> <h3>Merci de nous donner votre avis afin que notre site corresponde a vos attentes</h3> <FORM NAME="test" onSubmit="return verif()" action="<?=$_SERVER['PHP_SELF']?>" METHOD="post"> <p>Votre nom : &nbsp;&nbsp;&nbsp;<input name="adr" value="">&nbsp;Optionnel</p> <p>Merci de donner une adresse mail ou un numéro </p><p>de téléphone si vous souhaitez être contacté.</p> <p>adresse mail : &nbsp;<input name="adrmail" value=""></p> <p>Téléphone : &nbsp;&nbsp;&nbsp; <input name="telephone" value=""></p> <p>Comment trouvez vous la facilité d'utilisation du site ?</p> <p><label><input type="radio" name="facilite" value="excellent"> excellent</label></p> <p><label><input type="radio" name="facilite" value="bien"> bien</label></p> <p><label><input type="radio" name="facilite" value="trop compliqué"> trop compliqué</label></p> <p>Que pensez vous de nos tarifs ?</p> <p><label><input type="radio" name="prix" value="excellent"> excellent</label></p> <p><label><input type="radio" name="prix" value="dans la moyenne"> dans la moyenne</label></p> <p><label><input type="radio" name="prix" value="bien"> bien</label></p> <p>Avez vous trouvez ce que vous cherchiez ?</p> <p><label><input type="radio" name="recherche" value="oui"> oui</label></p> <p><label><input type="radio" name="recherche" value="non"> non</label></p> <p>Souhaitez vous être contacté ?</p> <p><label><input type="radio" name="contact" value="oui"> oui</label></p> <p><label><input type="radio" name="contact" value="non"> non</label></p> <p><label><strong>Message:</strong></label></p> <p><textarea cols="70" rows="4" name="message" id="message"></textarea></p> <!-- Le input hidden ci-dessous permet de savoir au chargement de la page si le formulaire est chargé par le navigateur ou si il est envoyé par l'internaute --> <p><input type="hidden" name="envoi" value="ok"></p> <p><INPUT TYPE="submit" value="Soumettre" name="ok"></p> </FORM> </div> <!-- Fin du FORM --> </body> <?php } // Fin de la condition IF d'affichage du formulaire. ?>
]

Merci d'avance pour votre aide à tous

ViPHP
xTG
ViPHP | 7331 Messages

12 sept. 2012, 09:51

En effet, tu ne passes dans le contenu de l'email que la variable $message qui correspond à ton texte.
Il faut ajouter les autres dans le corps de l'email.
Tu peux faire cela en concaténant les variables.

Exemple :
$var1 = 'Ceci est un ';
$var2 = 'test';
$message = $var1 . $var2;
echo $message; // Ceci est un test

Eléphanteau du PHP | 13 Messages

12 sept. 2012, 10:04

Bonjour XTG

merci de ta réponse, mais je patauge.

Peut tu être plus clair ?

Encore merci

ViPHP
xTG
ViPHP | 7331 Messages

12 sept. 2012, 10:36

Si tu patauges c'est peut être que tu ne sais pas récupérer les informations provenant d'un formulaire ?
Je te recommande cette petite lecture sur le sujet : http://phpdebutant.org/article56.php
N'hésites pas à revenir nous poser des questions sur ce que tu ne comprends pas. :)

Eléphanteau du PHP | 13 Messages

12 sept. 2012, 10:45

re bonjour
J'ai déjà lu cet artcle et bien d'autre depsui lundi
d'habitude j'aime bien me débrouiller seul, mais cette fois sans une aide extérieure 8-|
A bientot

ViPHP
xTG
ViPHP | 7331 Messages

12 sept. 2012, 11:11

Bon alors venons en au fait.
C'est quoi qui te pose problème ? ^^

Pour moi tu as tous les éléments, tu sais récupérer les valeurs du formulaire et je t'ai donné un exemple pour concaténer des variables entre elles.

Eléphanteau du PHP | 13 Messages

12 sept. 2012, 14:17

re

Je pense avoir un bug dans mon fichier, mais je ne vois pas lequel.

voila le probleme.

Merci

ViPHP
xTG
ViPHP | 7331 Messages

12 sept. 2012, 15:36

Montres nous donc les modifications que tu as apportées alors. :)

Eléphanteau du PHP | 13 Messages

12 sept. 2012, 16:13

Comment montrer des modifications que je ne comprends pas.

je pensais être sur un forum pour aider les débutants, par sur un forum, ou l'on ce moque des débutants ?

ViPHP
xTG
ViPHP | 7331 Messages

12 sept. 2012, 16:56

Ce n'est pas avec une réponse de ce genre que tu vas en avoir de l'aide...
C'est quoi qui te gêne dans ma réponse ? Le smiley ? Auquel cas tu peux le retirer et relire ma réponse.
Saches que je n'ai aucune boule de cristal et que donc sans code je ne peux te fournir la moindre réponse.

Si tu n'es pas capable de nous montrer les modifications apportées, tu es au moins capable de nous montrer la totalité du code en question non ?

Eléphanteau du PHP | 13 Messages

12 sept. 2012, 17:00

ben, mon code est dèja en haut de ce post, ce qu'il y a c'est que je ne sais pas ou mettre :

Code : Tout sélectionner

$var1 = 'Ceci est un '; $var2 = 'test'; $message = $var1 . $var2; echo $message; // Ceci est un test
par rapport a mon code

merci

ViPHP
xTG
ViPHP | 7331 Messages

12 sept. 2012, 19:59

Ce code en tant que tel n'a rien à faire dans ton propre code.
Ce n'est qu'un exemple de la technique que tu dois utiliser, à savoir la concaténation des variables contenant les informations du formulaire.

Comme je te l'ai dit (et qu'il est montré dans le cours que je t'ai linké) il faut d'abord récupérer les variables du formulaire, puis les concaténer (comme dans mon exemple de code).

Eléphanteau du PHP | 13 Messages

13 sept. 2012, 14:57

bonjour

bon j'ai fais encore des recherches et essais voila le résultat :
mon code :

Code : Tout sélectionner

<?php if ($_POST['envoi'] == 'ok') { $destinataire = '[email protected]'; $sujet = 'Nouvel avis site boutique: '.stripslashes($_POST['sujet']); $texte = "Message complémentaire : ".($_POST['texte']); $headers .="From: sondage boutique<[email protected]>\n"; $headers .= "Reply-To: ".$mail."\n"; $headers .= "Content-Type: text/plain; charset=\"iso-8859-1\""; $adr ="Votre nom : ".($_POST['adr']); $adrmail = "Email : ".($_POST['adrmail']); $telephone = "Téléphone : ".($_POST['telephone']); $facilite = "Facilité d'utilisation du site : ".($_POST['facilite']); $prix = "Niveaux de prix : ".($_POST['prix']); $recherche = "Avez-vous trouvé ce que vous cherchiez ? : ".($_POST['recherche']); $contact = "Désirez-vous être contacté : ".($_POST['contact']); echo $adr,$adrmail,$telephone,$facilite,$prix,$recherche,$contact,$texte; // Ceci est un test if(mail($destinataire,$sujet,$texte,$headers)) header("Location:merci.html"); } else { ?> <!-- Javascript qui permet la vérification de la saisie --> <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> function verif() { if (veriffacilite() != true) { return false; } if (verifprix() != true) { return false; } if (verifrecherche() != true) { return false; } if (verifcontact() != true) { return false; } return true; } function veriffacilite() { var facilite = document.test.facilite; var nb = facilite.length; for (i=0;i<nb;i++) { if (facilite[i].checked) { return true; } } alert('Merci de repondre à la question : \nQuelle est la facilité d\'utilisation du site ?'); return false; } function verifprix() { var prix = document.test.prix; var nb = prix.length; for (i=0;i<nb;i++) { if (prix[i].checked) { return true; } } alert('Merci de repondre à la question : \nQue pensez vous de nos prix ?'); return false; } function verifrecherche() { var recherche = document.test.recherche; var nb = recherche.length; for (i=0;i<nb;i++) { if (recherche[i].checked) { return true; } } alert('Merci de repondre à la question : \nAvez vous trouvez ce que vous cherchiez ?'); return false; } function verifcontact() { var contact = document.test.contact; var nb = contact.length; for (i=0;i<nb;i++) { if (contact[i].checked) { if (document.test.contact[i].value == "oui") { if (document.test.adrmail.value == '' && document.test.telephone.value == '') { document.test.adrmail.style.backgroundColor='#CCFF33'; document.test.telephone.style.backgroundColor='#CCFF33'; alert('Souhaitant être contacté, \nMerci de renseigner votre adresse mail ou votre téléphone !'); document.test.adrmail.focus(); return false; } } return true; } } alert('Merci de repondre à la question : \nSouhaitez vous être contacté ?'); return false; } </script> <!-- Fin du Javascript --> <!-- Affichage du formulaire, il te faut faire la mise en forme --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Votre avis nous interesses</title> <style type="text/css"> <!-- body { background :C3CDD2;} .content { padding:5px; background-color:#C3CDD2; /* line-height:0px;*/ } .content p {margin-left:35%;} .content h3 {text-align:center;} /*.content input { margin-left:1%;}*/ --> </style> </head> <div class="content"> <h3>Merci de nous donner votre avis afin que notre site corresponde a vos attentes</h3> <FORM NAME="test" onSubmit="return verif()" action="<?=$_SERVER['PHP_SELF']?>" METHOD="POST"> <p>Votre nom : &nbsp;&nbsp;&nbsp;<input name="adr" value="">&nbsp;Optionnel</p> <p>Merci de donner une adresse mail ou un numéro </p><p>de téléphone si vous souhaitez être contacté.</p> <p>adresse mail : &nbsp;<input name="adrmail" value=""></p> <p>Téléphone : &nbsp;&nbsp;&nbsp; <input name="telephone" value=""></p> <p>Comment trouvez vous la facilité d'utilisation du site ?</p> <p><label><input type="radio" name="facilite" value="excellent"> excellent</label></p> <p><label><input type="radio" name="facilite" value="bien"> bien</label></p> <p><label><input type="radio" name="facilite" value="trop compliqué"> trop compliqué</label></p> <p>Que pensez vous de nos tarifs ?</p> <p><label><input type="radio" name="prix" value="excellent"> excellent</label></p> <p><label><input type="radio" name="prix" value="dans la moyenne"> dans la moyenne</label></p> <p><label><input type="radio" name="prix" value="bien"> bien</label></p> <p>Avez vous trouvez ce que vous cherchiez ?</p> <p><label><input type="radio" name="recherche" value="oui"> oui</label></p> <p><label><input type="radio" name="recherche" value="non"> non</label></p> <p>Souhaitez vous être contacté ?</p> <p><label><input type="radio" name="contact" value="oui"> oui</label></p> <p><label><input type="radio" name="contact" value="non"> non</label></p> <p><label><strong>Message complémentaire:</strong></label></p> <p><textarea cols="70" rows="4" name="texte"></textarea></p> <!-- Le input hidden ci-dessous permet de savoir au chargement de la page si le formulaire est chargé par le navigateur ou si il est envoyé par l'internaute --> <p><input type="hidden" name="envoi" value="ok"></p> <p><INPUT TYPE="submit" value="Soumettre" name="ok"></p> </FORM> </div> <!-- Fin du FORM --> </body> <?php } // Fin de la condition IF d'affichage du formulaire. ?>
Avec le mode echo en marche voici le résultat sur la page du navigateur:
Votre nom : durandEmail : [email protected]éléphone : 05 46 85 95 87Facilité d'utilisation du site : bienNiveaux de prix : excellentAvez-vous trouvé ce que vous cherchiez ? : nonDésirez-vous être contacté : ouiMessage complémentaire : bonjours !
Warning: Cannot modify header information - headers already sent by (output started at /homepages/6/00000000/htdocs/sondage.php:19) in /homepages/6/0000000/htdocs/sondage.php on line 32

Mais je ne reçois par email que le texte du message pas le n° telephone et les choix des boutons radio

merci encore

ViPHP
xTG
ViPHP | 7331 Messages

13 sept. 2012, 15:30

Belle avancée du coup, il ne reste plus qu'à transmettre ces informations à la fonction mail. :)
mail($destinataire,$sujet,$texte,$headers)
La variable $texte utilisée ici est le contenu de l'email, c'est donc elle qui doit contenir les informations que tu affiches avec echo.
Donc il te restes à rajouter ces variables dans la variable $texte (concaténation toujours) et tu recevras leurs valeurs dans le mail.

Eléphanteau du PHP | 13 Messages

13 sept. 2012, 15:37

merci :)
Mais c'est bien là le problème, car je n'arrive pas a comprendre la suite, car pourtant j'ai bien cette ligne :
if(mail($destinataire,$sujet,$texte,$headers))
et même avec ton exemple de concaténation, je n'y arrive pas ! :?
merci