Requète UPDATE
Résolu/Fermé
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
-
6 févr. 2018 à 23:22
LaChaux78 Messages postés 583 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 14 janvier 2025 - 13 févr. 2018 à 16:59
LaChaux78 Messages postés 583 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 14 janvier 2025 - 13 févr. 2018 à 16:59
A voir également:
- Requète UPDATE
- Windows update 0x80070643 - Accueil - Windows
- Windows update bloqué - Guide
- Asus live update - Télécharger - Utilitaires
- Winget update - Guide
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
19 réponses
jordane45
Messages postés
38453
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mars 2025
4 740
6 févr. 2018 à 23:26
6 févr. 2018 à 23:26
Bonjour
Ton where ne sert à rien.
Par contre... Tu dois mettre ça dans une tâche cron exécutée le 1e r janvier.
Ton where ne sert à rien.
Par contre... Tu dois mettre ça dans une tâche cron exécutée le 1e r janvier.
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
7 févr. 2018 à 20:32
7 févr. 2018 à 20:32
Bonjour,
J'ai créé la tache CRON pour demain je vais voir si c'est bon. Par contre je me pose une question, étant donné que j'ai créé deux taches CRON qui font appel au même chemin absolu, il risque pas d'avoir un conflit en fait?
Merci
J'ai créé la tache CRON pour demain je vais voir si c'est bon. Par contre je me pose une question, étant donné que j'ai créé deux taches CRON qui font appel au même chemin absolu, il risque pas d'avoir un conflit en fait?
Merci
jordane45
Messages postés
38453
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mars 2025
4 740
7 févr. 2018 à 21:01
7 févr. 2018 à 21:01
Tu as créés 2 scripts différents bien-sûr ?!
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
7 févr. 2018 à 21:19
7 févr. 2018 à 21:19
oui mais c'est dans la même page.
jordane45
Messages postés
38453
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mars 2025
4 740
8 févr. 2018 à 03:50
8 févr. 2018 à 03:50
Pas possible
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
8 févr. 2018 à 07:00
8 févr. 2018 à 07:00
Bonjour,
Ok c'est ce qui me paraissait pas normal. Mais alors créé une page uniquement pour une requète c'est dommage. Pouvons nous pas faire une requète UPDATE avec une clause WHERE avec une date définie?
Je te remercie.
Ok c'est ce qui me paraissait pas normal. Mais alors créé une page uniquement pour une requète c'est dommage. Pouvons nous pas faire une requète UPDATE avec une clause WHERE avec une date définie?
Je te remercie.
jordane45
Messages postés
38453
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mars 2025
4 740
8 févr. 2018 à 07:50
8 févr. 2018 à 07:50
Pas de clause where
Mais plutot un if en php pour tester la date du jour
Si on est le premier janvier alors je fais la requête d'update
Mais plutot un if en php pour tester la date du jour
Si on est le premier janvier alors je fais la requête d'update
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
8 févr. 2018 à 19:33
8 févr. 2018 à 19:33
Bonjour,
j'ai fait cette condition et testé mais cela ne fonctionne pas mon champ mail reste toujours à 1.
Merci.
j'ai fait cette condition et testé mais cela ne fonctionne pas mon champ mail reste toujours à 1.
Merci.
$DateJour = date("d/m"); //remettre le champ "mail" à 0 au 1er Janvier de chaque année function set_mail_changed($mail) { if ($DateJour = '08/02') { $sql = "UPDATE cdc_personnes SET mail = 0"; $datas = array($mail); return executeQuery($sql,$datas); } }
jordane45
Messages postés
38453
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mars 2025
4 740
8 févr. 2018 à 19:48
8 févr. 2018 à 19:48
Dans un if il faut 2 =
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
9 févr. 2018 à 00:05
9 févr. 2018 à 00:05
Bonjour,
Toujours pareil sans résultat, je n'arrive pas à comprendre pourquoi le champ mail ne passe pas à 0.
Merci.
Toujours pareil sans résultat, je n'arrive pas à comprendre pourquoi le champ mail ne passe pas à 0.
Merci.
$DateJour = date("d/m"); //remettre le champ "mail" à 0 au 1er Janvier de chaque année function set_mail_changed($mail) { if ($DateJour == '09/02') { $sql = "UPDATE cdc_personnes SET mail = 0"; $datas = array($mail); return executeQuery($sql,$datas); } }
jordane45
Messages postés
38453
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mars 2025
4 740
9 févr. 2018 à 07:00
9 févr. 2018 à 07:00
Et tu l'appelles où ta fonction ?
jordane45
Messages postés
38453
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mars 2025
4 740
9 févr. 2018 à 08:10
9 févr. 2018 à 08:10
La fonction ( à placer avec les autres fonctions de ton code)
Son appel dans ton script ( à placer au début de ton script.. )
function set_mail_changed() { $sql = "UPDATE cdc_personnes SET mail = 0"; $datas = NULL; return executeQuery($sql,$datas); }
Son appel dans ton script ( à placer au début de ton script.. )
$DateJour = date("d/m"); //remettre le champ "mail" à 0 au 1er Janvier de chaque année de TOUS les mails if ($DateJour == '09/02') { set_mail_changed(); }
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
9 févr. 2018 à 15:55
9 févr. 2018 à 15:55
Bonjour,
En fait j'avais oublié d'appeler la fonction. J'ai de nouveau tout testé, tout fonctionne très bien.
Encore tout mes remerciements.
Cordialement.
En fait j'avais oublié d'appeler la fonction. J'ai de nouveau tout testé, tout fonctionne très bien.
Encore tout mes remerciements.
Cordialement.
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
10 févr. 2018 à 09:03
10 févr. 2018 à 09:03
Bonjour, Je mes suis permis de ré ouvrir ce post, car je viens de m'apercevoir que la fonction "set_mail_changed" ne joue pas son rôle, pourtant après un test ça m'avais l'air tout ok, je ne comprends pas ce qui c'est passé.
Je te remercie
Je te remercie
//Met le champ "mail" à 1 function set_mail_envoye($email) { $sql = "UPDATE cdc_personnes SET mail = 1 WHERE email = ?"; $datas = array($email); return executeQuery($sql,$datas); } //Met le champ "mail" à 0 function set_mail_changed() { $sql = "UPDATE cdc_personnes SET mail = 0"; $datas = NULL; return executeQuery($sql,$datas); } //-----------------------------------------------------------------------------// // Début de ton script //-----------------------------------------------------------------------------// $quant = date("z"); // Quantième du jour dans l'année. NB: le 01/09/AAAAA est le 245è jour de l'année // Si l'on est avant le 01/09, l'année d'adhésion ($aadh) est l'année précédente, sinon c'est l'année courante $aadh = $quant < 245 ? date("Y")-1 : date("Y"); $DateJour = date("d/m"); $mois = date('m'); $jour = date('d'); //récupère la liste des anniversaires $anniv = get_Anniv($aadh,$mois,$jour); //récupère resp $resp = get_configsite_resp(); //si il y a des données à traiter if(!empty($anniv)) { while ($donnees = $anniv->fetch()) { $email = $donnees->email; $prenom = $donnees->prenom; sendMailAnniv($email,$prenom,$resp); //envoie le mail set_mail_envoye($email); // met le champ "mail" à 1 une fois le mail envoyé au destinataire } } //remettre le champ "mail" à 0 au 1er Janvier de chaque année de TOUS les mails if ($DateJour == '10/02') { set_mail_changed(); }
jordane45
Messages postés
38453
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mars 2025
4 740
10 févr. 2018 à 13:24
10 févr. 2018 à 13:24
1 - Je t'ai indiqué que tu devais faire appel à ce script AVANT le reste
2 - Peux tu nous montrer ton code COMPLET
3 - As tu essayé de lancer ce script à la main (sans passer par une cron ) pour voir si il ne t'afficherai pas des messages d'erreur ?
2 - Peux tu nous montrer ton code COMPLET
3 - As tu essayé de lancer ce script à la main (sans passer par une cron ) pour voir si il ne t'afficherai pas des messages d'erreur ?
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
12 févr. 2018 à 10:00
12 févr. 2018 à 10:00
Bonjour,
Je me suis donné deux jours pour analyser mon problème . En fait j'ai lancé le script à la main le script se lance bien le champ mail passe bien à 0 donc aucune erreur ne s'affiche.
Et lorsque ma tache CRON se lance avec un envoi de mail pour souhaiter un anniversaire le script se lance également donc le champ mail passe à 0, sinon rien ne se passe.
La tache CRON est programmé pour se lancé tous les jours à une heure précise.
Voici ma page complète.
Merci
Je me suis donné deux jours pour analyser mon problème . En fait j'ai lancé le script à la main le script se lance bien le champ mail passe bien à 0 donc aucune erreur ne s'affiche.
Et lorsque ma tache CRON se lance avec un envoi de mail pour souhaiter un anniversaire le script se lance également donc le champ mail passe à 0, sinon rien ne se passe.
La tache CRON est programmé pour se lancé tous les jours à une heure précise.
Voici ma page complète.
Merci
<?php //-----------------------------------------------------------------------------// //Activation de l'affichage des erreurs PHP // A placer AU DEBUT de tes scripts... donc AVANT les includes ! //-----------------------------------------------------------------------------// // Afficher les erreurs à l'écran ini_set('display_errors', 1); // Afficher les erreurs et les avertissements error_reporting(e_all); // Enregistrer les erreurs dans un fichier de log ini_set('log_errors', 1); // Nom du fichier qui enregistre les logs (attention aux droits à l'écriture) ini_set('error_log', dirname(__file__) . '/log_error_php.txt'); //-----------------------------------------------------------------------------// //connexion à la bdd //-----------------------------------------------------------------------------// require_once("init.php"); //-----------------------------------------------------------------------------// //FONCTIONS //-----------------------------------------------------------------------------// // Fonction qui sert à faire les requêtes SQL // Contient déjà le try/catch function executeQuery($sql,$datas = NULL) { global $bdd; // permet d'utiliser la variable $bdd dans la fonction //exécution de la requête try { $requete = $bdd->prepare($sql); $requete->execute($datas); } catch(Exception $e) { // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($aadh,$mois,$jour); exit(0); // en cas d'erreur.. arrête le script ! } return $requete; } function get_Anniv($aadh,$mois,$jour) { $sql = "SELECT nom, prenom, dnaiss, email, mail FROM cdc_personnes P LEFT JOIN cdc_adherer A ON P.idpers = A.idpers WHERE mail = 0 AND annee = ? AND MONTH(dnaiss) = ? AND DAY(dnaiss) = ?"; return executeQuery($sql,array($aadh,$mois,$jour)); } function get_configsite_resp() { $sql = "SELECT * FROM cdc_configsite WHERE clef = ? "; $result = executeQuery($sql,array('resp')); $reponse = $result->fetch(); return !empty($reponse) ? $reponse->valeur : ''; } function sendMailAnniv($email,$prenom,$resp) { // Adresse email des destinataires $destinataire = $email; // Titre de l'email $sujet = 'Joyeux Anniversaire'; // Contenu du message de l'email $message = '<html>'; $message .= '<body><p>Bonjour '.$prenom.'<br/>'; $message .= 'Je te souhaite un bon anniversaire...<br/>'; $message .= 'A bientôt !<br/>'; $message .= ''. $resp . '<br/>'; $message .= '</html>'; // Pour envoyer un email HTML, l'en-tête Content-type doit être défini $headers = 'MIME-Version: 1.0'."\r\n"; $headers .= 'Content-type: text/html; charset=utf-8'."\r\n"; $headers .= 'From:"cliquedecruet"<cliquede@60gp.ovh.net>'."\n"; // Fonction principale qui envoi l'email if(!mail($destinataire, $sujet, $message, $headers)) { echo " Erreur lors de l'envoie du mail !"; } } //Met le champ "mail" à 1 function set_mail_envoye($email) { $sql = "UPDATE cdc_personnes SET mail = 1 WHERE email = ?"; $datas = array($email); return executeQuery($sql,$datas); } //Met le champ "mail" à 0 function set_mail_changed() { $sql = "UPDATE cdc_personnes SET mail = 0"; $datas = NULL; return executeQuery($sql,$datas); } //-----------------------------------------------------------------------------// // Début de ton script //-----------------------------------------------------------------------------// $DateJour = date("d/m"); //remettre le champ "mail" à 0 au 1er Janvier de chaque année de TOUS les mails if ($DateJour == '12/02') { set_mail_changed(); } $quant = date("z"); // Quantième du jour dans l'année. NB: le 01/09/AAAAA est le 245è jour de l'année // Si l'on est avant le 01/09, l'année d'adhésion ($aadh) est l'année précédente, sinon c'est l'année courante $aadh = $quant < 245 ? date("Y")-1 : date("Y"); $mois = date('m'); $jour = date('d'); //récupère la liste des anniversaires $anniv = get_Anniv($aadh,$mois,$jour); //récupère resp $resp = get_configsite_resp(); //si il y a des données à traiter if(!empty($anniv)) { while ($donnees = $anniv->fetch()) { $email = $donnees->email; $prenom = $donnees->prenom; sendMailAnniv($email,$prenom,$resp); //envoie le mail set_mail_envoye($email); // met le champ "mail" à 1 une fois le mail envoyé au destinataire } } ?>
jordane45
Messages postés
38453
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mars 2025
4 740
12 févr. 2018 à 10:41
12 févr. 2018 à 10:41
Essaye ça ( à la main) et dis nous ce que ça donne
<?php //-----------------------------------------------------------------------------// //Activation de l'affichage des erreurs PHP // A placer AU DEBUT de tes scripts... donc AVANT les includes ! //-----------------------------------------------------------------------------// // Afficher les erreurs à l'écran ini_set('display_errors', 1); // Afficher les erreurs et les avertissements error_reporting(E_ALL); // Enregistrer les erreurs dans un fichier de log ini_set('log_errors', 1); // Nom du fichier qui enregistre les logs (attention aux droits à l'écriture) ini_set('error_log', dirname(__file__) . '/log_error_php.txt'); //-----------------------------------------------------------------------------// //connexion à la bdd //-----------------------------------------------------------------------------// require_once("init.php"); //-----------------------------------------------------------------------------// //FONCTIONS //-----------------------------------------------------------------------------// /** * Fonction pour faire du debug... */ function debug($var,$title=''){ echo "<pre><b>".$title."</b><br>"; print_r($var); echo "</pre>"; } // Fonction qui sert à faire les requêtes SQL // Contient déjà le try/catch function executeQuery($sql,$datas = NULL) { global $bdd; // permet d'utiliser la variable $bdd dans la fonction //exécution de la requête try { $requete = $bdd->prepare($sql); $requete->execute($datas); } catch(Exception $e) { // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($aadh,$mois,$jour); exit(0); // en cas d'erreur.. arrête le script ! } return $requete; } function get_Anniv($aadh,$mois,$jour) { $sql = "SELECT nom, prenom, dnaiss, email, mail FROM cdc_personnes P LEFT JOIN cdc_adherer A ON P.idpers = A.idpers WHERE mail = 0 AND annee = ? AND MONTH(dnaiss) = ? AND DAY(dnaiss) = ?"; $result = executeQuery($sql,array($aadh,$mois,$jour)); debug($result,'get_Anniv'); return $result; } function get_configsite_resp() { $sql = "SELECT * FROM cdc_configsite WHERE clef = ? "; $result = executeQuery($sql,array('resp')); $reponse = $result->fetch(); $result = !empty($reponse) ? $reponse->valeur : ''; debug($result,'get_configsite_resp'); return $result; } function sendMailAnniv($destinataire,$prenom,$resp) { // Titre de l'email $sujet = 'Joyeux Anniversaire'; // Contenu du message de l'email $message = '<html>'; $message .= '<body><p>Bonjour '.$prenom.'<br/>'; $message .= 'Je te souhaite un bon anniversaire...<br/>'; $message .= 'A bientôt !<br/>'; $message .= ''. $resp . '<br/>'; $message .= '</html>'; // Pour envoyer un email HTML, l'en-tête Content-type doit être défini $headers = 'MIME-Version: 1.0'."\r\n"; $headers .= 'Content-type: text/html; charset=utf-8'."\r\n"; $headers .= 'From:"cliquedecruet"<cliquede@60gp.ovh.net>'."\n"; // Fonction principale qui envoi l'email if(!mail($destinataire, $sujet, $message, $headers)) { echo " Erreur lors de l'envoie du mail !"; }else{ debug(" Mail envoyé à : " . $destinataire,'sendMailAnniv'); } } //Met le champ "mail" à 1 function set_mail_envoye($email) { $sql = "UPDATE cdc_personnes SET mail = 1 WHERE email = ?"; $datas = array($email); $result = executeQuery($sql,$datas); debug($result,'set_mail_envoye'); return $result; } //Met le champ "mail" à 0 function set_mail_changed() { $sql = "UPDATE cdc_personnes SET mail = 0"; $datas = NULL; $result = executeQuery($sql,$datas); debug($result,'set_mail_changed'); return $result; } //-----------------------------------------------------------------------------// // Début de ton script //-----------------------------------------------------------------------------// $DateJour = date("d/m"); //remettre le champ "mail" à 0 au 1er Janvier de chaque année de TOUS les mails if ($DateJour == '12/02') { echo " Réinitialisation des champs MAIL ..."; set_mail_changed(); } else { echo "Pas besoin de réinitialiser les champs mail .." } $quant = date("z"); // Quantième du jour dans l'année. NB: le 01/09/AAAAA est le 245è jour de l'année // Si l'on est avant le 01/09, l'année d'adhésion ($aadh) est l'année précédente, sinon c'est l'année courante $aadh = $quant < 245 ? date("Y")-1 : date("Y"); $mois = date('m'); $jour = date('d'); //récupère la liste des anniversaires $anniv = get_Anniv($aadh,$mois,$jour); //récupère resp $resp = get_configsite_resp(); //si il y a des données à traiter if(!empty($anniv)) { while ($donnees = $anniv->fetch()) { $email = $donnees->email; $prenom = $donnees->prenom; sendMailAnniv($email,$prenom,$resp); //envoie le mail set_mail_envoye($email); // met le champ "mail" à 1 une fois le mail envoyé au destinataire } }else{ echo " Aucune donnée à traiter ce jour.... "; } ?>
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
12 févr. 2018 à 11:22
12 févr. 2018 à 11:22
Il n'y a aucune erreur qui est retournée...absolument rien.
jordane45
Messages postés
38453
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mars 2025
4 740
12 févr. 2018 à 12:47
12 févr. 2018 à 12:47
pas d'erreur....... ok ......
mais heu... y'a bien des choses qui s'affichent non ??!!
mais heu... y'a bien des choses qui s'affichent non ??!!
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
12 févr. 2018 à 14:07
12 févr. 2018 à 14:07
malheureusement non rien, je te joint une capture avec l'URL pour te montrer.
https://www.cjoint.com/c/HBmnfOXBpiL
https://www.cjoint.com/c/HBmnfOXBpiL
jordane45
Messages postés
38453
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mars 2025
4 740
Modifié le 12 févr. 2018 à 16:56
Modifié le 12 févr. 2018 à 16:56
ton fichier est bien encodé en UTF8 sans bom ?
Tu es en local ou sur un serveur ?
Quelle est l'url que tu tapes pour le lancer manuellement ?
Peux tu tester ça :
Tu es en local ou sur un serveur ?
Quelle est l'url que tu tapes pour le lancer manuellement ?
Peux tu tester ça :
<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); // Enregistrer les erreurs dans un fichier de log ini_set('log_errors', 1); // Nom du fichier qui enregistre les logs (attention aux droits à l'écriture) ini_set('error_log', dirname(__file__) . '/log_error_php.txt'); //-----------------------------------------------------------------------------// //connexion à la bdd //-----------------------------------------------------------------------------// require_once("init.php"); //-----------------------------------------------------------------------------// //FONCTIONS //-----------------------------------------------------------------------------// /** * Fonction pour faire du xdebug... */ function xdebug($var,$title=''){ echo "<pre><b>".$title."</b><br>"; print_r($var); echo "</pre>"; } // Fonction qui sert à faire les requêtes SQL // Contient déjà le try/catch function executeQuery($sql,$datas = NULL) { global $bdd; // permet d'utiliser la variable $bdd dans la fonction //exécution de la requête try { $requete = $bdd->prepare($sql); $requete->execute($datas); } catch(Exception $e) { // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($aadh,$mois,$jour); exit(0); // en cas d'erreur.. arrête le script ! } return $requete; } function get_Anniv($aadh,$mois,$jour) { $sql = "SELECT nom, prenom, dnaiss, email, mail FROM cdc_personnes P LEFT JOIN cdc_adherer A ON P.idpers = A.idpers WHERE mail = 0 AND annee = ? AND MONTH(dnaiss) = ? AND DAY(dnaiss) = ?"; $result = executeQuery($sql,array($aadh,$mois,$jour)); xdebug($result,'get_Anniv'); return $result; } function get_configsite_resp() { $sql = "SELECT * FROM cdc_configsite WHERE clef = ? "; $result = executeQuery($sql,array('resp')); $reponse = $result->fetch(); $result = !empty($reponse) ? $reponse->valeur : ''; xdebug($result,'get_configsite_resp'); return $result; } function sendMailAnniv($destinataire,$prenom,$resp) { // Titre de l'email $sujet = 'Joyeux Anniversaire'; // Contenu du message de l'email $message = '<html>'; $message .= '<body><p>Bonjour '.$prenom.'<br/>'; $message .= 'Je te souhaite un bon anniversaire...<br/>'; $message .= 'A bientôt !<br/>'; $message .= ''. $resp . '<br/>'; $message .= '</html>'; // Pour envoyer un email HTML, l'en-tête Content-type doit être défini $headers = 'MIME-Version: 1.0'."\r\n"; $headers .= 'Content-type: text/html; charset=utf-8'."\r\n"; $headers .= 'From:"cliquedecruet"<cliquede@60gp.ovh.net>'."\n"; // Fonction principale qui envoi l'email if(!mail($destinataire, $sujet, $message, $headers)) { echo " Erreur lors de l'envoie du mail !"; }else{ xdebug(" Mail envoyé à : " . $destinataire,'sendMailAnniv'); } } //Met le champ "mail" à 1 function set_mail_envoye($email) { $sql = "UPDATE cdc_personnes SET mail = 1 WHERE email = ?"; $datas = array($email); $result = executeQuery($sql,$datas); xdebug($result,'set_mail_envoye'); return $result; } //Met le champ "mail" à 0 function set_mail_changed() { $sql = "UPDATE cdc_personnes SET mail = 0"; $datas = NULL; $result = executeQuery($sql,$datas); xdebug($result,'set_mail_changed'); return $result; } //-----------------------------------------------------------------------------// // Début de ton script //-----------------------------------------------------------------------------// echo "<br> DEBUT DU SCRIPT -------- >> " . date('Y-m-d H:i:s') . '<br>'; $DateJour = date("d/m"); //remettre le champ "mail" à 0 au 1er Janvier de chaque année de TOUS les mails if ($DateJour == '12/02') { echo " Réinitialisation des champs MAIL ..."; set_mail_changed(); } else { echo "Pas besoin de réinitialiser les champs mail .."; } $quant = date("z"); // Quantième du jour dans l'année. NB: le 01/09/AAAAA est le 245è jour de l'année // Si l'on est avant le 01/09, l'année d'adhésion ($aadh) est l'année précédente, sinon c'est l'année courante $aadh = $quant < 245 ? date("Y")-1 : date("Y"); $mois = date('m'); $jour = date('d'); //récupère la liste des anniversaires $anniv = get_Anniv($aadh,$mois,$jour); //récupère resp $resp = get_configsite_resp(); //si il y a des données à traiter if(!empty($anniv)) { while ($donnees = $anniv->fetch()) { $email = $donnees->email; $prenom = $donnees->prenom; sendMailAnniv($email,$prenom,$resp); //envoie le mail set_mail_envoye($email); // met le champ "mail" à 1 une fois le mail envoyé au destinataire } }else{ echo " Aucune donnée à traiter ce jour.... "; } ?>
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
12 févr. 2018 à 16:44
12 févr. 2018 à 16:44
-oui l'encodage est bien en utf8 sans bom
-je suis sur mon serveur
-url pour lancer le script est www.cliquedecruet.fr/libs/envoi_anniv.php
toujours pareil avec ton nouveau test...
-je suis sur mon serveur
-url pour lancer le script est www.cliquedecruet.fr/libs/envoi_anniv.php
toujours pareil avec ton nouveau test...
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
12 févr. 2018 à 16:49
12 févr. 2018 à 16:49
là je viens de refaire un test juste pour une info...
J'ai remis le champ mail à 1 j'ai ensuite lancé l'url www.cliquedecruet.fr/libs/envoi_anniv.php et le champ mail est passé à 0 avec ton script initial.
J'ai remis le champ mail à 1 j'ai ensuite lancé l'url www.cliquedecruet.fr/libs/envoi_anniv.php et le champ mail est passé à 0 avec ton script initial.
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
12 févr. 2018 à 17:49
12 févr. 2018 à 17:49
oui je ne sais pas là je viens de réessayer et voilà le résultat..
DEBUT DU SCRIPT -------- >> 2018-02-12 17:47:50 Réinitialisation des champs MAIL ... set_mail_changed PDOStatement Object ( [queryString] => UPDATE cdc_personnes SET mail = 0 ) get_Anniv PDOStatement Object ( [queryString] => SELECT nom, prenom, dnaiss, email, mail FROM cdc_personnes P LEFT JOIN cdc_adherer A ON P.idpers = A.idpers WHERE mail = 0 AND annee = ? AND MONTH(dnaiss) = ? AND DAY(dnaiss) = ? ) get_configsite_resp Mon nom et Prénom
jordane45
Messages postés
38453
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mars 2025
4 740
12 févr. 2018 à 19:20
12 févr. 2018 à 19:20
ben donc c'est bon non ?
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
12 févr. 2018 à 19:44
12 févr. 2018 à 19:44
Là je viens de mettre la $dateJour au 13/02 j'ai basculé le tout sur mon serveur et j'ai mis dans PhpMyadmin manuellement mon champ mail à 1 donc à priori demain ce champ devrais passer à 0. Je te redis demain.
Merci.
Bonne soirée.
Merci.
Bonne soirée.
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
13 févr. 2018 à 09:39
13 févr. 2018 à 09:39
Bonjour,
Hélas ce matin le champ mail est resté à 1...
Par contre je viens de déclencher le script manuellement et ce champ est passé à 0.
Ne faudrait-il pas peut-être créé une tache CRON pour déclencher le script en créant une nouvelle page car il y a déjà la tache CRON pour l'envoi de mail pour les anniversaires, c'est juste une suggestion.
Merci
Hélas ce matin le champ mail est resté à 1...
Par contre je viens de déclencher le script manuellement et ce champ est passé à 0.
Ne faudrait-il pas peut-être créé une tache CRON pour déclencher le script en créant une nouvelle page car il y a déjà la tache CRON pour l'envoi de mail pour les anniversaires, c'est juste une suggestion.
Merci
<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); // Enregistrer les erreurs dans un fichier de log ini_set('log_errors', 1); // Nom du fichier qui enregistre les logs (attention aux droits à l'écriture) ini_set('error_log', dirname(__file__) . '/log_error_php.txt'); //-----------------------------------------------------------------------------// //connexion à la bdd //-----------------------------------------------------------------------------// require_once("init.php"); //-----------------------------------------------------------------------------// //FONCTIONS //-----------------------------------------------------------------------------// // Fonction qui sert à faire les requêtes SQL // Contient déjà le try/catch function executeQuery($sql,$datas = NULL) { global $bdd; // permet d'utiliser la variable $bdd dans la fonction //exécution de la requête try { $requete = $bdd->prepare($sql); $requete->execute($datas); } catch(Exception $e) { // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($aadh,$mois,$jour); exit(0); // en cas d'erreur.. arrête le script ! } return $requete; } function get_Anniv($aadh,$mois,$jour) { $sql = "SELECT nom, prenom, dnaiss, email, mail FROM cdc_personnes P LEFT JOIN cdc_adherer A ON P.idpers = A.idpers WHERE mail = 0 AND annee = ? AND MONTH(dnaiss) = ? AND DAY(dnaiss) = ?"; return executeQuery($sql,array($aadh,$mois,$jour)); } function get_configsite_resp() { $sql = "SELECT * FROM cdc_configsite WHERE clef = ? "; $result = executeQuery($sql,array('resp')); $reponse = $result->fetch(); return !empty($reponse) ? $reponse->valeur : ''; } function sendMailAnniv($email,$prenom,$resp) { // Adresse email des destinataires $destinataire = $email; // Titre de l'email $sujet = 'Joyeux Anniversaire'; // Contenu du message de l'email $message = '<html>'; $message .= '<body><p>Bonjour '.$prenom.'<br/>'; $message .= 'Je te souhaite un bon anniversaire...<br/>'; $message .= 'A bientôt !<br/>'; $message .= ''. $resp . '<br/>'; $message .= '</html>'; // Pour envoyer un email HTML, l'en-tête Content-type doit être défini $headers = 'MIME-Version: 1.0'."\r\n"; $headers .= 'Content-type: text/html; charset=utf-8'."\r\n"; $headers .= 'From:"cliquedecruet"<cliquede@60gp.ovh.net>'."\n"; // Fonction principale qui envoi l'email if(!mail($destinataire, $sujet, $message, $headers)) { echo " Erreur lors de l'envoie du mail !"; } } //Met le champ "mail" à 1 function set_mail_envoye($email) { $sql = "UPDATE cdc_personnes SET mail = 1 WHERE email = ?"; $datas = array($email); return executeQuery($sql,$datas); } //Met le champ "mail" à 0 function set_mail_changed() { $sql = "UPDATE cdc_personnes SET mail = 0"; $datas = NULL; return executeQuery($sql,$datas); } //-----------------------------------------------------------------------------// // Début de ton script //-----------------------------------------------------------------------------// $DateJour = date("d/m"); //remettre le champ "mail" à 0 au 1er Janvier de chaque année de TOUS les mails if ($DateJour == '13/02') { set_mail_changed(); } $quant = date("z"); // Quantième du jour dans l'année. NB: le 01/09/AAAAA est le 245è jour de l'année // Si l'on est avant le 01/09, l'année d'adhésion ($aadh) est l'année précédente, sinon c'est l'année courante $aadh = $quant < 245 ? date("Y")-1 : date("Y"); $mois = date('m'); $jour = date('d'); //récupère la liste des anniversaires $anniv = get_Anniv($aadh,$mois,$jour); //récupère resp $resp = get_configsite_resp(); //si il y a des données à traiter if(!empty($anniv)) { while ($donnees = $anniv->fetch()) { $email = $donnees->email; $prenom = $donnees->prenom; sendMailAnniv($email,$prenom,$resp); //envoie le mail set_mail_envoye($email); // met le champ "mail" à 1 une fois le mail envoyé au destinataire } } ?>
jordane45
Messages postés
38453
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 mars 2025
4 740
13 févr. 2018 à 10:22
13 févr. 2018 à 10:22
Ne faudrait-il pas peut-être créé une tache CRON pour déclencher le script en créant une nouvelle page
C'est ce que je t'avais conseillé au départ ....
Un script... qui se lance à la date voulue et qui ne sert qu'à ça !
Par contre... vu comment c'est fait maintenant... rien ne t'empèche de le laisser comme ça.
car il y a déjà la tache CRON pour l'envoi de mail pour les anniversaires,
Mais nous sommes bien d'accord qu'actuellement tu as :
- Un seul script PHP (celui qu'on est en train de modifier)
- Une seule tâche planifiée ... qui lance CE script (et pas un autre).
Je sens venir la réponse du genre : ben non;.. j'ai deux tâches planifiées .....
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
13 févr. 2018 à 11:06
13 févr. 2018 à 11:06
Oui j'ai bien qu'une et une seule tache planifié avec uniquement un seul script....
LaChaux78
Messages postés
583
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
14 janvier 2025
32
13 févr. 2018 à 16:59
13 févr. 2018 à 16:59
Alors actuellement j'ai une tache CRON tache planifié à 3h chaque jour qui lance le script du fichier envoi_anniv.php (anniversaire des membres et change la valeur du champ mail)
Je peux recréé une tache CRON qui lancera le fichier change_mail.php le 01/01 à 0h (qui remets la valeur initial du champ mail à 0)
Par contre pourquoi tu as dit...
Par contre... vu comment c'est fait maintenant... rien ne t'empèche de le laisser comme ça.
Sinon dans le nouveau fichier je mets uniquement les deux fonctions en fait?
Tu peux me dire ce que tu penses de ça?
Je te remercie.
Je peux recréé une tache CRON qui lancera le fichier change_mail.php le 01/01 à 0h (qui remets la valeur initial du champ mail à 0)
Par contre pourquoi tu as dit...
Par contre... vu comment c'est fait maintenant... rien ne t'empèche de le laisser comme ça.
Sinon dans le nouveau fichier je mets uniquement les deux fonctions en fait?
Tu peux me dire ce que tu penses de ça?
Je te remercie.
<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); // Enregistrer les erreurs dans un fichier de log ini_set('log_errors', 1); // Nom du fichier qui enregistre les logs (attention aux droits à l'écriture) ini_set('error_log', dirname(__file__) . '/log_error_php.txt'); //-----------------------------------------------------------------------------// //connexion à la bdd //-----------------------------------------------------------------------------// require_once("init.php"); //-----------------------------------------------------------------------------// //FONCTIONS //-----------------------------------------------------------------------------// // Fonction qui sert à faire les requêtes SQL // Contient déjà le try/catch function executeQuery($sql,$datas = NULL) { global $bdd; // permet d'utiliser la variable $bdd dans la fonction //exécution de la requête try { $requete = $bdd->prepare($sql); $requete->execute($datas); } catch(Exception $e) { // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); exit(0); // en cas d'erreur.. arrête le script ! } return $requete; } //Met le champ "mail" à 0 function set_mail_changed() { $sql = "UPDATE cdc_personnes SET mail = 0"; $datas = NULL; return executeQuery($sql,$datas); } //-----------------------------------------------------------------------------// // Début de ton script //-----------------------------------------------------------------------------// $DateJour = date("d/m"); //remettre le champ "mail" à 0 au 1er Janvier de chaque année de TOUS les mails if ($DateJour == '01/01') { set_mail_changed(); } ?>