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 :

Envoi de mails


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut Envoi de mails
    Bonjour,

    J'ai un problème d'envoi de mails en fonction du destinataire($d) dans <option>.

    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    <?php
    session_start();
    $bdd = new PDO('mysql:host=localhost;dbname=', '', '');
    if(isset($_SESSION['id']) AND !empty($_SESSION['id'])) {
       if(isset($_POST['envoi_message'])) {
          // Le message
    $message = "Vous venez de recevoir 1 nouveau message privé sur FriendsNetwork.";
     
    // Dans le cas où nos lignes comportent plus de 70 caractères, nous les coupons en utilisant wordwrap()
    $message = wordwrap($message, 70, "\r\n");
     
    // Envoi du mail
    mail($d['mail'], 'Nouveau Message - FriendsNetwork', $message);
          if(isset($_POST['destinataire'],$_POST['message'],$_POST['objet'],$_POST['heure']) AND !empty($_POST['destinataire']) AND !empty($_POST['message']) AND !empty($_POST['objet']) AND !empty($_POST['heure'])) {
             $destinataire = htmlspecialchars($_POST['destinataire']);
             $message = htmlspecialchars($_POST['message']);
             $objet = htmlspecialchars($_POST['objet']);
             $heure = htmlspecialchars($_POST['heure']);
             $id_destinataire = $bdd->prepare('SELECT id FROM membres WHERE pseudo = ?');
             $id_destinataire->execute(array($destinataire));
             $dest_exist = $id_destinataire->rowCount();
             if($dest_exist == 1) {
                $id_destinataire = $id_destinataire->fetch();
                $id_destinataire = $id_destinataire['id'];
                $ins = $bdd->prepare('INSERT INTO messages(id_expediteur,id_destinataire,message,objet,heure) VALUES (?,?,?,?,?)');
                $ins->execute(array($_SESSION['id'],$id_destinataire,$message,$objet,$heure));
                }
                $error = "Votre message a bien été envoyé !";
             } else {
                $error = "Cet utilisateur n'existe pas...";
             }
          } else {
             $error = "Veuillez compléter tous les champs";
          }
       $destinataires = $bdd->query('SELECT pseudo, mail FROM membres ORDER BY pseudo');
       if(isset($_GET['r']) AND !empty($_GET['r'])) {
          $r = htmlspecialchars($_GET['r']);
       }
       if(isset($_GET['o']) AND !empty($_GET['o'])) {
          $o = urldecode($_GET['o']);
          $o = htmlspecialchars($_GET['o']);
          if(substr($o,0,3) != 'RE:') {
             $o = "RE:".$o;
          }
       }
       $date = date("d-m-Y");
       $heure = date("H:i");
       date_default_timezone_set('Europe/Paris');
       ?>
       <!DOCTYPE html>
       <html>
       <head>
          <title>Envoi de message - FriendsNetwork</title>
          <meta charset="utf-8" />
    <link rel="stylesheet" type="text/css" href="msg.css" />
    <link rel="stylesheet" type="text/css" href="actu.css" />
    <?php include("search.php"); ?>
    <div id="menu" style="margin-left: 570px"><ul>
             <li>
                    <a class="mainTopNav__item" href="/actu.php">Actu</a>
                </li>
                 <li>
                    <a class="mainTopNav__item" href="/profil.php?id=<?php echo $_SESSION['id']; ?>&pseudo=<?php echo $_SESSION['pseudo']; ?>">Moi</a>
                </li>
                <li>
                   <div id="menumessage"><a class="mainTopNav__item" href="/reception.php">Messages</a></div>
                </li>
                </ul>
             </div>
             <center>
                <div id="name">
    <div id="user">
        <a href="/profil.php?id=<?php echo $_SESSION['id']; ?>&pseudo=<?php echo $_SESSION['pseudo']; ?>"><FONT color="black"><h3><?php echo $_SESSION['pseudo']; ?></h3></FONT></a>
        <div id="separating" style="border-top-width: 2px; border-top-style: solid; border-top-color: rgb(190, 190, 190); margin-bottom: 10px;"></div>
        <a href="/deconnexion.php"><FONT color="black">Déconnexion</FONT></a>
    </div>
        </center>
       </head>
       <body>
          <center>
             <br /><br /><br /><br />
             <div id="menumsg"><a href="reception.php">Boîte de réception</a></div>
             <br /><br />
          <form method="POST">
             <label>Destinataire:</label>
             <select name="destinataire">
                <?php while($d = $destinataires->fetch()) { ?>
                <option><?= $d['pseudo'] ?> <p hidden class="hidden"> &nbsp;<?php $d['mail'] ?> </p></option>
                <?php } ?>
             </select>
             <br /><br />
             <label>Objet:</label>
             <input type="text" name="objet" <?php if(isset($o)) { echo 'value="'.$o.'"'; } ?> />
             <br /><br />
             <label>Heure :</label>
             <input type="text" name="heure" readonly="readonly" value="<?php Print("Le $date Ã* $heure"); ?>"><br /><br />
             <label>Message :</label><br /><br />
             <textarea placeholder="Votre message" name="message"></textarea>
             <br /><br />
             <input type="submit" value="Envoyer" name="envoi_message" />
             <br /><br />
             <?php if(isset($error)) { echo '<span style="color:red">'.$error.'</span>'; } ?>
          </form>
       </center>
       </body>
       </html>
    <?php
    }
    ?>
    Merci d'avance pour 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
    Ca serait gentil de nous décrire le problème.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1/ quel problème précisément ?

    2/ utilise phpMailer.

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut Excusez moi
    Oh je suis bête j'avais oublié de le noter .

    Le voici :

    Notice: Undefined variable: d in /var/www/friendsnetwork/envoi.php on line 13

  5. #5
    Invité
    Invité(e)
    Par défaut
    Le message est clair.

    Ligne 13 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mail($d['mail'], 'Nouveau Message - FriendsNetwork', $message);
    Où est défini $d['mail'] ?

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut
    Ok mais $d= (pseudo, mail FROM Membres ect...) donc cela devrait marcher.

  7. #7
    Invité
    Invité(e)
    Par défaut
    ??

    Et de quel chapeau tu sors ce lapin ??

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut
    de la ligne 88 ou il est défini que $d= $destinataire et en fait c'est dans destinataire qu'il il y mon $destinataire(SELECT pseudo, mail FROM Membres est...) .

  9. #9
    Invité
    Invité(e)
    Par défaut
    1/ La ligne 88 est... APRES la ligne 13

    2/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
              <select name="destinataire">
                <?php while($d = $destinataires->fetch()) { ?>
                <option><?= $d['pseudo'] ?> <p hidden class="hidden"> &nbsp;<?php $d['mail'] ?> </p></option>
                <?php } ?>
             </select>
    D'après toi, tu penses vraiment que la syntaxe est correcte ?
    Où est le value="..." sur <option> ??
    As-tu affiché le code source généré ? ("Ctrl"+"U" ou clic droit -> "Afficher la source")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                <option><?= $d['pseudo'] ?> <p hidden class="hidden"> &nbsp;<?php $d['mail'] ?> </p></option>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                <option value="<?php $d['mail'] ?>"><?= $d['pseudo'] ?></option>
    Auquel cas tu récupères l'email avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mail_destinataire = $_POST['destinataire'];
    => Révise les fondamentaux : Formulaires + PHP5 : les contrôles <input>, <textarea>, <select>...

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut
    Voici le nouveau code :
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
       <?php
    session_start();
    $bdd = new PDO('mysql:host=localhost;dbname=', '', '');
    if(isset($_SESSION['id']) AND !empty($_SESSION['id'])) {
       if(isset($_POST['envoi_message'])) {
          // Le message
    $message = "Vous venez de recevoir 1 nouveau message privé sur FriendsNetwork.";
     
    // Dans le cas où nos lignes comportent plus de 70 caractères, nous les coupons en utilisant wordwrap()
    $message = wordwrap($message, 70, "\r\n");
     
    // Envoi du mail
    mail($d['mail'], 'Nouveau Message - FriendsNetwork', $message);
          if(isset($_POST['destinataire'],$_POST['message'],$_POST['objet'],$_POST['heure']) AND !empty($_POST['destinataire']) AND !empty($_POST['message']) AND !empty($_POST['objet']) AND !empty($_POST['heure'])) {
             $destinataire = htmlspecialchars($_POST['destinataire']);
             $message = htmlspecialchars($_POST['message']);
             $objet = htmlspecialchars($_POST['objet']);
             $heure = htmlspecialchars($_POST['heure']);
             $id_destinataire = $bdd->prepare('SELECT id FROM membres WHERE pseudo = ?');
             $id_destinataire->execute(array($destinataire));
             $dest_exist = $id_destinataire->rowCount();
             if($dest_exist == 1) {
                $id_destinataire = $id_destinataire->fetch();
                $id_destinataire = $id_destinataire['id'];
                $ins = $bdd->prepare('INSERT INTO messages(id_expediteur,id_destinataire,message,objet,heure) VALUES (?,?,?,?,?)');
                $ins->execute(array($_SESSION['id'],$id_destinataire,$message,$objet,$heure));
                }
                $error = "Votre message a bien été envoyé !";
             } else {
                $error = "Cet utilisateur n'existe pas...";
             }
          } else {
             $error = "Veuillez compléter tous les champs";
          }
       $destinataires = $bdd->query('SELECT pseudo, mail FROM membres ORDER BY pseudo');
       if(isset($_GET['r']) AND !empty($_GET['r'])) {
          $r = htmlspecialchars($_GET['r']);
       }
       if(isset($_GET['o']) AND !empty($_GET['o'])) {
          $o = urldecode($_GET['o']);
          $o = htmlspecialchars($_GET['o']);
          if(substr($o,0,3) != 'RE:') {
             $o = "RE:".$o;
          }
       }
       $date = date("d-m-Y");
       $heure = date("H:i");
       date_default_timezone_set('Europe/Paris');
       $mail_destinataire = $_POST['destinataire'];
       ?>
       <!DOCTYPE html>
       <html>
       <head>
          <title>Envoi de message - FriendsNetwork</title>
          <meta charset="utf-8" />
    <link rel="stylesheet" type="text/css" href="msg.css" />
    <link rel="stylesheet" type="text/css" href="actu.css" />
    <?php include("search.php"); ?>
    <div id="menu" style="margin-left: 570px"><ul>
             <li>
                    <a class="mainTopNav__item" href="/actu.php">Actu</a>
                </li>
                 <li>
                    <a class="mainTopNav__item" href="/profil.php?id=<?php echo $_SESSION['id']; ?>&pseudo=<?php echo $_SESSION['pseudo']; ?>">Moi</a>
                </li>
                <li>
                   <div id="menumessage"><a class="mainTopNav__item" href="/reception.php">Messages</a></div>
                </li>
                </ul>
             </div>
             <center>
                <div id="name">
    <div id="user">
        <a href="/profil.php?id=<?php echo $_SESSION['id']; ?>&pseudo=<?php echo $_SESSION['pseudo']; ?>"><FONT color="black"><h3><?php echo $_SESSION['pseudo']; ?></h3></FONT></a>
        <div id="separating" style="border-top-width: 2px; border-top-style: solid; border-top-color: rgb(190, 190, 190); margin-bottom: 10px;"></div>
        <a href="/deconnexion.php"><FONT color="black">Déconnexion</FONT></a>
    </div>
        </center>
       </head>
       <body>
          <center>
             <br /><br /><br /><br />
             <div id="menumsg"><a href="reception.php">Boîte de réception</a></div>
             <br /><br />
          <form method="POST">
             <label>Destinataire:</label>
             <select name="destinataire">
                <?php while($d = $destinataires->fetch()) { ?>
                <option value="<?php $mail_destinataire ?>"><?= $d['pseudo'] ?></option>
                <?php } ?>
             </select>
             <br /><br />
             <label>Objet:</label>
             <input type="text" name="objet" <?php if(isset($o)) { echo 'value="'.$o.'"'; } ?> />
             <br /><br />
             <label>Heure :</label>
             <input type="text" name="heure" readonly="readonly" value="<?php Print("Le $date Ã* $heure"); ?>"><br /><br />
             <label>Message :</label><br /><br />
             <textarea placeholder="Votre message" name="message"></textarea>
             <br /><br />
             <input type="submit" value="Envoyer" name="envoi_message" />
             <br /><br />
             <?php if(isset($error)) { echo '<span style="color:red">'.$error.'</span>'; } ?>
          </form>
       </center>
       </body>
       </html>
    <?php
    }
    ?>
    et voici la nouvelle erreur :

    Notice: Undefined index: destinataire in /var/www/friendsnetwork/envoi.php on line 49

  11. #11
    Invité
    Invité(e)
    Par défaut
    Dis...

    Tu mets tes chaussures AVANT tes chaussettes, ou après ?

    C'est juste une question de LOGIQUE "pratique", et de chronologie des évènements.
    (rien à voir avec une "logique mathématique").

    Tu ne peux pas "utiliser" une variable AVANT de l'avoir récupérée...

  12. #12
    Invité
    Invité(e)
    Par défaut
    Franchement, si tu passais un peu plus de temps à écrire ton code avec une BONNE INDENTATION, tu y verrais plus clair !
    Si ta chambre est aussi mal rangée que ton code....


    Ca donnerai ç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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    <?php
    session_start();
    $bdd = new PDO('mysql:host=localhost;dbname=', '', '');
    // ----------------------------------------------------
    if(isset($_SESSION['id']) AND !empty($_SESSION['id'])) 
    {
    	// -------------------------------
    	if(isset($_POST['envoi_message'])) 
    	{
    		// Le message
    		$message = "Vous venez de recevoir 1 nouveau message privé sur FriendsNetwork.";
    		// Dans le cas où nos lignes comportent plus de 70 caractères, nous les coupons en utilisant wordwrap()
    		$message = wordwrap($message, 70, "\r\n");
     
    		// --------------------
    		// récupération des données du formulaire
    		if(isset($_POST['destinataire'],$_POST['message'],$_POST['objet'],$_POST['heure']) 
    		  AND !empty($_POST['destinataire']) 
    		  AND !empty($_POST['message']) 
    		  AND !empty($_POST['objet']) 
    		  AND !empty($_POST['heure'])) 
    		  {
    			$destinataire = htmlspecialchars($_POST['destinataire']); // récupération destinataire
    			$message = htmlspecialchars($_POST['message']);
    			$objet = htmlspecialchars($_POST['objet']);
    			$heure = htmlspecialchars($_POST['heure']);
    			// --------------------
    			// enregistrement du message en base de données
    			$id_destinataire = $bdd->prepare('SELECT id FROM membres WHERE pseudo = ?');
    			$id_destinataire->execute(array($destinataire));
    			$dest_exist = $id_destinataire->rowCount();
    			if($dest_exist == 1) {
    				$id_destinataire = $id_destinataire->fetch();
    				$id_destinataire = $id_destinataire['id'];
    				$ins = $bdd->prepare('INSERT INTO messages(id_expediteur,id_destinataire,message,objet,heure) VALUES (?,?,?,?,?)');
    				$ins->execute(array($_SESSION['id'],$id_destinataire,$message,$objet,$heure));
    			}
    			// ----------------
    			// Envoi du mail
    			if( mail($destinataire, 'Nouveau Message - FriendsNetwork', $message) ){ // remarque : on teste en meme temps si l'envoi s'est bien déroulé (si pas d'erreur : true)
    				$error = "Votre message a bien été envoyé !";
    			} else {
    				$error = "Oups, problème lors de l'envoi...";
    			}
    			// ----------------
    		} else {
    			$error = "Cet utilisateur n'existe pas...";
    		}
    		// --------------------
    	} else {
    	$error = "Veuillez compléter tous les champs";
    	}
    	// -------------------------------
    	$destinataires = $bdd->query('SELECT pseudo, mail FROM membres ORDER BY pseudo');
    	if(isset($_GET['r']) AND !empty($_GET['r'])) 
    	{
    		$r = htmlspecialchars($_GET['r']);
    	}
    	// -------------------------------
    	if(isset($_GET['o']) AND !empty($_GET['o'])) 
    	{
    		$o = urldecode($_GET['o']);
    		$o = htmlspecialchars($_GET['o']);
    		if(substr($o,0,3) != 'RE:') 
    		{
    			$o = "RE:".$o;
    		}
    	}
    	// -------------------------------
    	$date = date("d-m-Y");
    	$heure = date("H:i");
    	date_default_timezone_set('Europe/Paris');
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    	<title>Envoi de message - FriendsNetwork</title>
    	<meta charset="utf-8" />
    	<link rel="stylesheet" type="text/css" href="msg.css" />
    	<link rel="stylesheet" type="text/css" href="actu.css" />
    </head>
    <body>
     
    <?php include("search.php"); ?>
     
    	<div id="menu" style="margin-left: 570px">
    		<ul>
    			<li>
    				<a class="mainTopNav__item" href="/actu.php">Actu</a>
    			</li>
    			<li>
    				<a class="mainTopNav__item" href="/profil.php?id=<?php echo $_SESSION['id']; ?>&pseudo=<?php echo $_SESSION['pseudo']; ?>">Moi</a>
    			</li>
    			<li>
    				<div id="menumessage"><a class="mainTopNav__item" href="/reception.php">Messages</a></div>
    			</li>
    		</ul>
    	</div>
     
    	<center>
    	<div id="name">
    		<div id="user">
    			<a href="/profil.php?id=<?php echo $_SESSION['id']; ?>&pseudo=<?php echo $_SESSION['pseudo']; ?>"><FONT color="black"><h3><?php echo $_SESSION['pseudo']; ?></h3></FONT></a>
    			<div id="separating" style="border-top-width: 2px; border-top-style: solid; border-top-color: rgb(190, 190, 190); margin-bottom: 10px;"></div>
    			<a href="/deconnexion.php"><FONT color="black">Déconnexion</FONT></a>
    		</div>
        </center>
     
    	<center>
    		<br /><br /><br /><br />
    		<div id="menumsg"><a href="reception.php">Boîte de réception</a></div>
    		<br /><br />
    		<form method="POST">
    			<label>Destinataire:</label>
    			<select name="destinataire">
    				<?php while($d = $destinataires->fetch()) { ?>
    				<option value="<?php $d['mail'] ?>"><?= $d['pseudo'] ?></option>
    				<?php } ?>
    			</select>
    			<br /><br />
    			<label>Objet:</label>
    			<input type="text" name="objet" <?php if(isset($o)) { echo 'value="'.$o.'"'; } ?> />
    			<br /><br />
    			<label>Heure :</label>
    			<input type="text" name="heure" readonly="readonly" value="<?php Print("Le $date Ã* $heure"); ?>"><br /><br />
    			<label>Message :</label><br /><br />
    			<textarea placeholder="Votre message" name="message"></textarea>
    			<br /><br />
    			<input type="submit" value="Envoyer" name="envoi_message" />
    			<br /><br />
    			<?php if(isset($error)) { echo '<span style="color:red">'.$error.'</span>'; } ?>
    		</form>
    	</center>
    </body>
    </html>
    <?php
    }
    // ----------------------------------------------------
    ?>
    + Mettre des commentaires/explications dans le code, pour le jour où tu devras le relire/modifier...

    N.B. Il reste encore pas mal d'erreurs dans ton code, mais grâce à une BONNE INDENTATION, on peut plus facilement le lire, le comprendre et donc le corriger.
    Dernière modification par Invité ; 27/05/2016 à 20h26.

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut
    Maintenant il me dit que l'utilisateur n'existe pas lors de l'envoi du message.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    			$id_destinataire = $bdd->prepare('SELECT id FROM membres WHERE pseudo = ?');
    			$id_destinataire->execute(array($destinataire));
    Or, $destinataire est... l'email du destinataire. PAS son pseudo.


    REPRENONS LA LOGIQUE :

    1/ je sélectionne un destinataire.
    2/ je veux récupérer son ID, pour ensuite pouvoir le rechercher en base de données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    			<select name="destinataire">
    				<?php while($d = $destinataires->fetch()) { ?>
    				<option value="<?php $d['id'] ?>"><?= $d['pseudo'] ?></option> <!-- ICI, j'ai modifier le value, pour récupérer l'ID du destinataire
    				<?php } ?>
    			</select>
    3/ je récupère la sélection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    			$id_destinataire = $_POST['destinataire'];
    4/ j'effectue une requête, pour récupérer l'EMAIL et le pseudo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    			$res = $bdd->prepare('SELECT pseudo, mail FROM membres WHERE id = ?');
    			$res->execute(array($id_destinataire));
    			$row = $res->fetch();
    			$pseudo_destinataire = $row['pseudo'];
    			$mail_destinataire = $row['mail'];
    5/ je peux maintenant utiliser ce mail et ce pseudo pour l'envoi de l'email.

  15. #15
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut
    Mais non le destinataire est un autre membre du site qui est dans ma base de données

  16. #16
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut
    Ok mais alors il faut que je fasse une 2eme requête ?

  17. #17
    Invité
    Invité(e)
    Par défaut
    J'ai mis à jour mon précédent message.

    Relis-le à tête reposée.

    PRENDS un PAPIER et un CRAYON, pour NOTER chaque étape.

    Ca t'évitera de coder sans comprendre...

  18. #18
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut
    Ok j'ai refait le code et le voici :

    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    <?php
    session_start();
    $bdd = new PDO('mysql:host=localhost;dbname=', '', '');
    // ----------------------------------------------------
    if(isset($_SESSION['id']) AND !empty($_SESSION['id'])) 
    {
       // -------------------------------
       if(isset($_POST['envoi_message'])) 
       {
          // Le message
          $message = "Vous venez de recevoir 1 nouveau message privé sur FriendsNetwork.";
          // Dans le cas où nos lignes comportent plus de 70 caractères, nous les coupons en utilisant wordwrap()
          $message = wordwrap($message, 70, "\r\n");
     
          // --------------------
          // récupération des données du formulaire
          if(isset($_POST['destinataire'],$_POST['message'],$_POST['objet'],$_POST['heure']) 
            AND !empty($_POST['destinataire']) 
            AND !empty($_POST['message']) 
            AND !empty($_POST['objet']) 
            AND !empty($_POST['heure'])) 
            {
             $destinataire = htmlspecialchars($_POST['destinataire']); // récupération destinataire
             $message = htmlspecialchars($_POST['message']);
             $objet = htmlspecialchars($_POST['objet']);
             $heure = htmlspecialchars($_POST['heure']);
             // --------------------
             // enregistrement du message en base de données
             $id_destinataire = $_POST['destinataire'];
             $dest_exist = $id_destinataire->rowCount();
             if($dest_exist == 1) {
                $id_destinataire = $id_destinataire->fetch();
                $id_destinataire = $id_destinataire['id'];
                $ins = $bdd->prepare('INSERT INTO messages(id_expediteur,id_destinataire,message,objet,heure) VALUES (?,?,?,?,?)');
                $ins->execute(array($_SESSION['id'],$id_destinataire,$message,$objet,$heure));
             }
             // ----------------
             // Envoi du mail
             if( mail($destinataire, 'Nouveau Message - FriendsNetwork', $message) ){ // remarque : on teste en meme temps si l'envoi s'est bien déroulé (si pas d'erreur : true)
                $error = "Votre message a bien été envoyé !";
             } else {
                $error = "Oups, problème lors de l'envoi...";
             }
             // ----------------
          } else {
             $error = "Cet utilisateur n'existe pas...";
          }
          // --------------------
       } else {
       $error = "Veuillez compléter tous les champs";
       }
       // -------------------------------
                $res = $bdd->prepare('SELECT pseudo, mail FROM membres WHERE id = ?');
             $res->execute(array($id_destinataire));
             $row = $res->fetch();
             $pseudo_destinataire = $row['pseudo'];
             $mail_destinataire = $row['mail'];
       if(isset($_GET['r']) AND !empty($_GET['r'])) 
       {
          $r = htmlspecialchars($_GET['r']);
       }
       // -------------------------------
       if(isset($_GET['o']) AND !empty($_GET['o'])) 
       {
          $o = urldecode($_GET['o']);
          $o = htmlspecialchars($_GET['o']);
          if(substr($o,0,3) != 'RE:') 
          {
             $o = "RE:".$o;
          }
       }
       // -------------------------------
       $date = date("d-m-Y");
       $heure = date("H:i");
       date_default_timezone_set('Europe/Paris');
    ?>
    <!DOCTYPE html>
    <html>
    <head>
       <title>Envoi de message - FriendsNetwork</title>
       <meta charset="utf-8" />
       <link rel="stylesheet" type="text/css" href="msg.css" />
       <link rel="stylesheet" type="text/css" href="actu.css" />
    </head>
    <body>
     
    <?php include("search.php"); ?>
     
       <div id="menu" style="margin-left: 570px">
          <ul>
             <li>
                <a class="mainTopNav__item" href="/actu.php">Actu</a>
             </li>
             <li>
                <a class="mainTopNav__item" href="/profil.php?id=<?php echo $_SESSION['id']; ?>&pseudo=<?php echo $_SESSION['pseudo']; ?>">Moi</a>
             </li>
             <li>
                <div id="menumessage"><a class="mainTopNav__item" href="/reception.php">Messages</a></div>
             </li>
          </ul>
       </div>
     
       <center>
       <div id="name">
          <div id="user">
             <a href="/profil.php?id=<?php echo $_SESSION['id']; ?>&pseudo=<?php echo $_SESSION['pseudo']; ?>"><FONT color="black"><h3><?php echo $_SESSION['pseudo']; ?></h3></FONT></a>
             <div id="separating" style="border-top-width: 2px; border-top-style: solid; border-top-color: rgb(190, 190, 190); margin-bottom: 10px;"></div>
             <a href="/deconnexion.php"><FONT color="black">Déconnexion</FONT></a>
          </div>
        </center>
     
       <center>
          <br /><br /><br /><br />
          <div id="menumsg"><a href="reception.php">Boîte de réception</a></div>
          <br /><br />
          <form method="POST">
             <label>Destinataire:</label>
             <select name="destinataire">
                <?php while($d = $destinataires->fetch()) { ?>
                <option value="<?php $d['id'] ?>"><?= $d['pseudo'] ?></option>
                <?php } ?>
             </select>
             <br /><br />
             <label>Objet:</label>
             <input type="text" name="objet" <?php if(isset($o)) { echo 'value="'.$o.'"'; } ?> />
             <br /><br />
             <label>Heure :</label>
             <input type="text" name="heure" readonly="readonly" value="<?php Print("Le $date Ã* $heure"); ?>"><br /><br />
             <label>Message :</label><br /><br />
             <textarea placeholder="Votre message" name="message"></textarea>
             <br /><br />
             <input type="submit" value="Envoyer" name="envoi_message" />
             <br /><br />
             <?php if(isset($error)) { echo '<span style="color:red">'.$error.'</span>'; } ?>
          </form>
       </center>
    </body>
    </html>
    <?php
    }
    // ----------------------------------------------------
    ?>
    Mais mon select est vide et j'ai cette erreur :

    Notice: Undefined variable: id_destinataire in /var/www/friendsnetwork/envoi.php on line 54

  19. #19
    Invité
    Invité(e)
    Par défaut
    OK.
    On revoit ça demain, OK ?

    "La nuit porte conseil"

  20. #20
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Avril 2016
    Messages : 173
    Points : 50
    Points
    50
    Par défaut
    Qui est là ?

Discussions similaires

  1. Problème d'envoie de mail par SMTP
    Par yass dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 12/09/2008, 17h45
  2. Réponses: 3
    Dernier message: 12/02/2007, 19h39
  3. Réponses: 3
    Dernier message: 11/10/2006, 11h50
  4. Problème avec envoi de mail et fichier joint
    Par LFC dans le forum Modules
    Réponses: 5
    Dernier message: 20/05/2006, 21h59

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