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

Petit nouveau ! | 6 Messages

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

Eléphanteau du PHP | 18 Messages

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

Petit nouveau ! | 6 Messages

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

Eléphanteau du PHP | 18 Messages

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 !

ViPHP
ViPHP | 2291 Messages

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.

Petit nouveau ! | 6 Messages

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

Eléphanteau du PHP | 18 Messages

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!!

ViPHP
ViPHP | 2291 Messages

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.

Petit nouveau ! | 6 Messages

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

ViPHP
ViPHP | 2291 Messages

07 août 2008, 15:47

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