Problème pour envoyer le resultat d'une requete mysql en mail()

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème pour envoyer le resultat d'une requete mysql en mail()

par dunbar » 07 août 2008, 15:47

N'oublie pas le tag résolu alors :wink:

par neobreiz » 07 août 2008, 14:43

Hello,

Merci à tous, j'ai compris mon erreur... (de débutant)

En faite, j'ai fait ma page php classique, que j'ai intégré ensuite dans ma varaible $message_html pour mon mail. Sans pour autant refaire le code pour l'intégration.... :?

C'est enfin réglé. Merci .

Stef

par dunbar » 06 août 2008, 17:56

Oups.... :oops:

En fait j'ai fait dans un premier temps mon fichier php (comme une page traditionnelle), puis je l'ai intégré dans une structure mail... d'où les double ouverture et fermeture <? ?>...

Bon, je suis un peut perdu du coups...

Allez je repars de zéro, ça sera peut être plus simple...

Merci de m'avoir montré mon erreur.

A bientôt
Au moins tu essaye de le faire toi même sans utiliser un srcipt déjà fait et personellement je trouve ça trés bien :wink:
Ton script final devrait ressembler un truc du genre
<?php
include '../fonctions.php';


    $auth=mysql_query("SELECT * FROM t_lots WHERE etat_lots=\'Libre\'");
    while ( $row = mysql_fetch_array($auth) ) {
    $id=$row[1];
    $total_surf=$row[6]+$row[7];
    $total_prix=$row[11]+$row[12];
    if ($row[7]>14){
    $sd=$row[6]+14;
    } else {
    $sd=$total_surf;
    }

    $res=mysql_query("SELECT * FROM t_residences WHERE id_residences=\'$id\'");
    $result=mysql_fetch_object($res);
    mysql_close();
    $residence=($result->nom_residences);
    $taux=($result->plafond_residences);
    $defisc=round(($sd*$taux*44)/100);
    $taux_loyer=($result->taux_loyer_residences);
    $loyer=round((($total_prix*$taux_loyer)/100)/12);








     //-----------------------------------------------
     //DECLARE LES VARIABLES
     //-----------------------------------------------

    $destinataire      ='[email protected]';
    $email_expediteur  ='[email protected]';
    $email_reply       ='[email protected]';

    $message_texte     ='Bonjour,'."\n\n".'Voici l\'etat des stocks';

    $message_html =   '<html>';
    $message_html .= '<head>';
    $message_html .= '<title>Etat Stocks</title>';
    $message_html .= '</head>';
    $message_html .= '<body>';
    $message_html .= '<table border="1">';
    $message_html .= '<tr>';
    $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Residence&nbsp;&nbsp;</td>';
    $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Bat.&nbsp;&nbsp;</td>';
    $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Niv&nbsp;&nbsp;</td>';
    $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Num.&nbsp;&nbsp;</td>';
    $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Type&nbsp;&nbsp;</td>';
    $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;SH&nbsp;&nbsp;</td>';
    $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;VAR&nbsp;&nbsp;</td>';
    $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Total&nbsp;&nbsp;</td>';
    $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Jardin&nbsp;&nbsp;</td>';
    $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Pkg&nbsp;&nbsp;</td>';
    $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Prix&nbsp;&nbsp;</td>';
    $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;2 Pkgs&nbsp;&nbsp;</td>';
    $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Total&nbsp;&nbsp;</td>';
    $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;F. Notaire&nbsp;&nbsp;</td>';
    $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;SD&nbsp;&nbsp;</td>';
    $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Defisc&nbsp;&nbsp;</td>';
    $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Loyer&nbsp;&nbsp;</td>';
    $message_html .= '</tr>';


    $message_html .= '<td bordercolor="#333333" align="center">'.$residence.'</td>';
    $message_html .= '<td bordercolor="#333333" align="center">'.$row[2].'</td>';
    $message_html .= '<td bordercolor="#333333" align="center">'.$row[3].'</td>';
    $message_html .= '<td bordercolor="#333333" align="center">'.$row[4].'</td>';
    $message_html .= '<td bordercolor="#333333" align="center">'.$row[5].'</td>';
    $message_html .= '<td bordercolor="#333333" align="center">'.$row[6].'</td>';
    $message_html .= '<td bordercolor="#333333" align="center">'.$row[7].'</td>';
    $message_html .= '<td bordercolor="#333333" align="center">'.$total_surf.'</td>';
    $message_html .= '<td bordercolor="#333333" align="center">'.$row[8].'</td>';
    $message_html .= '<td bordercolor="#333333" align="center">'.$row[9].$row[10].'</td>';
    $message_html .= '<td bordercolor="#333333" align="center">'.$row[11].'</td>';
    $message_html .= '<td bordercolor="#333333" align="center">'.$row[12].'</td>';
    $message_html .= '<td bordercolor="#333333" align="center">'.$total_prix.'</td>';
    $message_html .= '<td bordercolor="#333333" align="center">'.$row[13].'</td>';
    $message_html .= '<td bordercolor="#333333" align="center">'.$sd.'</td>';
    $message_html .= '<td bordercolor="#333333" align="center">'.$defisc.'</td>';
    $message_html .= '<td bordercolor="#333333" align="center">'.$loyer.'</td>';
    $message_html .= '</tr>';
    $message_html .= '</table> ';
    $message_html .= '</body>';
    $message_html .= '</html>';


     //-----------------------------------------------
     //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
     //-----------------------------------------------

     $frontiere = '-----=' . md5(uniqid(mt_rand()));

     //-----------------------------------------------
     //HEADERS DU MAIL
     //-----------------------------------------------

     $headers = 'From: "Nom" <'.$email_expediteur.'>'."\n";
     $headers .= 'Return-Path: <'.$email_reply.'>'."\n";
     $headers .= 'MIME-Version: 1.0'."\n";
     $headers .= 'Content-Type: text/html; charset="iso-8859-1"';

     //-----------------------------------------------
     //MESSAGE TEXTE
     //-----------------------------------------------
     $message = 'This is a multi-part message in MIME format.'."\n\n";

     $message .= '--'.$frontiere.'--'."\n";
     $message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n";
     $message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
     $message .= $message_texte."\n\n";

     //-----------------------------------------------
     //MESSAGE HTML
     //-----------------------------------------------
     $message .= '--'.$frontiere.'--'."\n";
     $message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
     $message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
     $message .= $message_html."\n\n";

     $message .= '--'.$frontiere.'--'."\n";

    $sujet = 'Etat des stocks';

     if(mail($destinataire,$sujet,$message_html,$headers))
     {
          echo 'Le mail a été envoyé';
     }
     else
     {
          echo 'Le mail n\'a pu être envoyé';
     }
    }
