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

PHP & Base de données Discussion :

Envoi de mail : souci avec les conditions


Sujet :

PHP & Base de données

  1. #1
    Inactif
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 164
    Points : 0
    Points
    0
    Par défaut Envoi de mail : souci avec les conditions
    Bonjour,

    j'ai fais un formulaire et j'ai amélioré un peut :

    voilà mon code du formulaire :

    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
    >	>	<?php
            //On récupère les infos du membre
            $dat = mysql_query('SELECT * FROM forum_membres WHERE membre_id='.intval($_SESSION["id"]));
    $data = mysql_fetch_assoc($dat);
     
     
    ?>
     
          <form method="post" action="mail_envoyer.php?action=contact" name="formulaire">
          Votre Email
    <br /> <?php
     if(isset($_SESSION["id"]))
     {
    // on affiche le mail du membre s'il est connecté
    ?>
    <a href="#"><?php echo $data['membre_email']; ?></a>
    <?php
    }
    else
    {
    // si le membre n'est pas connecté il doit affiché un pseudo
    echo'<input type="text" name="mail" value="" />';
    }
     
     
    		?>
     
     
            <br />
    <br />
          Votre pseudo :
    <br>
    <?php
     if(isset($_SESSION["id"]))
     {
    // on affiche le pseudo du membre s'il est connecté
    echo ' <a href="../forum/voirprofil.php?m='.intval($data['membre_id']).'&amp;action=consulter">
            '.level_color(id_to_pseudo(stripslashes(htmlspecialchars($data['membre_id']))),$data['membre_rang']).'</a>';
    }
    else
    {
    // si le membre n'est pas connecté il doit affiché un pseudo
    echo'<input type="text" name="pseudo" value="" />';
    }
     
     
    		?>
    et ma page mail_envoyer :

    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($action=='contact')
    {
    $i = 0;
    $msg = '';
    if(!$_POST['mail']){ $msg .= '<ul><li>Veuillez renseigner votre e-mail</li><br />'; $i++; }
    if($_POST['pseudo'] == 'none'){ $msg .= '<li>Veuillez choisir un pseudo</li><br />'; $i++; }
    if($_POST['jour'] == 'none'){ $msg .= '<li>Veuillez choisir un jour</li><br />'; $i++; }
    if($_POST['date'] == 'none'){ $msg .= '<li>Veuillez choisir une date</li><br />'; $i++; }
    if($_POST['mois'] == 'none'){ $msg .= '<li>Veuillez choisir un mois</li><br />'; $i++; }
    if($_POST['heure'] == 'none'){ $msg .= '<li>Veuillez choisir votre heure</li><br />'; $i++; }
    if(!$_POST['message']){ $msg .= '<li>Veuillez ecrire un message</li></ul>'; $i++; }
    ?>
    donc comme j'ai modifié mon code du formulaire pour dir si le membre esst deconnecté la personne doit mettre son pseudo et son mail donc pas de souci

    et si le membre et conecté là on affiche son mail et sn pseudo là il le met bien.

    et donc sur la page mail_envoyer j'ai remplacé le code desus par :

    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
    if($action=='contact')
    {
    $i = 0;
    $msg = '';
     
    // on met une condition pour dire que le membre et bien connecter donc pas bessoin qu'il met un pseudo
     if(isset($_SESSION["id"]))
    	  {
    	  // on met une condition pour dire que le membre et deconnecter donc là il doit mettre un pseudo
     
     else
     
     if(!$_POST['pseudo']){ $msg .= '<li>Veuillez renseigner votre pseudo</li><br />'; $i++; }
     }
     // on met une condition pour dire que le membre et bien connecter donc pas bessoin qu'il met un mail
     
    	  elseif(isset($_SESSION["id"]))
    	  {
    	  // on met une condition pour dire que le membre et deconnecter donc là il doit mettre un mail
    if(!$_POST['mail']){ $msg .= '<li>Veuillez renseigner votre e-mail</li><br />'; $i++; }
    }
    if($_POST['objet'] == 'none'){ $msg .= '<li>Veuillez choisir un sujet</li><br />'; $i++; }
    if(!$_POST['message']){ $msg .= '<li>Veuillez ecrire un message</li><br />'; $i++; }
    donc j'ai mis des condition pour dire si le membre est connecté pas bessoin de remplir le champ pseudo et le mail et si le membre est déconnecter là il doit mettre le pseudo et son mail

    mais ma condition pour qu'il sache qui est connecté j'ai mis un if et un else pour dire soit l'un ou l'autre.

    mais ça n'a pas marché car qd je suids connecter il me dit veuillez remplir le pseudo et le mail hors il est déjà sur ma page formulaire grace a ma condition

    si quelqu'un peut m'aider

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Relis ton code et indente le proprement.
    Actuellement il manque des }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 164
    Points : 0
    Points
    0
    Par défaut
    coucou merci de ton aide donc j'ai refais un peut mon code il y a 2 petites soucis une qui n'est pas grave et l'autre je n'arrive pas affiché le pseudo du membre dans mon mail mais par contre il met son id du membre au lieu du pseudo.

    Donc je vais tout remettre pour etre claire :

    mon formulaire :

    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
    <?php
            //On récupère les infos du membre
            $dat = mysql_query('SELECT * FROM forum_membres WHERE membre_id='.intval($_SESSION["id"]));
    $data = mysql_fetch_assoc($dat);
     
     
    ?>
     
          <form method="post" action="mail_envoyer.php?action=contact" name="formulaire">
          Votre Email
    <br /> <?php
     if(isset($_SESSION["id"]))
     {
    // on affiche le mail du membre s'il est connecté
     
    ?>
    là jai mis un lien pour affiché mon mail mais j'ai du fermer et ouvert par <?php ?> car j'ai éssayé de le mettre avec  un echo pour mettre le lien du mail mais il se plante donc j'ai laissé comme celà
    <a href="#"><?php echo $data['membre_email']; ?></a>
    <?php
    }
    else
    {
    // si le membre n'est pas connecté il doit affiché un pseudo
    echo'<input type="text" name="mail" value="" />';
    }
     
     
    		?>
     
     
            <br />
    <br />
          Votre pseudo :
    <br>
    <?php
     if(isset($_SESSION["id"]))
     {
    // on affiche le pseudo du membre s'il est connecté
    echo ' <a href="../forum/voirprofil.php?m='.intval($data['membre_id']).'&amp;action=consulter">
            '.level_color(id_to_pseudo(stripslashes(htmlspecialchars($data['membre_id']))),$data['membre_rang']).'</a>';
    }
    else
    {
    // si le membre n'est pas connecté il doit affiché un pseudo
    echo'<input type="text" name="pseudo" value="" />';
    }
     
     
    		?>
    et dans mon mail_envoyer j'ai tous refais j'éspére proprement enfin tu me diras ceux qu'il faut que je corrige par quoi.

    donc voilà ma page :

    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
    55
    56
    57
    58
    59
    60
    if($action=='contact')
    {
    $i = 0;
    $msg = '';
    if (isset($_SESSION["id"])) // SINON pas bessoin de pseudo
    {
    //le pseudo
    }else{
    if(!$_POST['pseudo']){ $msg .= 'Veuillez renseigner votre pseudo<br />'; $i++; }
    } 
    if (isset($_SESSION["id"])) // SINON pas bessoin de mail
    {
    //le mail
    }else{
    if(!$_POST['mail']){ $msg .= 'Veuillez renseigner votre e-mail<br />'; $i++; }
    } 
    if($_POST['sujet'] == 'none'){ $msg .= 'Veuillez choisir un sujet<br />'; $i++; }
    if(!$_POST['message']){ $msg .= 'Veuillez ecrire un message</p>'; $i++; }
     
     
    if($i==0){
    // Plusieurs destinataires
         $mail  = 'monmail@free.fr' . ', '; // notez la virgule
     
         // Sujet
         $sujet = $_POST['sujet'];
     
         // message
         $message = '
         <html>
          <head>
           <title>Mon site</title>
          </head>
          <body>
     
           <p>Son Pseudo : ' . $_POST['pseudo'] .' ' . $_SESSION["id"] .'</p>
     
           <p>Son Message : ' . $_POST['message'] .'</p>
     
     
          </body>
         </html>
         ';
     
         // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
         $headers  = 'MIME-Version: 1.0' . "\r\n";
         $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
     
         // En-têtes additionnels
         $headers .= 'mail: ' . "\r\n";
         $headers .= 'From: ' . "\r\n";
         $headers .= 'Cc: ' . "\r\n";
         $headers .= 'Bcc: ' . "\r\n";
     
    if ( mail($mail, $sujet, $message, $headers))echo '<p align="center">Merci, votre message vient d\'&ecirc;tre envoy&eacute; &agrave; l\'&eacute;quipe du site.<br /><a href="index.php" title="Retour sur l\'index">Retour sur l\'index</a></p>'; else echo "Echec de l'envoi du mail.";
    }else{
    echo '<p align="center">' . $i . ' erreur(s) d&eacute;t&eacute;ct&eacute;e(s) :<br>'. "\n" . $msg . "\n" . '<p align="center"><a href="index.php" title="Retour sur l\'index">Retour sur l\'index</a>';header('refresh: 5; url=../contact.php');
     }
    }       
    ?>
    en résumer dans message j'ai mis ce code pour ceux qu'ils ne sont pas connecté et qui marché très bien donc ' . $_POST['pseudo'] .' il n'a pas de souci.

    Pour ceux qui sont connectés et qui affiche bien dans mon formulaire mon mail et mon pseudo donc j'ai voulu remettre ce code dans mon message ' . $_SESSION["id"] .' pour permetre quand je recevrais un mail je verrais son pseudo hors là il met dans ma boîte de mail ce message :

    Son Pseudo : 83

    Son Message : dddddddddddd
    au lieu de mettre :

    Son Pseudo : tester

    Son Message : dddddddddddd
    et aussi j'ai voulu remettre ma fonction level color pour permettre dans mon mail le pseudo soit mis en couleur comme pour mon formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a href="../forum/voirprofil.php?m='.intval($data['membre_id']).'&amp;action=consulter">
            '.level_color(id_to_pseudo(stripslashes(htmlspecialchars($data['membre_id']))),$data['membre_rang']).'</a>';
    si quelqu'un pourrais m'aidé a remettre le pseudo au lieu du chiffre et aussi la couleur du pseudo grace au level color car là je suis coincé car je n'arrive pas a remettre le pseudo dans le mail mais juste le chiffre donc id_membre donc il faut juste trouvé le moyen d'afficher son pseudo au lieu du id et pour quoi pas la couleur du membre avec ma petit fonction qui marche dc level color

    merci de votre aide je pense que c'est rie c'est juste un code que j'ai mal mis mais j'ai tout éssayé

    encore merci de ton aide.

  4. #4
    Inactif
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 164
    Points : 0
    Points
    0
    Par défaut
    bonjour commevous êtes pas inspiré par mon code donc j'ai retesté un autre code qui et :

    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
         // Sujet
         $sujet = $_POST['sujet'];
     
         // message
         $message = '
         <html>
          <head>
           <title>Mon site</title>
          </head>
          <body>
     
     
      function id2pseudo($id=0)
      {
        $id = ($id == 0) ? intval($_SESSION["id"]) : intval($id);
     
           $req = mysql_query("SELECT membre_pseudo AS pseudo, COUNT(*) AS existPseudo FROM forum_membres WHERE membre_id = " . $id);
             $res = mysql_fetch_assoc($req);
     
             if($res["existPseudo"] > 0)
           return htmlspecialchars($res["pseudo"]);
             else
           return "Anonyme member";
      }
     
     
     
           <p>Son Message : ' . $_POST['message'] .'</p>
     
     
          </body>
         </html>
         ';
    il met ça

    function id2pseudo($id=0) { $id = ($id == 0) ? intval($_SESSION["id"]) : intval($id); $req = mysql_query("SELECT membre_pseudo AS pseudo, COUNT(*) AS existPseudo FROM forum_membres WHERE membre_id = " . $id); $res = mysql_fetch_assoc($req); if($res["existPseudo"] > 0) return htmlspecialchars($res["pseudo"]); else return "Anonyme member"; }
    Son Message : sujet
    au lieu de mettre

    son pseudo : tester
    son message : sujet

    merci de votre ide

  5. #5
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Citation Envoyé par mario94 Voir le message
    Son Pseudo : 83

    Son Message : dddddddddddd
    au lieu de mettre :


    Son Pseudo : tester

    Son Message : dddddddddddd
    le résultat que tu attends n'était pas conforme au code présenté.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
           echo '<p>Son Pseudo : ' . $_POST['pseudo'] .' ' . $_SESSION["id"] .'</p>
     
           <p>Son Message : ' . $_POST['message'] .'</p>';
    fait un print_r($_POST), tu verras que l'array $_POST ne contient pas les variables attendues.

    quand au 2 message, tu ferais mieux de l'effacer.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  6. #6
    Inactif
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 164
    Points : 0
    Points
    0
    Par défaut
    merci de ta réponse enfaite ' . $_POST['pseudo'] .' ca marche bien

    mais pour $_SESSION["id"] . c'est ca qui marche pas mais le numero du id au lieu du pseudo

    et j'aimerais savoir comment je pourrais le remettre le pseudo

    merci de votre aide car j'ai tout tester mais ça ne marche pas donc peut être avec votre on va reuissit a affiché le pseudo

    merci de votre aide

Discussions similaires

  1. [UNIX] envoi de mail HTML avec mailx
    Par darinze dans le forum Développement
    Réponses: 3
    Dernier message: 21/09/2011, 14h24
  2. Soucis avec les Graphiques dans les états
    Par Chococrocq dans le forum IHM
    Réponses: 27
    Dernier message: 04/01/2006, 19h03
  3. petit soucis avec les listes
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/09/2005, 10h08
  4. Envoi de mail automatique avec Visual C++
    Par cza dans le forum MFC
    Réponses: 2
    Dernier message: 22/02/2005, 15h59
  5. Réponses: 7
    Dernier message: 05/10/2004, 13h44

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