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 :

Probleme de formulaire


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut Probleme de formulaire
    Bonjour à tous,

    Je viens vous voir aujourd'hui car, ayant fait des recherches dans les cours PHP sur le site (très bien faits d'ailleurs) j'ai toujours des problèmes (normal pour un débutant!)

    Je vous explique: je viens de mettre en ligne un petit site consacré à mes animaux... Je voulais y faire figurer un formulaire et recevoir les infos par mail via PHP...

    Dans mon code HTML, j'ai:

    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
    40
    41
    42
    43
    44
    <form action="send_email.php" method="post" enctype="multipart/form-data">
     
     
    		<fieldset id="civilite">
    			<legend>Civilité</legend>
    			<input type="radio" name="civilite" id="monsieur" value="monsieur"><label for="monsieur">M.</label>
    			<input type="radio" name="civilite" id="madame" value="madame"><label for="madame">Mme</label>
    			<input type="radio" name="civilite"id="mademoiselle" value="mademoiselle"><label for="mademoiselle">Mlle</label>
    		</fieldset>
     
    		<fieldset id="contact">
    			<legend>Contact</legend>
    			<p><label for="nom">Nom, Prénom / Pseudo :&nbsp </label><input type="text" name="nom" id="nom" size="95"maxlength="50"></p>
    		</fieldset>
     
    		<fieldset id="mail">
    			<legend>Mail</legend>
    			<p><label for="mail">Mail :&nbsp </label><input type="text" name="mail" id="mail" size="95"maxlength="50"></p>
    		</fieldset>
     
    		<fieldset id="animaux">
    			<legend>Reptiles maintenus</legend>
    			<p><input type="checkbox" name="reptile_1" value="Lezards" id="reptile_1"checked><label for="reptile_1" >Lezards (sauriens)</label>
    			   <input type="checkbox" name="reptile_2" value="Serpents" id="reptile_2"><label for="reptile_2" >Serpents (ophidiens)</label>
    			   <input type="checkbox" name="reptile_3" value="Arachnides" id="reptile_3"><label for="reptile_3" >Mygales / Scorpions (arachnides)</label></p>
    			<p><input type="checkbox" name="reptile_4" value="Tortues" id="reptile_4"><label for="reptile_4" >Tortues (chéloniens)</label>
    			   <input type="checkbox" name="reptile_5" value="Autre" id="reptile_5"><label for="reptile_5" >Autre : </label><input type="text" name="autre" id="autre" size="30"maxlength="20"></p>
    		</fieldset>
     
    		<fieldset id="message">
    			<legend>Message</legend>
    			<p><label for="message">Votre message</label></p>
    			<p><textarea cols="71" rows="8" name="message" id="message">Votre texte içi</textarea></p>	
    		</fieldset>
     
    		<fieldset id="validation">
    			<legend>Validation/RAZ</legend>
    			<input type="hidden" name="valid" value="1">
     
    			<input type="submit" name="valider" id="valider" value="Envoyer">
    			<input type="reset" name="raz" id="raz" value="Effacer">
    		</fieldset>
     
    		</form>
    Le tout visible içi : http://www.reptipix.fr/contact/html/me_contacter.html

    Et mon code PHP (qui vraiment pas être bon compte tenu du code 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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    if (get_magic_quotes_gpc())
    {
        $civilite = stripslashes($_POST['civilite']); 
        $contact = stripslashes($_POST['contact']); 
        $mail = stripslashes($_POST['mail']); 
        $animaux = stripslashes($_POST['animaux']); 
        $message = stripslashes($_POST['message']); 
    } 
    else
    {  
        $civilite = $_POST['civilite'];
        $contact = $_POST['contact']; 
        $mail = $_POST['mail']; 
        $animaux = $_POST['animaux']; 
        $message = $_POST['message']; 
    }
    if (empty($civilite) 
        || empty($contact) 
        || empty($mail) 
        || empty($animaux) 
        || empty($message))
    {  
        $alert = 'Tous les champs ne sont pas remplis';
    } 
    else
    {  
     
    }   
     
     
    if (!empty($alert))
    {
        echo $alert;
    }
     
     
     
    $to = 'xxxxxxx@xxxxxxxx.fr';
     
     
    $msg  = 'Bonjour,'."\r\n\r\n";
    $msg .= 'Ce mail a été envoyé depuis reptipix.fr par '.$civilite.' '.$contact."\r\n\r\n";
    $msg .= 'Voici le message qui vous est adressé :'."\r\n";
    $msg .= '***************************'."\r\n";
    $msg .= $message."\r\n";
    $msg .= '***************************'."\r\n";
     
     
    $headers = 'From: '.$civilite.' <'.$contact.'>'."\r\n\r\n";
     
     
    mail($to, $sujet, $msg, $headers);
    Je reçoi bien un mail mais quasiment vide a chaque vois...

    Si vous pouvez m'éclairer...

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Par défaut
    Donc il n'y a rien dans le mail ?

    Au fait:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
     
    if (!empty($alert))
    {
        echo $alert;
    }

    Ceci exécutera le reste du script même si le $alert n'est pas vide.
    Il faut donc :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    if (!empty($alert))
    {
        die($alert);
    }

  3. #3
    Membre éclairé Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Par défaut
    Salut.

    Je vois deux problèmes dans ton script. Tout d'abord ton "else" qui est vide. S'il est vide, il n'y a pas besoin de l'indiquer. Ensuite tu vérifies que les tous les champs sont plein et tu affiches une erreur sinon. Il faudrait que tu envois le mail si et seulement si tous les champs sont pleins. Dans le script que tu donnes, le mail est envoyé quoi qu'il en soit.

    Voila, donc en gros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (!empty($alert))
    {
        echo $alert;
    }
    else
    {
        //Je m'envoie le mail
    }

  4. #4
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut
    Quand je reçois un mail, si toutes les variables n'ont pas été remplies, le mail me parvient quand meme !

    Donc si je comprends bien ce sont mes deuxième et troisième "if" qui coince dans mon code?

  5. #5
    Membre éclairé Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Par défaut
    Oui c'est ça, de manière rapide la fin de ton code devrait être ça:

    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
    if (empty($civilite) 
        || empty($contact) 
        || empty($mail) 
        || empty($animaux) 
        || empty($message))
    {  
        $alert = 'Tous les champs ne sont pas remplis';
    } 
     
    if (!empty($alert))
    {
        echo $alert;
    }
    else
    {
     
    $to = 'xxxxxxx@xxxxxxxx.fr';
     
     
    $msg  = 'Bonjour,'."\r\n\r\n";
    $msg .= 'Ce mail a été envoyé depuis reptipix.fr par '.$civilite.' '.$contact."\r\n\r\n";
    $msg .= 'Voici le message qui vous est adressé :'."\r\n";
    $msg .= '***************************'."\r\n";
    $msg .= $message."\r\n";
    $msg .= '***************************'."\r\n";
     
     
    $headers = 'From: '.$civilite.' <'.$contact.'>'."\r\n\r\n";
     
     
    mail($to, $sujet, $msg, $headers);
    }
    De cette manière si jamais un champ ou plus est vide, tu auras le message d'erreur et le mail ne sera pas envoyé.

  6. #6
    Membre éprouvé
    Inscrit en
    Juin 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Juin 2009
    Messages : 104
    Par défaut
    je modifierais également la fin du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mail($to, $sujet, $msg, $headers);
    par une structure classiquement plus parlante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(!mail( $to, $sujet, $msg, $headers)) {
       echo 'erreur : Message qui dit "pas envoyé"';
    } else {
       echo 'Merci, Message envoyé';
    }

  7. #7
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Par défaut
    J'ai modifié selon l'ensemble de vos conseils, et ça me donne ça:

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    if (get_magic_quotes_gpc())
    {
        $civilite = stripslashes($_POST['civilite']); 
        $contact = stripslashes($_POST['contact']); 
        $mail = stripslashes($_POST['mail']); 
        $animaux = stripslashes($_POST['animaux']); 
        $message = stripslashes($_POST['message']); 
    } 
    else
    {  
        $civilite = $_POST['civilite'];
        $contact = $_POST['contact']; 
        $mail = $_POST['mail']; 
        $animaux = $_POST['animaux']; 
        $message = $_POST['message']; 
    }
    if (empty($civilite) 
        || empty($contact) 
        || empty($mail) 
        || empty($animaux) 
        || empty($message))
    {  
        $alert = 'Tous les champs ne sont pas remplis';
    }
     
    if (!empty($alert))
    {
        echo $alert;
    }
    else
    {
     
    $to = 'xxxxxxx@xxxxxxxx.fr';
     
     
    $msg  = 'Bonjour,'."\r\n\r\n";
    $msg .= 'Ce mail a été envoyé depuis reptipix.fr par '.$civilite.' '.$contact."\r\n\r\n";
    $msg .= 'Voici le message qui vous est adressé :'."\r\n";
    $msg .= '***************************'."\r\n";
    $msg .= $message."\r\n";
    $msg .= '***************************'."\r\n";
     
     
    $headers = 'From: '.$civilite.' <'.$contact.'>'."\r\n\r\n";
     
     
    mail($to, $sujet, $msg, $headers);
    }
     
    if(!mail( $to, $sujet, $msg, $headers)) {
       echo 'erreur : Message qui dit "pas envoyé"';
    } else {
       echo 'Merci, Message envoyé';
    }
    Je l'ai mis en ligne, mais ça ne fonctionne pas, j'ai systematiquement un message d'erreur, que le formulaire soit remplis ou non... ça vient pas de mon code HTML non plus?

Discussions similaires

  1. problem dans formulaire
    Par spilliaert dans le forum Langage
    Réponses: 2
    Dernier message: 16/12/2005, 22h23
  2. probleme deux formulaires imbriqués
    Par rony dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/06/2005, 19h19
  3. Réponses: 3
    Dernier message: 24/02/2005, 16h48
  4. [CSS]Probleme de formulaire entre IE et Firefox
    Par Steph82 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 17/02/2005, 19h34
  5. Probleme de formulaire d'upload
    Par Oberown dans le forum ASP
    Réponses: 5
    Dernier message: 26/10/2004, 15h00

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