?>
Ne le recopie pas comme cela parce que j'ai laisser tes erreur mais cela pourrait te donner une idée de la marche a suivre.

par me against the machine » 06 août 2008, 17:49

Oups.... :oops:

En fait j'ai fait dans un premier temps mon fichier php (comme une page traditionnelle), puis je l'ai intégré dans une structure mail... d'où les double ouverture et fermeture <? ?>...

Bon, je suis un peut perdu du coups...

Allez je repars de zéro, ça sera peut être plus simple...

Merci de m'avoir montré mon erreur.

A bientôt
commence par envoyer un email tout simple, après chaque fois complique ton code!!

par neobreiz » 06 août 2008, 17:48

Oups.... :oops:

En fait j'ai fait dans un premier temps mon fichier php (comme une page traditionnelle), puis je l'ai intégré dans une structure mail... d'où les double ouverture et fermeture <? ?>...

Bon, je suis un peut perdu du coups...

Allez je repars de zéro, ça sera peut être plus simple...

Merci de m'avoir montré mon erreur.

A bientôt

par dunbar » 06 août 2008, 17:34

Salut,

Excuse moi mais c'est un peu n'importe quoi comme script :oops:
Pourrais tu déjà nous expliquer ce que tu compte faire ici
$message_html .= '<? connec_db();'; 
    $message_html .= '$auth=mysql_query("SELECT * FROM t_lots WHERE etat_lots=\'Libre\'");'; 
    $message_html .= 'while ( $row = mysql_fetch_array($auth) ) {'; 
    $message_html .= '$id=$row[1];'; 
    $message_html .= '$total_surf=$row[6]+$row[7];'; 
    $message_html .= '$total_prix=$row[11]+$row[12];'; 
    $message_html .= 'if ($row[7]>14){'; 
    $message_html .= '$sd=$row[6]+14;'; 
    $message_html .= '} else {'; 
    $message_html .= '$sd=$total_surf;'; 
    $message_html .= '}'; 
    $message_html .= 'connec_db();'; 
    $message_html .= '$res=mysql_query("SELECT * FROM t_residences WHERE id_residences=\'$id\'");'; 
    $message_html .= '$result=mysql_fetch_object($res);'; 
    $message_html .= 'mysql_close();'; 
    $message_html .= '$residence=($result->nom_residences);'; 
    $message_html .= '$taux=($result->plafond_residences);'; 
    $message_html .= '$defisc=round(($sd*$taux*44)/100);'; 
    $message_html .= '$taux_loyer=($result->taux_loyer_residences);'; 
    $message_html .= '$loyer=round((($total_prix*$taux_loyer)/100)/12);?>'; 
    $message_html .= '<tr bgcolor="<? echo switchcolor();?>">'; 
