PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 10-12-2010 14:59:52

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

syntaxe variable destinataire dans mail()

bonjour à tous,
j'ai un petit soucis avec une variable "to".

lorsque je la définie en dur (ex : $to="tata@tata.fr";), l'émail est bien envoyé, mais lorsque je tente de récupérer ma variable, le mail ne part pas !
je dois avoir une erreur de syntaxe dans la variable.

<?php $req ="SELECT *
    FROM producteurs        
    WHERE nom_producteur ='$producteur' AND prod='on'"
;
    $result2 = mysql_query($req) or die(mysql_error());
while($row = mysql_fetch_array($result2))
{

$mail_producteur = $row['mail_producteur'];
$nom_producteur = $row['nom_producteur'];
$contact = $row['contact'];

//destinataire :
$to =$mail_producteur;
// sujet :
$subject = "ici-TELE parle de vous";
// message :
$message = "
<html>
<head>
<title>ici-TELE parle de vous</title>
</head>
<body>
<p>Bonjour "
.$contact."</p>
<table>
<tr>

<td>La vidéo ".$title." vous concernant est en ligne sur notre site, vous pouvez la <a href=\"/television-locale-pau/video/telechargement.php?nomFichier=".$nom.".mp4&dossier=./\">Télécharger</a>. <br/>
Cette vidéo est également disponible sur <a href=\""
.$youtubelink."\">youtube</a> et <a href=\"".$dailylink."\"> dailymotion</a>.
</td>
</tr>
</table>
</body>
</html>"
;
// Pour envoyer un mail au format html, vous pouvez configurer le type content-type :
$headers = "MIME-Version: 1.0\r\n";
$headers .= "content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: Rédaction ici-TELE <redaction@ici-tele.com.com>\r\n";
?>
  <form action="<? echo $PHP_SELF ?>" method="post"  name="video">
    <table  border="0" cellspacing="5" cellpadding="0">
      <tr>
        <td colspan="2"><div align="center">
            <br />
            <br />
            <?php // on affiche le résultat pour le visiteur
    echo '<b>Votre vidéo a été ajoutée.</b><br />';
   
       if (mail($to, $subject, $message, $headers))
        //if (mail($to, $subject, $message, $headers))
     {
          echo '<div align=\"center\">Le message a été envoyé au producteur</div>';
    }
     else
     {
          echo '<div align=\"center\">Le message n\'a pu être envoyé</div>';
     }

     
     ?>

comment puis je syntaxer $to =$mail_producteur; ??

$to =".$mail_producteur.";

?

$to ="".$mail_producteur."";

?

merci de votre aide

Hors ligne

#2 10-12-2010 15:05:57

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : syntaxe variable destinataire dans mail()

Saluton,

$to="\"$mail_producteur\"";

Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 10-12-2010 15:32:53

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : syntaxe variable destinataire dans mail()

Bonjour Maljuna, merci de ta réponse ultra rapide wink
Avec cette syntaxe, ça ne marche pas non plus pourtant

 echo $mail_producteur;

renvoie bien la variable !!!!

Hors ligne

#4 10-12-2010 21:06:43

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : syntaxe variable destinataire dans mail()

yikes

$to = $mail_producteur;

???

Hors ligne

#5 10-12-2010 23:48:19

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : syntaxe variable destinataire dans mail()

to simplement mon pti Xtg lol
a++

Hors ligne

#6 13-12-2010 20:34:03

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : syntaxe variable destinataire dans mail()

coucou les codeurs,
salut xTG, on se retrouve wink
merci pour vos réponses
J'avais déjà testé sans succès, je me demande si je n'ai pas une erreur quelque part sad

Hors ligne

#7 13-12-2010 22:33:48

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : syntaxe variable destinataire dans mail()

Si le code que je t'ai donné est pas bon c'est que ta variable est pas bonne. ^_-

Dans ton code ce qui me gêne aussi c'est qu'il n'y a pas d'accolade fermant le while.

Hors ligne

#8 14-12-2010 12:32:43

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : syntaxe variable destinataire dans mail()

bonjour, oui la fin d'accolade est à la fin de ma page après le tableau récapitulatif.

Hors ligne

#9 14-12-2010 13:54:17

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : syntaxe variable destinataire dans mail()

je me demande s'il n'y à pas plus simple !

j'ai un formulaire d'ajout de vidéos (addvideo.php), qui est traité par ajout.php jusque là tout va bien !
Lorsqu'une vidéo est ajoutée et que l'insert sql est ok, j'aimerais que :
1-  si la case prévenir le producteur est cochée, on lui envoie un mail
2- Si le champ mail sujet est rempli, on lui envoie un mail.

j'ai donc mis le code sur la page ajout.php.

<?php
include("includes/config.inc.php3");
include("includes/session.inc.php3");
include("includes/header.inc.php3");

if($action == "producteur" && $auth[2] == 1)
  {
    $sql6 = "SELECT * from producteurs, video WHERE nom_producteur='$producteur' AND id='$id'";
$result6 = mysql_query($sql6) or die ('Erreur : '.mysql_error() );
$row=MYSQL_FETCH_ARRAY($result6);

$contenu= $row["contenu"];
mysql_free_result($result);
unset($result);
unset($sql);

$destinataire = "".($row[mail_producteur])."";
$expediteur   = "redaction@ici-tele.com";
$reponse      = $expediteur;

echo "Ce script envoie un mail au format HTML à $destinataire";
$codehtml=
  "<html><body>" .
  "<h1>Bonjour ".$contact."</h1>".
  "La vidéo ".$title." vous concernant est en ligne sur notre site, vous pouvez la <a href=\"/television-locale-pau/video/telechargement.php?nomFichier=".$nom.".mp4&dossier=./\">Télécharger</a>. <br/>
Cette vidéo est également disponible sur <a href=\""
.$youtubelink."\">youtube</a> et <a href=\"".$dailylink."\"> dailymotion</a>." .
  "</body></html>";
mail($destinataire,
     "Email au format HTML",
     $codehtml,
     "From: $expediteur\r\n".
        "Reply-To: $reponse\r\n".
        "Content-Type: text/html; charset=\"iso-8859-1\"\r\n");
     }
 
// On commence par récupérer les champs

if(isset($_POST['nom_sujet']))      $nom_sujet=$_POST['nom_sujet'];
else      $nom_sujet="";

if(isset($_POST['contact']))      $contact=$_POST['contact'];
else      $contact="";

if(isset($_POST['tel']))      $tel=$_POST['tel'];
else      $tel="";

if(isset($_POST['mail']))      $mail=$_POST['mail'];
else      $mail="";

if(isset($_POST['url']))      $url=$_POST['url'];
else      $url="";

if(isset($_POST['adresse']))      $adresse=$_POST['adresse'];
else      $adresse="";


if(!empty($_POST['mail_prod'])){
   $mail_prod=$_POST['mail_prod'];
   $action="producteur";}
else
{$mail_prod="off";
}

if(isset($_POST['title']))      $title=$_POST['title'];
else      $title="";


if(isset($_POST['nom']))      $nom=$_POST['nom'];
else      $nom="";

if(isset($_POST['youtubelink']))      $youtubelink=$_POST['youtubelink'];
else      $youtubelink="";

if(isset($_POST['dailylink']))      $dailylink=$_POST['dailylink'];
else      $dailylink="";

if(isset($_POST['contenu']))      $contenu=$_POST['contenu'];
else      $contenu="";

if(isset($_POST['description']))      $description=$_POST['description'];
else      $description="";

if(isset($_POST['desc_longue']))      $desc_longue=$_POST['desc_longue'];
else      $desc_longue="";

$monthes = array('', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet',
                              'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
   $days = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
$publication=date("r",time());

//if(isset($_POST['publication']))      $publication=$_POST['publication'];
//else      $publication="";


if(!empty($_POST['case'])){
   $etat=$_POST['case'];}
else
{$etat="";
}


if(isset($_POST['producteur']))      $producteur=$_POST['producteur'];
else      $producteur="";

if(isset($_POST['auteur']))      $auteur=$_POST['auteur'];
else      $auteur="";

if(!empty($_POST['priorite'])){
   $priorite=$_POST['priorite'];}
else
{$priorite="";
}
// vérifions que la variable a été transmise
$id_mot = (isset($_POST['nom_mot']))?$_POST['nom_mot']:null;

//echo "Voici les motd cle que vous avez choisi :<br>";
// bouclons sur le tableau qui a été transmis et affichons les valeurs sélectionnées
//if (!empty($nom_mot)) {
 
//  echo array_values($nom_mot) ;
  //echo  $nom_mot ;
 
  foreach($id_mot as $cle => $row){
  //echo $cle;
  //echo count ($nom_mot);
$n = count($id_mot)-1;
if($cle == $n){
     
 $listenom .= $row;
}else {
$listenom .= $row.",";
}
}

 
 
 
  // foreach ($nom_mot as $cle => $val)
//        {
//                echo $val.'<br>';
//        $listenom.=$val.",";
//        }
//}
// On vérifie si les champs sont vides OR empty($publication)
if(empty($title) OR empty($nom) OR empty($contenu) OR empty($etat) OR empty($auteur))
    {
    echo '<font color="red">Attention, tous les champs doivent être remplis !</font>';
    }
 
// Aucun champ n'est vide, on peut enregistrer dans la table
else    
    {
    // on écrit la requête sql $publication
  mysql_query("INSERT INTO video VALUES ('','$title','$nom', '$youtubelink', '$dailylink','$contenu','$description','$desc_longue','$publication','$etat', '$listenom', '$producteur', '$auteur', '$priorite')") or die ('Erreur : '.mysql_error());
 

 $req = "INSERT INTO sujets(id, nom_sujet, contact, tel, mail, url,adresse) VALUES('','$nom_sujet','$contact', '$tel', '$mail','$contenu','$url','$adresse')";
   
     //on insère les informations du formulaire dans la table
    mysql_query($req) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

 $req2 ="SELECT *
  FROM sujets  
  WHERE nom_sujet ='$nom_sujet'"
;
  $result2 = mysql_query($req2) or die(mysql_error());
while($row = mysql_fetch_array($result2))
{
$mail = $row['mail'];
$contact = $row['contact'];
echo '<p><br/><br/></p>';

//destinataire :

$to=$mail;

// sujet :
$subject = "ici-TELE parle de vous";
// message :
$message = "
<html>
<head>
<title>ici-TELE parle de vous</title>
</head>
<body>
<p>Bonjour "
.$contact."</p>
<table>
<tr>

<td>La vidéo ".$title." vous concernant est en ligne sur notre site, vous pouvez la <a href=\"/television-locale-pau/video/telechargement.php?nomFichier=".$nom.".mp4&dossier=./\">Télécharger</a>. <br/>
Cette vidéo est également disponible sur <a href=\""
.$youtubelink."\">youtube</a> et <a href=\"".$dailylink."\"> dailymotion</a>.
</td>
</tr>
</table>
</body>
</html>"
;
// Pour envoyer un mail au format html, vous pouvez configurer le type content-type :
$headers = "MIME-Version: 1.0\r\n";
$headers .= "content-type: text/html; charset=iso-8859-1\r\n";
//$headers .= "From: Rédaction ici-TELE <redaction@ici-tele.com.com>\r\n";
?>
  <form action="<? echo $PHP_SELF ?>" method="post"  name="video">
    <table  border="0" cellspacing="5" cellpadding="0">
      <tr>
        <td colspan="2"><div align="center">
            <br />
            <br />
            <?php // on affiche le résultat pour le visiteur
    echo '<b>Votre vidéo a été ajoutée.</b><br />';
 
     if (mail($to, $subject, $message, $headers))
      //if (mail($to, $subject, $message, $headers))
     {
          echo '<div align=\"center\">Le message a été envoyé au producteur sur ';
      echo $mail;
      echo'</div>';
    }
     else
     {
          echo '<div align=\"center\">Le message n\'a pu être envoyé</div>';
     }

   
   ?>
          </div></td>
      </tr>
      <tr>
      <tr>
        <td colspan="2"><div align="center">
            <h1>Récapitulatif</h1>
          </div></td>
      </tr>
      <tr>
        <td>Titre</td>
        <td><input name="title" type="text" id="title" value="<? echo$title?>"></td>
      </tr>
      <tr>
        <td>Nom du fichier</td>
        <td><input name="nom" type="text" id="nom" value="<? echo$nom?>"></td>
      </tr>
      <tr>
        <td>Lien Youtube</td>
        <td><input name="youtubelink" type="text" id="youtubelink" value="<? echo$youtubelink?>"></td>
      </tr>
      <tr>
        <td>Line Daily motion</td>
        <td><input name="dailylink" type="text" id="dailylink" value="<? echo$dailylink?>"></td>
      </tr>
      <tr>
        <td>Type de contenu</td>
        <td><select name="contenu" size="1" id="contenu">
            <option selected><?echo$contenu?></option>
          </select></td>
      </tr>
      <tr>
        <td>Description</td>
        <td><textarea name="description" id="description" cols="45" rows="5"><? echo$description?></textarea></td>
      </tr>
      <tr>
        <td width="24%">Date de publication</td>
        <td width="76%"><input  name="publication" type="text" id="publication" value="<? echo$publication?>" size="60"></td>
      </tr>
     
      <tr>
        <td>Etat</td>
        <td><?php  if(!empty($case)){
echo"<input name=\"case\" type=\"checkbox\" value=\"$case\" checked=\"checked\" />";}
else
{echo"<input name=\"case\" type=\"checkbox\" value=\"$case\" />";
} ?></td>
      </tr>
      <tr>
        <td>Mots cl&eacute</td>
        <td>
            <input   name="id_mots" type="text" id="id_mots" value="<? echo $listenom;?>" size="60" />
          </td>
      </tr>
      <tr>
        <td>Producteur</td>
        <td><p>
            <input   name="organisateur" type="text" id="organisateur" value="<? echo $organisateur?>" size="60" />
          </p></td>
      </tr>
      <tr>
        <td>Auteur</td>
        <td> <input   name="auteur" type="text" id="auteur" value="<? echo $auteur?>" size="60" /></td>
      </tr>
    </table>
  </form>
 <table width="498" height="32"  border="0" cellpadding="0" cellspacing="5">
  <tr><td> <?php
}
}?>
</td></tr></table>
  </font>
  </p>
</div>
<?php

include("includes/footer.inc.php3");
?>

est il possible de traiter l'envoie des mails par une redirection ???
car du coup, ça donne une page assez lourde et brouillon sad

Hors ligne

#10 14-12-2010 14:48:17

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : syntaxe variable destinataire dans mail()

j'ai des news wink

mon mail est correctement envoyé lorsque je :
1- commente la requête d'insertion SQL sur "sujets" et l'interrogation sur "sujets" (effectivement la deuxième ne sert à rien puisque je peux recuperer la valeur des _POST.).

par contre j'ai une erreur

Warning: Invalid argument supplied for foreach() in ajout.php on line 115

concernant ma boucle mots clé

par contre comment puis-je incrémenter ma table "sujets" ??

mysql_query("INSERT INTO video VALUES ('','$title','$nom', '$youtubelink', '$dailylink','$contenu','$description','$desc_longue','$publication','$etat', '$listenom', '$producteur', '$auteur', '$priorite')") or die ('Erreur : '.mysql_error());
 

 $req = "INSERT INTO sujets(id, nom_sujet, contact, tel, mail, url,adresse) VALUES('','$nom_sujet','$contact', '$tel', '$mail_sujet','$contenu','$url','$adresse')";
   
     //on insère les informations du formulaire dans la table
    mysql_query($req) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

Me retourne

Warning: Invalid argument supplied for foreach() in ajout.php on line 115
Erreur SQL !
Column count doesn't match value count at row 1

Hors ligne

#11 14-12-2010 15:55:19

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : syntaxe variable destinataire dans mail()

Tu nommes 7 colonnes (id, nom_sujet, contact, tel, mail, url,adresse) et tu tentes d'en affecter 8 VALUES('','$nom_sujet','$contact', '$tel', '$mail_sujet','$contenu','$url','$adresse')


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#12 15-12-2010 09:13:21

allhambra
Membre
Lieu : Pau (64)
Inscription : 10-09-2009
Messages : 75
Site Web

Re : syntaxe variable destinataire dans mail()

hmm quelle quiche !!!

merci beaucoup maljuna wink
merci à tous de votre aide ! smile

[résolu]

Dernière modification par allhambra (15-12-2010 10:05:25)

Hors ligne

Pied de page des forums