(Oups, désolé pour le précédent forum... mais j'ai quand même cherché le bouton "modifier"...)
Bonjour,
Alors voilà l'idée du truc ;
1 - on vérifie que la news n'a pas déjà été envoyé à la personne (on cherche dans le champs "envoi" si on trouve ou non le numéro de la news).
2 - si on ne le trouve pas, alors on peut envoyer la news.
3 - une fois l'envoi de la newsletter à chaque adresse email valide (à qui la newsletter n'a pas encore été envoyée...), on met à jour la base pour dire que justement on vient de le faire.
La contrainte, c'est que je ne veux pas effacer les numéros des newsletter précédentes, je veux qu'elles s'ajoutent à la suite pour pouvoir faire des stats...
J'ai bien un script mais ça bug quelque part et comme je suis encore un peu novice, si quelqu'un voulait bien jetter un oeil à mon problème...
Voilà à peu près à quoi ça ressemble :
<?php
$id = $_POST['id']; //récupération de l'identifiant de la news à poster
// ici j'ai tout mon petit script de de newsletter (mise en forme)
// voilà le passage qui bloque :
$sql = "SELECT * FROM newsletter2";
$req = mysql_query($sql, $cnx) or die(mysql_error());
while($res = mysql_fetch_object($req)){
$dest=explode(',', $res->envoi); //récupération du champs dans lequel est stocké les identifiants de news déjà envoyé
foreach ($dest as $valeur){
if(eregi($id, $valeur)){ // vérification que l'ID de cette news n'est pas déjà inscrit
// on sélectionne tous les emails qui n'ont pas reçu la newsletter pour cette news-là
$select = "SELECT email FROM newsletter2 WHERE envoi='$id'";
$result = mysql_query($select, $cnx) or die(mysql_error());
$nbenreg=mysql_affected_rows();
$nbcols=mysql_num_fields($result);
$maxcol=$nbcols-1;
$maxenreg=$nbenreg-1;
$tabdonnee = array();
reset($tabdonnee);
while($ligne = mysql_fetch_array($result))
{
$tabdonnee[] = $ligne;
}
//boucle de transmission*******************************
//à tous ceux qui ont un email dans la base de données
$id = $res->envoi.$id.","; //récupération du champs 'envoi' avec tous les numéros d'identifiant de news auquel on ajoute une virgule à la fin
$x=0;
while ($x<$nbenreg)
{
$email=$tabdonnee[$x]['email'];
if (mail($email,$objet,$msg,$headers)) {//envoi de la newsletter
$req = mysql_query("UPDATE newsletter2 SET envoi='$id' WHERE email='$email'", $cnx) or die(mysql_error()); // mise à jour de la base de donnée, c'est à dire ajout à la fin de la ligne 'envoi' l'identifiant de cette news-là
header("Location:envoi.php?erreur=sendok") ;
}
else
{
header("Location:../../error.php?erreur=sendko") ;
}
$x++;
}}}}
;?>
Voilà, si quelqu'un a une piste, je suis pour, merci d'avance...