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 :

Transmission incomplète des données d'un formulaire


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 78
    Par défaut Transmission incomplète des données d'un formulaire
    Bonjour à tous,

    J'étais déjà venu hier

    Voilà mon nouveau problème: quand je clique sur "envoyer" sur mon formulaire, je reçois bien l'email mais avec seulement l'affichage d'une de mes variables (ici 'message').

    La construction de mon script est pourtant, je crois, identique pour mes 4 variables...

    Voilà mon html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     <form method="post" action="script1.php">
    <p class="titre">Vos coordonnées</p>
    <p><label for="nom">Votre nom *</label><input class="textfield" type="text" name="nom" id="nom" title="Veuillez entrer votre nom" tabindex="1" /></p>   
    <p><label for="prenom">Votre prénom *</label><input class="textfield" type="text" name="prenom" id="prenom" value="" title="Veuillez entrer votre prénom" tabindex="2" /></p>  
    <p><label for="email">Votre e-mail *</label><input class="textfield" type="text" name="email" id="email" value="" title="Veuillez entrer votre e-mail" tabindex="3" />
    <p class="titre">Votre message</p>
    <p><label for="message">A vous la parole *</label><textarea name="message" cols="41" rows="4" id="message" tabindex="6" title="Veuillez entrez ici votre message"></textarea></p>
    <p id="envoyer"><input type="image" alt="Envoyer" src="images/submit.jpg" /><input type="hidden" name="action" value="envoyer" tabindex="7" /></p>
    </form>
    et mon script1.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
     
    $destinataire = 'mon@email';
    $titre= "Demande de points de vente";
     
    $message = "";
    $message = "nom: ".$_REQUEST['nom']."\n";
    $message = "prenom: ".$_REQUEST['prenom']."\n";
    $message = "email: ".$_REQUEST['email']."\n";
    $message = "message: ".$_REQUEST['message']."\n";
     
    if (mail($destinataire,$titre,$message)==true) {
    echo("<hr/>Les informations ont bien été transmises.");
    }
    ?>
    Auriez-vous une idée ?

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Par défaut
    Bah... A chaque fois, tu écrases ta variables $message.
    En PHP, la concaténation se fait avec le point.
    D'où :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $message = "";
    $message .= "nom: ".$_REQUEST['nom']."\n";
    $message .= "prenom: ".$_REQUEST['prenom']."\n";
    $message .= "email: ".$_REQUEST['email']."\n";
    $message .= "message: ".$_REQUEST['message']."\n";
    Et puisque ton formulaire passe par la méthode post, tu peux récuperer tes variables avec

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 78
    Par défaut
    Exact.... il me manquait le "."

    Une dernière chose, j'essaye maintenant de modifier l'expéditeur du mail.
    Je voudrais donc que l'expéditeur soit la personne qui me contacte, et pas mon email...

    J'ai rajouté, sans y croire vraiment la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $entete= "From: email: ".$_POST['email']."\n";
    Sans résultat

    Merci pour ton aide.

  4. #4
    Membre émérite
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Par défaut
    C'est à peu près cela, à quelques choses près...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $headers = 'From: '.$_POST['nom'].' <'.$_POST['mail'].'>'."\r\n";
    (à modifier selon le nom de tes champs)

    Et bien sûr que ça ne fonctionne pas, puisqu'il faut également passer les en-têtes à la fonction mail!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mail($destinataire,$titre,$message,$headers)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 78
    Par défaut
    A peu près cela

    Merci, ça fonctionne nickel !

    Bonne soirée !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 78
    Par défaut
    Bonjour à tous,

    Je continue l'apprentissage de mon formulaire avec php...

    Je me colle maintenant à la vérification des données.

    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
     
    <?php
    $destinataire = 'nom@domaine.fr';
    $titre= "Demande de points de vente";
    $headers = 'From: '.$_POST['email'].' <'.$_POST['email'].'>'."\r\n";
    $message = "";
    $message .= "nom: ".$_POST['nom']."\n";
    $message .= "prenom: ".$_POST['prenom']."\n";
    $message .= "email: ".$_POST['email']."\n";
    $message .= "message: ".$_POST['message']."\n";
     
    $_REQUEST['nom']= trim($_REQUEST['nom']);
    if (empty($_REQUEST['nom']))
    {
    die("Erreur: le champ nom n'a pas été rempli");
    exit();
    }
     
    if (mail($destinataire,$titre,$message,$headers)==true) {
    echo("<hr/>Les informations ont bien été transmises.");
    }
    ?>
    Le contrôle sur le champ 'nom' fonctionne. S'il est vide, on a bien le message d'erreur... mais sur une nouvelle page (contact.php). Si on a que des espaces à la place d'un texte, on ne passe pas le test.

    Ce que je souhaiterai faire, c'est d'ajouter ce commentaire à côté du champ 'non' sur ma page contact.htm

    Voici la fameuse ligne du champ 'nom' dans mon xhtml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <p><label for="nom">Votre nom *</label><input class="textfield" type="text" name="nom" id="nom" value="" title="Veuillez entrer votre nom" /></p>
    Savez-vous comment afficher "Erreur: le champ nom n'a pas été rempli" à côté du champ non?

    Merci pour vos réponses

Discussions similaires

  1. [16F628] Transmission et réception asynchrone des données
    Par selmani300 dans le forum Autres architectures
    Réponses: 0
    Dernier message: 04/05/2009, 00h24
  2. non sauvegarde des données à la fermeture d'un formulaire
    Par zanou666 dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/10/2007, 14h20
  3. Réponses: 2
    Dernier message: 19/01/2007, 07h00
  4. Réponses: 3
    Dernier message: 27/09/2006, 19h50
  5. Réponses: 29
    Dernier message: 01/07/2006, 09h23

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