A mon humble avis :-s tu devrais d'abord faire tes requêtes et récupérer les valeurs de celle-ci pour les placer dasn ton mail
et ici
$message_html .= '<td bordercolor="#333333" align="center"><? echo $residence;?></td>'; 
    $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[2];?></td>'; 
    $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[3];?></td>'; 
    $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[4];?></td>'; 
    $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[5];?></td>'; 
    $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[6];?></td>'; 
    $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[7];?></td>'; 
      $message_html .= '<td bordercolor="#333333" align="center"><? echo $total_surf;?></td>'; 
      $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[8];?></td>'; 
      $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[9];?> et <? echo $row[10];?></td>'; 
      $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[11];?></td>'; 
      $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[12];?></td>'; 
      $message_html .= '<td bordercolor="#333333" align="center"><? echo $total_prix;?></td>'; 
      $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[13];?></td>'; 
      $message_html .= '<td bordercolor="#333333" align="center"><? echo $sd;?></td>'; 
      $message_html .= '<td bordercolor="#333333" align="center"><? echo $defisc;?></td>'; 
      $message_html .= '<td bordercolor="#333333" align="center"><? echo $loyer;?></td>'; 
Tu ouvre et ferme les balises php alors que tu es déjà dans du code php je comprend pas trés bien
il y à encore d'autre erreur mais commence déjà par celle-là
Enfin c'est un conseil et il n'engage que moi.

Re: Problème pour envoyer le resultat d'une requete mysql en

par me against the machine » 06 août 2008, 17:15

Je n'ai pas fais attention au début, c'est n'est pas du php ce code !!!
c'est quoi ça
$message_html .= '<td bordercolor="#333333" align="center"><? echo $defisc;?></td>';
et ça !!!
$message_html .= '<? } mysql_close(); ?> ';
Tu es dans <?php ensuite tu le ferme pas mais tu ouvre encore une autre <? ça se fait pas ça !! à refaire bro !

par neobreiz » 06 août 2008, 17:09

Dans un premier temps, merci pour la rapidité de votre réponse.

Voici l'affichage suite à la modif :
14){$sd=$row[6]+14;} else {$sd=$total_surf;}connec_db();$res=mysql_query("SELECT * FROM t_residences WHERE id_residences='$id'");$result=mysql_fetch_object($res);mysql_close();$residence=($result->nom_residences);$taux=($result->plafond_residences);$defisc=round(($sd*$taux*44)/100);$taux_loyer=($result->taux_loyer_residences);$loyer=round((($total_prix*$taux_loyer)/100)/12);?>
Effectivement, il y a un problème. je vais essayer de trouver. Si quelqu'un a une idée !

Merci

par me against the machine » 06 août 2008, 17:05

enleve
 if(mail($destinataire,$sujet,$message_html,$headers))
     {
          echo 'Le mail a été envoyé';
     }
     else
     {
          echo 'Le mail n\'a pu être envoyé';
     }
et ajoute à sa place:
echo $message_html;

Apparament c'est au niveau de tes requetes SQL

Problème pour envoyer le resultat d'une requete mysql en mai

par neobreiz » 06 août 2008, 16:51

Bonjour à tous,

Je me prends la tête depuis deux jours sur un envois de mail pour nos partenaires.
Le but est de leurs envoyer un mail tous les jours (script php lancer en tache cron à un heure donnée), sur l'état d'un listing de stock.

Le fichier d'envois en le suivant :

Code : Tout sélectionner

