IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Un formulaire qui ne part pas


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Par défaut Un formulaire qui ne part pas
    Bonjour bonjour…

    je fais un petit formulaire de contact et j’ai du mal.
    Beaucoup de mal.

    Le formulaire HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <form id='contact' method='post'>
    		<h2>Envoyer un message...</h2>
    <form id="contact" method="post">
    <ul>
    <li>
    <label for="senderName">Quel est votre nom ?</label>
    <input type="text" name="form_name" id="form_name" type="text" required='required' maxlength='40' pattern="^.+$" />
    </li>
    <li>
    <label for='senderEmail'>Quelle adresse courriel ?</label>
    <input name="form_email" id="form_email" type="email" placeholder="Votre email" required='required' maxlength='50' pattern="^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$" />
    </li>
    <label for="telephone">Votre téléphone</label>
    <input type="text" name="form_tel" id="telephone" placeholder="Votre n° de téléphone." required="required" maxlength="14" pattern="^[-+() 0-9x]+$" />
    </li>
    <li>
    <label for='message'>Quel est votre message ?</label>
    <textarea name="msg_text" id="msg_text" placeholder='Ici, votre message.' required='required' cols='80' rows='10' maxlength='10000'></textarea>
    </li>
    </ul>
    <input type="submit" value="ENVOI" name="submit" class="button">
    </form>
    <p class="success" style="display:none">Votre message est bien parti.</p>
     
    <script>
    $(function() {
    $("#contact .button").click(function() { 
    	var name = $("#form_name").val();
    	var email = $("#form_email").val();
    	var tel = $("#form_tel").val();
    	var text = $("#msg_text").val();
    	var dataString = 'name='+ name + '&email=' + email + '&tel=' + tel + '&text=' + text;
    	$.ajax({ type: "POST", url: "email.php", data: dataString, 
    	success: function(){ $('.success').fadeIn(1000); }}); 
    	return false;  
    		}); 
    	});
    </script>
    Voici le fichier du traitement (email.php) qui me pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php if($_POST)
    {
    $to = 'detoussay@monsitel.fr';
    $subject = 'C’est à quel sujet ?';
    $name = 'Nom : '.$name'\n';
    $email =  'Mail : '.$email.'\n';
    $tel =  'Tel : '.$tel.'\n';
    $text = 'Message : '.$text.'\n';
    $headers = 'From: <a href="mailto:detoussay@monsitel.fr">detoussay@monsitel.fr</a>' . "\r\n" .
         'Reply-To: <a href="mailto:detoussay@monsitel.fr">detoussay@monsitel.fr</a>' . "\r\n" .
         'X-Mailer: PHP/' . phpversion();
     
    mail($to, $subject, $name, $email, $tel, $text, $headers); } ?>
    Je suis dessus depuis ce matin et je n’arrive pas à voir où est l’erreur.
    Pouvez-vous m’aider ?
    Si oui, merci d’avance.

    Edition : j’avais oublié de referme le crochet } à la fin et j’ai ajouté le formulaire HTML et son script JS pour l’Ajax.
    Là je pense que tout y est.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut
    Tu es sur de ton headers pour l'envoi de ton mail, c'est pas mieux ainsi


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $headers ='From: "nom"<adresse@fai.fr>'."\n";
         $headers .='Reply-To: adresse_de_reponse@fai.fr'."\n";

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Par défaut
    Bonjour
    J’ai corrigé mais je ne sais pas car il ne part pas.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 26
    Par défaut
    tu pourrais donner l'errur que renvoie firebug quand tu soumets le formulaire??

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Par défaut
    Non. Désolé.
    Il ne me donne pas d’erreur.

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 26
    Par défaut
    tout bete. t'as oublié un point quelque part (enfin j crois )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $name = 'Nom : '.$name.'\n';

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Par défaut
    Tu as raison, mais ça ne change toujours rien.

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Tu es sûr que la fonction mail() est activée par ton hébergeur ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 26
    Par défaut
    ok j'ai recupéré ton code. pour faire claire voici mes conclusions:
    - créer tes variables name, email, tel etc...
    - tu corriges ta fonction mail. elle prend pas tous les parametres que tu lui as passé. don tu dois refaire ton headers pour les inclure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mail($to, $subject, $msg_text, $headers); }
    là ca devrait être bon.
    par contre je sais pas si les envois de mail passent. j'ai pas de serveur mail installé en local.

  10. #10
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Par défaut
    Bonsoir Monsieur Didier.
    Oui c’est bien activé.
    Je l’ai testé avec un formulaire très simple : je reçois bien les emails des tests.

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Par défaut
    Oups… désolé Nelson.
    Je n’avais pas vu ton post.


    Je ne suis certain de bien comprendre ta réponse.
    Il y a d’un côté le formulaire et le script JS pour le traitement Ajax,
    de l’autre le processeur de mail.

    Tu dis qu’il y a des erreurs aux 2 endroits ?
    Je ne crois pas.
    Je l’ai testé en n’envoyant que le message et ça marche.

    C’est quand je rajoute tous les autres champs que ça ne passe plus.

  12. #12
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut
    Peut-être car tu ajoutes trop de champs à ta fonction mail

    http://php.net/manual/fr/function.mail.php



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php if($_POST)
    {
    $to = 'detoussay@monsitel.fr';
    $subject = 'C’est à quel sujet ?';
    $message = 'Nom : '.$name'\n';
    $message .=  'Mail : '.$email.'\n';
    $message .=  'Tel : '.$tel.'\n';
    $message .= 'Message : '.$text.'\n';
     
    $headers ='From: "detoussay"<detoussay@monsitel.fr>'."\n";
    $headers .='Reply-To: detoussay@monsitel.fr'."\n";
     
     
    mail($to, $subject, $message , $headers); } ?>

  13. #13
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut
    Je viens d'essayer ton script et ça marche super... J'ai juste rajouté ça dans ton if($_POST)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php 
     
    if($_POST) {
     
    $name = $_POST['form_name'];
    $email = $_POST['form_email'];
    $tel = $_POST['form_tel'];
    $to = 'detoussay@monsitel.fr';
    $subject = 'C’est à quel sujet ?';
    $message  = 'Nom : '.$name.'\n';
    $message .=  'Mail : '.$email.'\n';
    $message .=  'Tel : '.$tel.'\n';
     
    $headers ='From: "detoussay"<detoussay@monsitel.fr>'."\n";
    $headers .='Reply-To: detoussay@monsitel.fr'."\n";
     
     
    if(mail($to, $subject, $message , $headers)) {
    echo 'mail envoyé';
    }
     } ?>

  14. #14
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Par défaut
    Dis donc Damien, tu t’es bien débrouillé sur ce coup.

    Sauf que :

    1/ Pourquoi rajoutes-tu la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(mail($to, $subject, $message , $headers)) {
    echo 'mail envoyé';
    }
    c’est en principe traité par mon bout de code en Ajax ?
    Sauf que j’ai un doute sur ce code aussi, vu que même quand les messages ne partaient pas, Ajax me renvoyait un message comme comme quoi il étiat bien parti.

    2/ À ce propos d’ailleurs, quand le message n’a pu partir, c’est une alerte d’erreur proposant à l’émetteur de recommencer que je devrais mettre en place.

    3/ Donc, effectivement, le message part bien…
    sauf que je reçois ça :
    Nom :
    Mail :
    Tel
    C’est à dire qu’il ne récupère pas les valeurs.
    C’est curieux car du côté du processeur, ce que tu as fait me semble correct.
    Une idée ?

    EDITION : oups… un oubli :
    Un truc qui me vient à l’esprit seulement maintenant. Je n’ai pas pensé à vider le contenu des champs du formulaire après l’envoi. Quelle serait dans mon cas la meilleure méthode ?

  15. #15
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut
    1/ J'ai rajouté cette ligne pour les tests, tu n'es pas obligé de les garder mais si la fonction mail renvoie 1, ça veut dire que l'email est parti sinon ça part pas

    2/ Oui si l'email ne part pas, tu peux renvoyer un message d'erreur grâce au if de la première question

    3/ Je viens de voir ton code ajax, je pense que ça sera plutot ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $name = $_POST['name'];
    $email = $_POST['email'];
    $tel = $_POST['tel'];

    4/ Et pour vider les champs, dans ta fonction js, dans le success, tu vide les champs

  16. #16
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Par défaut
    Hello Damien
    merci, merci vraiment, pour le coup de main.
    Effectivement j’avais fait plein d’erreurs.
    Maintenant ça marche.

    J’ai juste mis "\n"; en fin de ligne pour disposer du retour à la ligne dans l’email.
    Et c’est bon.

    Bon maintenant, il me reste 2 trucs à régler :

    1- le vidage du formulaire.
    Je sais le vider avec ces codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="submit" value="ENVOI" name="submit" class="button" onclick="clearForm()">
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    function clearForm(){
            $('#contact')form.find("input").val('') ;
    mais là, il y 2 (sous-) problèmes :
    a/ ce n’est pas en Ajax donc ça lance un refresh de la page
    b/ s’il y a une erreur (qui n’est pas notifiée, c’est le 2e point) l’utilisateur se retrouve devant le formulaire vide.

    Mon code ne convient et je ne vois pas lequel mettre.

    2- c’est là l’autre difficulté que je rencontre (liée aussi à Ajax…)
    dans le cas d’un ÉCHEC il faudrait que le message arrive en Ajax (comme dans le RÉUSSITE),
    et je n’y arrive. Un indice ?

  17. #17
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Par défaut
    Regarde du côté de la doc technique du jquery (je crois que c'est cette librairie que tu utilises)

    donc et ça sera dans ta variable success que tu devrai mettre ta fonction clearform.

  18. #18
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Par défaut
    Okey Damien.
    Je crois que je vais pouvoir m’en débrouiller.
    Merci encore.

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/01/2007, 15h56
  2. [VB.NET]un formulaire qui ne veut pas se fermer
    Par josyde2006 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/08/2006, 09h29
  3. Réponses: 5
    Dernier message: 23/06/2006, 15h22
  4. formulaire qui n'envoie pas a la bonne page
    Par hansaplast dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 19/06/2006, 15h13
  5. Formulaires qui ne sont pas tous valider
    Par vins25 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 19/01/2006, 01h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo