8722 sujets

Développement web côté serveur, CMS

Bonjour,

Désolé j'ai eu du mal à trouver un titre pour mon post. Smiley sweatdrop

Bon!J'explique.
J'ai 100 utilisateurs dans la base de données. Je voudrais envoyer un mail à tous les utilisateurs, mais je les envoient par tranche de 25 utilisateurs pour éviter que le traitement soit trop long.

J'ai un champ sent dans la base, valeur par défaut : false. Ce champ se met à true si l'utilisateur a déjà reçu un mail et reste false si non.



function send_email(){
$get_user = mysql_query("SELECT * FROM table_user ORDER BY table_user.guid ASC LIMIT 25");
if($get_user[0]){
foreach($get_user as $get_one){
if($get_one->sent == false){
$send_it = mail($get_one->email, 'Mon Sujet', 'Bonjour, je suis le contenu');
}
if($send_it){
mysql_query("UPDATE table_user SET sent = true WHERE guid=".$get_one->guid);
}
}
}
}


J'exécute cette fonction jusqu'à l'arrivée de 100 utilisateurs. Arrivé à 100 utilisateurs, la fonction ne s'exécute plus après, sauf que, moi je voudrais qu'il répète son travail et revient aux premier utilisateur, mais ces utilisateur ont déjà la valeur sent à true.

Je sais pas si vous comprenez l'explication. Si quelqu'un a une idée, une fonction, ..

Merci et bonne journée.
Hello Smiley smile

si j'ai bien compris... tu met ce champs dans les user à true.. donc ils ont reçu le premier email.

mais ce que tu veux c'est que quadn tu fais un autre email ce champs repasse à false...

donc il te faut une table sql de gestion

id_mail
id_user

quand tu envoi ton mail tu met à jour cette table et c'est sur celle là en jointure que tu vérifie si ton user a déjà reçu LE mail que tu es en train d'envoyer...
La solution de pchlj est la plus propre, mais sinon, il te suffit de faire un UPDATE au lancement d'un nouveau mail qui remet tout le monde à false ("UPDATE table_user SET sent = false")