Probleme envoi mail une seul fois

krustypop Messages postés 14 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 27 mars 2009 - 26 mars 2009 à 16:17
krustypop Messages postés 14 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 27 mars 2009 - 27 mars 2009 à 11:58
Bonjour à tous!

voilà j'ai fait un bout de code qui a pour fonction de controler des seuils et de m'envoyer un mail si ces seuils limites sont atteints. Mon problème est le suivant, à chaque rafraichissement de page il m'envoi un mail, or je voudrais qu'il ne m'en envoi qu'un seul. Mon début d'idée est la suivante, je voudrais mettre le contenu de ma requete sql qui me permet d'avoir mes seuils atteints, dans un variable, de la sauvegarder et de comparer à chaque modification si le contenu est le même.
S'il est le même on envoi pas de mail mais s'il est différent la il m'envoi un mail et un seul. Voici mon bout de code pour vous illustrer tout ca :

$reqseuil= mysql_query("SELECT * FROM printers WHERE nbr <= 1;"); // nbr étant la quantitié dispo
$nbrep= mysql_num_rows($reqseuil);
$commandefaite=false;

while($ligne=mysql_fetch_array($reqseuil))
{
        $contenu .= $ligne[1].' '.$ligne[2].' '.$ligne[3].' '.$ligne[4].' '.$ligne[5].' '.$ligne[6].' '.$ligne[7]."\n";   
}
echo $contenu;
////////////
c'est icic que je bug !
//////////
    if(($nbrep==4)&&($strcompar<>0)
    {               
        ini_set("SMTP","smtp.monsmtp.fr");
        ini_set("sendmail_from","adresse@destintaire.com");
        $to = 'mon.adresse.mail@domaine.com';
        $subject = 'A Commander';
        $msg = "Voici les consommables à commander :\r\n".$contenu1;
        mail($to, $subject, $msg);
        $commandefaire=true;
        echo 'ENVOI OK' ;
    }

Voila si quelqu un pourrai m'aider svp ca serait super gentil !!MERCI d'AVANCE

4 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
27 mars 2009 à 08:12
Salut Krustypop,

Comment est définie $strcompar ?
En supposant que chaque ligne de printers est un consommable d'imprimante, pourquoi attends tu qu'il y ait 4 produits en rupture ?

Pourquoi ne fais tu pas plutôt comme ça :
Tu ajoutes un champ "alert" dans ta table printers :
1 => un email à déjà été envoyé
0 => pas d'email déjà envoyé

Puis dans ton script :
$up = mysql_query("UPDATE printers SET alert=0 WHERE nbr > 1");

$reqseuil = mysql_query("SELECT * FROM printers WHERE nbr <= 1 AND alert=0"); // nbr étant la quantitié dispo

il y a des résultats
  => envoi mail
  => update : alert=1 pour la ligne en cours

Cordialement,

Kohntark -
0
krustypop Messages postés 14 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 27 mars 2009
27 mars 2009 à 10:14
Salut et merci de ta réponse !

je vais testé ça et je te riens au courant!

Un grand merci!
0
krustypop Messages postés 14 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 27 mars 2009
27 mars 2009 à 10:27
Ah et pour le 4 en fait, c'est simplement pour faire une commande regroupé des consommables,car on ne fait pas de commande pour 1 seul conso qui viendrait à manquer.

Cordialement
0
krustypop Messages postés 14 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 27 mars 2009
27 mars 2009 à 11:58
Alors j'ai avancé un peu, mais la je bloque sur l'update pour alert=1 de l'élément courant.
J'ai pensé faire un foreach mais au niveau de la syntaxe, je ne vois pas trop comment faire. Ou peut y a-t-il une solution plus simple à implémenter dans mon code qui est devenu celui-ci:

$upalert = mysql_query("UPDATE printers SET alert=0 WHERE nbr > 1");
$reqseuil= mysql_query("SELECT * FROM printers WHERE nbr <= 1 AND alert=0;");
$nbrep= mysql_num_rows($reqseuil);
$contenu="";

while($ligne=mysql_fetch_array($reqseuil))
{
        $contenu .= $ligne[1].' '.$ligne[2].' '.$ligne[3].' '.$ligne[4].' '.$ligne[5].' '.$ligne[6].' '.$ligne[7]."\n";   
}

    if($nbrep==4)
    {               
        ini_set("SMTP","smtp.monstmp.fr");
        ini_set("sendmail_from","uneadressemail@domaine.com");
        $to = 'monadressemail@domaine.com';
        $subject = 'A Commander';
        $msg = "*********************************************************************************\r\n";
        $msg.= "Voici les consommables a commander :\r\n";
        $msg.= "*********************************************************************************\r\n\n";
        $msg.= $contenu;
        mail($to, $subject, $msg);
       //Peut etre ici un foreach
       // puis ici un update mettant alert=1 pour l'élément courant
        echo '<script type="text/javascript">alert("La limite a été atteinte, un mail avec les références à commander a été envoyé!");</script>';
    }

Voila si tu as une solution kohntark, ou quelqu un d'autres, je suis preneur! Merci d'avance
0
Rejoignez-nous