recuperation des donnees d'un formulaire via commande mail

Petit nouveau ! | 3 Messages

20 juin 2005, 10:34

Bonjour à toutes et à tous

Je viens de débuter en php, d'ailleur le petit problème ce situe dans mon premier script.

Dans l'ensemble il fonctionne, mais certains détails que je ve voir apparaitre sur le mail n'apparaissent pas

Je vais vous donnez les scripts

Code : Tout sélectionner

<form name="form1" method="post" action="verification.php"> <p>Votre nom <input name="nom" type="text" id="nom"> </p> <p>Votre prenom <input name="prenom" type="text" id="prenom"> </p> <p>Votre email <input name="mail" type="text" id="mail"> </p> <p>Vos commentaires <textarea name="commentaire" id="commentaire"></textarea> </p> <p> <input type="submit" name="Submit" value="Envoyer"> <input type="reset" name="Submit" value="retablir"> </p> </form>
<?php 
$sujet ="Avis des visiteurs";
$message = $_POST['nom'] ."\n";
$message = $_POST['prenom'] ."\n";
$message = $_POST['commentaire'] ."\n";
$expediteur="[email protected]";
$entete = $_POST['mail'] ."\n";
mail($expediteur,$sujet,$message,$entete);
echo ("le mail est envoyé merci");
?>
En fait tout fonctionne quasiment comme je veux, le mail arrive bien à destination ce qui est une bonne chose :D

Par contre je veux récuperer l'email de l'envoyeur, dans la partie expediteur de mon client mail, elle arrive bien mais dans le texte du courrier en lien hypertexte

Je recois les commentaires, mais pas le nom, ni le prénom

Je pense que le problème viens de la concatenation des données nom, prenom et commentaire, hélas javoue que j'ai pas très bien compris comment bien concatener mes éléments

En fait ce formulaire n'est qu'un essaie pour me permettre de bien comprendre le fonctionnement de la récupération des données via un formulaire

Pour le formulaire que je veux créer pour mon site, je veux ajouter une liste déroulante avec 8 choix, et la fatidique phrase "avez vous aimez ce site" avec pour réponses 2 boutons radio oui et non

Pourriez vous m'expliquez comment je dois effectuer la récupération de ces 2 éléments de formulaire

Merci d'avance pour ceux qui se pencheront sur mon problème de newbies, une foi résolu je pourrais continuer ma progression dans ce langage génial qu'est le php, pour pouvoir donner un gros plus à mon site et à mes connaissances personnels

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

20 juin 2005, 10:47

<?php 
$sujet ="Avis des visiteurs";
$message = $_POST['nom'] ."\n";
$message = $_POST['prenom'] ."\n";
$message = $_POST['commentaire'] ."\n";
$expediteur="[email protected]";
$entete = $_POST['mail'] ."\n";
mail($expediteur,$sujet,$message,$entete);
echo ("le mail est envoyé merci");
?>
Comme tu l'as deviné, c'est un problème de concaténation

Dans ton script, tu ne fait que écraser ce que tu as mis dans message pour y mettre autre chose en utilisant =

le caractère de concaténation PHP est $str .= $str2, ce qui equivaut à dire $str = $str.$str2, ou encore "concatene $str2 à la fin de $str"

Donc ton script corrigé est :
<?php 
$sujet ="Avis des visiteurs";
$message = $_POST['nom'] ."\n";
$message .= $_POST['prenom'] ."\n";
$message .= $_POST['commentaire'] ."\n";
$expediteur="[email protected]";
$entete = $_POST['mail'] ."\n";
mail($expediteur,$sujet,$message,$entete);
echo ("le mail est envoyé merci");
?>
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 3 Messages

20 juin 2005, 17:22

Merci Zeus pour ton aide :D

je vais abuser mais j'aurai besoin d'aide pour l'erreur au niveau du paramètre entète qui est sensé me marquer l'adresse du visiteur qui remplit ce formulaire

l'adresse au lieu d'être marquée à expéditeur dans mon client mail, ce retrouve dans la réponse

J'ai regardé le tuto sur la fonction mail mais je n'est pas bien compris comment l'appliquer

Merci d'avance :D

Eléphant du PHP | 55 Messages

20 juin 2005, 17:30

Salut :wink: !

Essaye de mette la ligne concernant l'expéditeur avant la concaténation du message, comme ceci :
<?php
$sujet ="Avis des visiteurs";
$expediteur="[email protected]";
$message = $_POST['nom'] ."\n";
$message .= $_POST['prenom'] ."\n";
$message .= $_POST['commentaire'] ."\n";
$entete = $_POST['mail'] ."\n";
mail($expediteur,$sujet,$message,$entete);
echo ("le mail est envoyé merci");
?>
Pour recevoir le mail comme si il venait de la personne qui te contacte, essaye ceci :
<?php
$sujet ="Avis des visiteurs";
$expediteur=$_POST['mail'] ;
$message = $_POST['nom'] ."\n";
$message .= $_POST['prenom'] ."\n";
$message .= $_POST['commentaire'] ."\n";
$entete = $_POST['mail'] ."\n";
mail($expediteur,$sujet,$message,$entete);
echo ("le mail est envoyé merci");
?>
Ciao :wink: .

Petit nouveau ! | 3 Messages

20 juin 2005, 18:21

Merci pour ta réponse Bobulum, mais le code que tu m'as donné n'a pas eu l'effet que ce désirais, du coups j'ai regarder le tuto sur la fonction mail() de nouveau et j'ai trouvé la solution

voici le code
<?php 
$sujet ="Avis des visiteurs";
$message = $_POST['nom'] ."\n";
$message .= $_POST['prenom'] ."\n";
$message .= $_POST['commentaire'] ."\n";
$expediteur="[email protected]";
$entete = $_POST['mail'] ."\n";
mail($expediteur,$sujet,$message,"From: $mail \nReply-To:$mail \n");
echo ("le mail est envoyé merci");
?>
Merci de vous êtres attardés sur mon problème, en se qui concerne la récupération des boutons radios et des listes je ferai des essaies et je verrai bien ce que ça va donner