<? include '../fonctions.php'; //----------------------------------------------- //DECLARE LES VARIABLES //----------------------------------------------- $destinataire='[email protected]'; $email_expediteur='[email protected]'; $email_reply='[email protected]'; $message_texte='Bonjour,'."\n\n".'Voici l\'etat des stocks'; $message_html = '<html>'; $message_html .= '<head>'; $message_html .= ' <title>Etat Stocks</title>'; $message_html .= '</head>'; $message_html .= '<body>'; $message_html .= '<table border="1">'; $message_html .= '<tr>'; $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Residence&nbsp;&nbsp;</td>'; $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Bat.&nbsp;&nbsp;</td>'; $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Niv&nbsp;&nbsp;</td>'; $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Num.&nbsp;&nbsp;</td>'; $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Type&nbsp;&nbsp;</td>'; $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;SH&nbsp;&nbsp;</td>'; $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;VAR&nbsp;&nbsp;</td>'; $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Total&nbsp;&nbsp;</td>'; $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Jardin&nbsp;&nbsp;</td>'; $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Pkg&nbsp;&nbsp;</td>'; $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Prix&nbsp;&nbsp;</td>'; $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;2 Pkgs&nbsp;&nbsp;</td>'; $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Total&nbsp;&nbsp;</td>'; $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;F. Notaire&nbsp;&nbsp;</td>'; $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;SD&nbsp;&nbsp;</td>'; $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Defisc&nbsp;&nbsp;</td>'; $message_html .= '<td bordercolor="#FFFFFF" bgcolor="#666666" align="center" class="txt1">&nbsp;&nbsp;Loyer&nbsp;&nbsp;</td>'; $message_html .= '</tr>'; $message_html .= '<? connec_db();'; $message_html .= '$auth=mysql_query("SELECT * FROM t_lots WHERE etat_lots=\'Libre\'");'; $message_html .= 'while ( $row = mysql_fetch_array($auth) ) {'; $message_html .= '$id=$row[1];'; $message_html .= '$total_surf=$row[6]+$row[7];'; $message_html .= '$total_prix=$row[11]+$row[12];'; $message_html .= 'if ($row[7]>14){'; $message_html .= '$sd=$row[6]+14;'; $message_html .= '} else {'; $message_html .= '$sd=$total_surf;'; $message_html .= '}'; $message_html .= 'connec_db();'; $message_html .= '$res=mysql_query("SELECT * FROM t_residences WHERE id_residences=\'$id\'");'; $message_html .= '$result=mysql_fetch_object($res);'; $message_html .= 'mysql_close();'; $message_html .= '$residence=($result->nom_residences);'; $message_html .= '$taux=($result->plafond_residences);'; $message_html .= '$defisc=round(($sd*$taux*44)/100);'; $message_html .= '$taux_loyer=($result->taux_loyer_residences);'; $message_html .= '$loyer=round((($total_prix*$taux_loyer)/100)/12);?>'; $message_html .= '<tr bgcolor="<? echo switchcolor();?>">'; $message_html .= '<td bordercolor="#333333" align="center"><? echo $residence;?></td>'; $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[2];?></td>'; $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[3];?></td>'; $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[4];?></td>'; $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[5];?></td>'; $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[6];?></td>'; $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[7];?></td>'; $message_html .= '<td bordercolor="#333333" align="center"><? echo $total_surf;?></td>'; $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[8];?></td>'; $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[9];?> et <? echo $row[10];?></td>'; $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[11];?></td>'; $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[12];?></td>'; $message_html .= '<td bordercolor="#333333" align="center"><? echo $total_prix;?></td>'; $message_html .= '<td bordercolor="#333333" align="center"><? echo $row[13];?></td>'; $message_html .= '<td bordercolor="#333333" align="center"><? echo $sd;?></td>'; $message_html .= '<td bordercolor="#333333" align="center"><? echo $defisc;?></td>'; $message_html .= '<td bordercolor="#333333" align="center"><? echo $loyer;?></td>'; $message_html .= '</tr>'; $message_html .= '<? } mysql_close(); ?> '; $message_html .= '</table> '; $message_html .= '</body>'; $message_html .= '</html>'; //----------------------------------------------- //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML //----------------------------------------------- $frontiere = '-----=' . md5(uniqid(mt_rand())); //----------------------------------------------- //HEADERS DU MAIL //----------------------------------------------- $headers = 'From: "Nom" <'.$email_expediteur.'>'."\n"; $headers .= 'Return-Path: <'.$email_reply.'>'."\n"; $headers .= 'MIME-Version: 1.0'."\n"; $headers .= 'Content-Type: text/html; charset="iso-8859-1"'; //----------------------------------------------- //MESSAGE TEXTE //----------------------------------------------- $message = 'This is a multi-part message in MIME format.'."\n\n"; $message .= '--'.$frontiere.'--'."\n"; $message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n"; $message .= 'Content-Transfer-Encoding: 8bit'."\n\n"; $message .= $message_texte."\n\n"; //----------------------------------------------- //MESSAGE HTML //----------------------------------------------- $message .= '--'.$frontiere.'--'."\n"; $message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n"; $message .= 'Content-Transfer-Encoding: 8bit'."\n\n"; $message .= $message_html."\n\n"; $message .= '--'.$frontiere.'--'."\n"; $sujet = 'Etat des stocks'; if(mail($destinataire,$sujet,$message_html,$headers)) { echo 'Le mail a été envoyé'; } else { echo 'Le mail n\'a pu être envoyé'; } ?>
Le mail que je recois en test est un liting vide avec juste l'entete du tableau et la ligne du dessous vide.

J'ai sûrement fait une boulette, mais d'une étant débutant et de deux, n'ayant plus assez de recule, je ne trouve pas mon erreur.

Merci pour votre aide.

Stephane