Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1642 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  aidez moi svp extraire depuis la base

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

aidez moi svp extraire depuis la base

n°2280741
nouracm
Posté le 03-05-2016 à 22:11:07  profilanswer
 

comment faire pour que j'extraire depuis ma base les clients qui n'ont pas entrer une puissance depuis 7 jours .  
le bute c'est d'envoyer un email automatique à ces clients pour les rappeler .  
le champs id signifie l'identifieur du client.  
j'ai bien fait l'extraction mais je ne connais pas comment faire un contrôle automatique pour que le programme extraire ces client et l'envoyer un email .  

Code :
  1. $requete="ALTER TABLE  `puissance` ORDER BY  `date` DESC ";
  2.   $requete2=mysql_query($requete);
  3.   $query ="SELECT   DISTINCT `date`, `id` FROM  `puissance` ORDER BY `id` ";
  4. $query2=mysql_query($query);
  5. $i_nbLigne1 = mysql_num_rows($query2);
  6. while ($tableau = mysql_fetch_assoc($query2)){
  7. $tab = $tableau['id'].$tableau['date'] ;
  8. echo $tab;}}


 
http://img11.hostingpics.net/pics/376718Sanstitre.png

mood
Publicité
Posté le 03-05-2016 à 22:11:07  profilanswer
 

n°2280757
rufo
Pas me confondre avec Lycos!
Posté le 03-05-2016 à 23:55:29  profilanswer
 

Indice : t'as un champ "date". Dans ta requête, indique une clause WHERE avec une condition sur la date ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2280773
antac
..
Posté le 04-05-2016 à 11:10:43  profilanswer
 

DATEDIFF est ton ami :)

n°2280783
nouracm
Posté le 04-05-2016 à 12:08:46  profilanswer
 

rufo a écrit :

Indice : t'as un champ "date". Dans ta requête, indique une clause WHERE avec une condition sur la date ;)


 
 
merci beaucoup rufo cé tres gentil j'ai déja trouver la solution  :bounce:

n°2280784
nouracm
Posté le 04-05-2016 à 12:10:32  profilanswer
 

antac a écrit :

DATEDIFF est ton ami :)


cé quoi le DATEDIFF un fonction ?  :hello:

n°2280788
kao98
...
Posté le 04-05-2016 à 12:22:08  profilanswer
 

Commence par dégager ta première requête "ALTER TABLE".
Elle sert à rien (dans ce contexte).


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°2280789
nouracm
Posté le 04-05-2016 à 12:24:15  profilanswer
 

kao98 a écrit :

Commence par dégager ta première requête "ALTER TABLE".
Elle sert à rien (dans ce contexte).


 
AH D'accord  merci pour l'information  :hello:  

n°2280794
antac
..
Posté le 04-05-2016 à 13:41:42  profilanswer
 

nouracm a écrit :


cé quoi le DATEDIFF un fonction ?  :hello:


 
C'est une fonction de MYSQL permettant de connaître la différence entre deux dates (en nombre de jours par exemple)

n°2280798
nouracm
Posté le 04-05-2016 à 13:55:23  profilanswer
 

antac a écrit :


 
C'est une fonction de MYSQL permettant de connaître la différence entre deux dates (en nombre de jours par exemple)


 
 
ah merci  
est-ce-tu connais comment je peut avoir combien de fois l'email à été envoyés .
le but c'est d'afficher sur l'ecran un message contenent le nombre d'email à été envoyés.
cé le code pour que tu comprend

Code :
  1. $query ="SELECT   DISTINCT `date`, `id` FROM  `puissance` ORDER BY `id`  ";
  2. $query2=mysql_query($query);
  3. $i_nbLigne1 = mysql_num_rows($query2);
  4. while ($tableau = mysql_fetch_array($query2)){
  5. $id=$tableau['id'];
  6. date_default_timezone_set('Africa/Tunis');
  7. $dauj=date("Y-m-d" );
  8. $j =date('d');
  9. $m =date('m');
  10. $a =date('Y');
  11. $dateb=$tableau['date'];
  12.   $jb= substr($dateb,8,2);
  13. $mb=substr($dateb,5,2);
  14. $ab=substr($dateb,0,4);
  15. $dj=$j-$jb;
  16. $dm=$m-$mb;
  17. if($j>$jb){ $dj=$j-$jb;}
  18. else{$dj=$jb-$j;};
  19.  if( $dm == 0 and $dj>6){echo "plus 7";
  20. $sql="SELECT `mail` FROM `client` WHERE `id` LIKE '$id' ";
  21.    $sql2=mysql_query($sql);
  22. while( $res = mysql_fetch_array( $sql2 ))
  23.   {$email=$res['mail'];
  24.    $mail = $email; // Déclaration de l'adresse de destination.
  25.          if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues.
  26.          {$passage_ligne = "\r\n";}
  27.          else
  28.         {$passage_ligne = "\n";}
  29. //=====Déclaration des messages au format texte et au format HTML.
  30. $message_txt = "Sme Solaire - Ressouvenir,";
  31. $message_html = "<html><head></head><body>Cher client<br>l'entreprise <b>Sme Solaire</b> vous remercie pour votre participation à améliorer nos services.
  32. On a indiqué que vous n'avez pas entrer une puissance derniérement.
  33. Pour entrer ce dernier, vous devez vous authentifier en indiquant votre Nom et votre mot de passe, veuillez suivre SVP ce lien <u>www.Sme Solaire.com </u> afin de connecter.  </body></html>";
  34. //==========
  35. //=====Création de la boundary.
  36. $boundary = "-----=".md5(rand());
  37. $boundary_alt = "-----=".md5(rand());
  38. //==========
  39. //=====Définition du sujet.
  40. $sujet = "Ressouvenir";
  41. //=========
  42. //=====Création du header de l'e-mail.
  43. $header = "From: $email ".$passage_ligne;
  44. $header.= "Reply-to: $email ".$passage_ligne;
  45. $header.= "MIME-Version: 1.0".$passage_ligne;
  46. $header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
  47. //==========
  48. //=====Création du message.
  49. $message = $passage_ligne."--".$boundary.$passage_ligne;
  50. $message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
  51. $message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
  52. //=====Ajout du message au format texte.
  53. $message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
  54. $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
  55. $message.= $passage_ligne.$message_txt.$passage_ligne;
  56. //==========
  57. $message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
  58. //=====Ajout du message au format HTML.
  59. $message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
  60. $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
  61. $message.= $passage_ligne.$message_html.$passage_ligne;
  62. //==========
  63. $message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
  64. //==========
  65. $message.= $passage_ligne."--".$boundary.$passage_ligne;
  66. mail($mail,$sujet,$message,$header);}
  67.  
  68. }
  69. elseif ( $dm == 0 and $dj <= 6)  {  echo "erreur<br>";}
  70. elseif( $dm !== 0 and $dj>6)
  71.     {echo "plus 7";
  72.  $sql="SELECT `mail` FROM `client` WHERE `id` LIKE '$id' ";
  73.    $sql2=mysql_query($sql);
  74. while( $res = mysql_fetch_array( $sql2 ))
  75.   {$email=$res['mail'];
  76.    $mail = $email; // Déclaration de l'adresse de destination.
  77.          if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues.
  78.          {$passage_ligne = "\r\n";}
  79.          else
  80.         {$passage_ligne = "\n";}
  81. //=====Déclaration des messages au format texte et au format HTML.
  82. $message_txt = "Sme Solaire - Ressouvenir,";
  83. $message_html = "<html><head></head><body>Cher client<br>l'entreprise <b>Sme Solaire</b> vous remercie pour votre participation à améliorer nos services.
  84. On a indiqué que vous n'avez pas entrer une puissance derniérement.
  85. Pour entrer ce dernier, vous devez vous authentifier en indiquant votre Nom et votre mot de passe, veuillez suivre SVP ce lien <u>www.Sme Solaire.com </u> afin de connecter.  </body></html>";
  86. //==========
  87. //=====Création de la boundary.
  88. $boundary = "-----=".md5(rand());
  89. $boundary_alt = "-----=".md5(rand());
  90. //==========
  91. //=====Définition du sujet.
  92. $sujet = "Ressouvenir";
  93. //=========
  94. //=====Création du header de l'e-mail.
  95. $header = "From: $email ".$passage_ligne;
  96. $header.= "Reply-to: $email ".$passage_ligne;
  97. $header.= "MIME-Version: 1.0".$passage_ligne;
  98. $header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
  99. //==========
  100. //=====Création du message.
  101. $message = $passage_ligne."--".$boundary.$passage_ligne;
  102. $message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
  103. $message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
  104. //=====Ajout du message au format texte.
  105. $message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
  106. $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
  107. $message.= $passage_ligne.$message_txt.$passage_ligne;
  108. //==========
  109. $message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
  110. //=====Ajout du message au format HTML.
  111. $message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
  112. $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
  113. $message.= $passage_ligne.$message_html.$passage_ligne;
  114. //==========
  115. $message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
  116. //==========
  117. $message.= $passage_ligne."--".$boundary.$passage_ligne;
  118. mail($mail,$sujet,$message,$header);}}
  119.   
  120. elseif( $dm !== 0 and $dj<=6)
  121.       {$djj=30+$dj;
  122.       if($djj>6) {echo "plus 7";
  123.    $sql="SELECT `mail` FROM `client` WHERE `id` LIKE '$id' ";
  124.    $sql2=mysql_query($sql);
  125. while( $res = mysql_fetch_array( $sql2 ))
  126.   {$email=$res['mail'];
  127.    $mail = $email; // Déclaration de l'adresse de destination.
  128.          if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues.
  129.          {$passage_ligne = "\r\n";}
  130.          else
  131.         {$passage_ligne = "\n";}
  132. //=====Déclaration des messages au format texte et au format HTML.
  133. $message_txt = "Sme Solaire - Ressouvenir,";
  134. $message_html = "<html><head></head><body>Cher client<br>l'entreprise <b>Sme Solaire</b> vous remercie pour votre participation à améliorer nos services.
  135. On a indiqué que vous n'avez pas entrer une puissance derniérement.
  136. Pour entrer ce dernier, vous devez vous authentifier en indiquant votre Nom et votre mot de passe, veuillez suivre SVP ce lien <u>www.Sme Solaire.com </u> afin de connecter.  </body></html>";
  137. //==========
  138. //=====Création de la boundary.
  139. $boundary = "-----=".md5(rand());
  140. $boundary_alt = "-----=".md5(rand());
  141. //==========
  142. //=====Définition du sujet.
  143. $sujet = "Ressouvenir";
  144. //=========
  145. //=====Création du header de l'e-mail.
  146. $header = "From: $email ".$passage_ligne;
  147. $header.= "Reply-to: $email ".$passage_ligne;
  148. $header.= "MIME-Version: 1.0".$passage_ligne;
  149. $header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
  150. //==========
  151. //=====Création du message.
  152. $message = $passage_ligne."--".$boundary.$passage_ligne;
  153. $message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
  154. $message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
  155. //=====Ajout du message au format texte.
  156. $message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
  157. $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
  158. $message.= $passage_ligne.$message_txt.$passage_ligne;
  159. //==========
  160. $message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
  161. //=====Ajout du message au format HTML.
  162. $message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
  163. $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
  164. $message.= $passage_ligne.$message_html.$passage_ligne;
  165. //==========
  166. $message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
  167. //==========
  168. $message.= $passage_ligne."--".$boundary.$passage_ligne;
  169. mail($mail,$sujet,$message,$header);}}
  170.     else{echo "erreur<br>";}}
  171.       
  172. }


 
désolé pour mon faible français  
merci d'avance  :hello:

n°2281004
h3bus
Troll Inside
Posté le 09-05-2016 à 14:23:52  profilanswer
 

Code :
  1. if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues.


Cette condition m'a beaucoup fait rire :o
 
bogues = serveurs SMTP qui refusent les spammeurs par défaut.


---------------
sheep++
mood
Publicité
Posté le 09-05-2016 à 14:23:52  profilanswer
 

n°2281006
nouracm
Posté le 09-05-2016 à 15:06:19  profilanswer
 

h3bus a écrit :

Code :
  1. if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues.


Cette condition m'a beaucoup fait rire :o
 
bogues = serveurs SMTP qui refusent les spammeurs par défaut.


 
 j'ai pas bien compris mais la condition j'ai déja la testé et elle marche bien .
ou est la faute ? :hello:

n°2281007
h3bus
Troll Inside
Posté le 09-05-2016 à 15:12:32  profilanswer
 

Edit: NVM j'ai mal lu


Message édité par h3bus le 09-05-2016 à 15:15:52

---------------
sheep++
n°2281012
gatsu35
Blablaté par Harko
Posté le 09-05-2016 à 16:17:58  profilanswer
 

nouracm a écrit :

 

j'ai pas bien compris mais la condition j'ai déja la testé et elle marche bien .
ou est la faute ? :hello:


C'est pas le pb, tu peux dégager cette condition elle ne sert à rien, autant mettre du \r\n partout

Message cité 1 fois
Message édité par gatsu35 le 09-05-2016 à 16:28:19
n°2281015
Moumoule
Posté le 09-05-2016 à 17:02:51  profilanswer
 

Le plus simple, est d'utiliser la fonction NOW() pour récupérer la date actuelle. Après, tu soustrait avec INTERVAL 7 DAY et tu as exactement ce que tu recherches. Maintenant je vois que tu as choisi une date et non un datetime dans ta structure de donnée ... De ce fait tu perds l'information de l'heure, ce qui peut-être embêtant car imprécis.
 
SELECT   DISTINCT `date`, `id` FROM  `puissance` WHERE `date` < (NOW() - INTERVAL 7 DAY) ORDER BY `id` ";

n°2281022
nouracm
Posté le 09-05-2016 à 18:13:38  profilanswer
 

gatsu35 a écrit :


C'est pas le pb, tu peux dégager cette condition elle ne sert à rien, autant mettre du \r\n partout


 
ah d'accord merci  :)

n°2281023
nouracm
Posté le 09-05-2016 à 18:19:10  profilanswer
 

Moumoule a écrit :

Le plus simple, est d'utiliser la fonction NOW() pour récupérer la date actuelle. Après, tu soustrait avec INTERVAL 7 DAY et tu as exactement ce que tu recherches. Maintenant je vois que tu as choisi une date et non un datetime dans ta structure de donnée ... De ce fait tu perds l'information de l'heure, ce qui peut-être embêtant car imprécis.
 
SELECT   DISTINCT `date`, `id` FROM  `puissance` WHERE `date` < (NOW() - INTERVAL 7 DAY) ORDER BY `id` ";


woow cé géniale  j'ai résolu la probléme il ya déja 5 jours mais à 10 ligne presque j'ai fais comme ce ci  

Code :
  1. $query ="SELECT   DISTINCT `date`, `id` FROM  `puissance` ORDER BY `id`  ";
  2. $query2=mysql_query($query);
  3. $i_nbLigne1 = mysql_num_rows($query2);
  4. while ($tableau = mysql_fetch_array($query2)){
  5. $id=$tableau['id'];
  6. date_default_timezone_set('Africa/Tunis');
  7. $dauj=date("Y-m-d" );
  8. $j =date('d');
  9. $m =date('m');
  10. $a =date('Y');
  11. $dateb=$tableau['date'];
  12.   $jb= substr($dateb,8,2);
  13. $mb=substr($dateb,5,2);
  14. $ab=substr($dateb,0,4);
  15. $dj=$j-$jb;
  16. $dm=$m-$mb;
  17. $da=$a-$ab;
  18. if($j>$jb){ $dj=$j-$jb;}
  19. else{$dj=$jb-$j;};
  20. if($m>$mb){ $dm=$m-$mb;}
  21. else{$dm=$mb-$m;};


 
et j'ai tombé à tester à chaque foie sur le jour, le moi et l'année et j'ai finie mon code en 1000 ligne  
mais votre solution est géniale je ne l'ai connais pas avant  
merci encore fois

n°2281026
Moumoule
Posté le 09-05-2016 à 19:09:11  profilanswer
 

Ta solution effectue le traitement côté serveur et non avec la requête à la BDD. C'est pas la solution idéale car tu vas rapatrier toutes les données.. Pour illustrer, imagine toi que tu as 10 000 enregistrements. Tu les récupères tous, et après via ton code php, tu vas traverser tous les enregistrements pour voir lesquels ont une date > que NOW() - 7 jours. Supposons qu'il y a que 100 enregistrements qui correspondent => du traitement overkill.  
 
Ça marche c'est sûr mais le mieux étant de filtrer directement via la requête qui va directement de donner les 100 enregistrements.

n°2281028
nouracm
Posté le 09-05-2016 à 19:25:40  profilanswer
 

Moumoule a écrit :

Ta solution effectue le traitement côté serveur et non avec la requête à la BDD. C'est pas la solution idéale car tu vas rapatrier toutes les données.. Pour illustrer, imagine toi que tu as 10 000 enregistrements. Tu les récupères tous, et après via ton code php, tu vas traverser tous les enregistrements pour voir lesquels ont une date > que NOW() - 7 jours. Supposons qu'il y a que 100 enregistrements qui correspondent => du traitement overkill.  
 
Ça marche c'est sûr mais le mieux étant de filtrer directement via la requête qui va directement de donner les 100 enregistrements.


 
oui cé vrai tu as raison merci beaucoup cé trés gentil  
est-ce-que vous avez un cours de php avancé à fin d'améliorer mon niveau ?

n°2281049
gatsu35
Blablaté par Harko
Posté le 10-05-2016 à 06:16:19  profilanswer
 

Evite d'écrire en langage SMS. Sinon pour les cours, là c'est plus un cours sur les bases de données et bien savoir quand il faut faire un traitement du coté de la base que du coté PHP. En général il faut faire un max de traitement coté base.

n°2281116
nouracm
Posté le 10-05-2016 à 17:22:03  profilanswer
 

gatsu35 a écrit :

Evite d'écrire en langage SMS. Sinon pour les cours, là c'est plus un cours sur les bases de données et bien savoir quand il faut faire un traitement du coté de la base que du coté PHP. En général il faut faire un max de traitement coté base.


ah d'accord merci beaucoup pour l'information  :lol:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  aidez moi svp extraire depuis la base

 

Sujets relatifs
Lien hypertexte dans un tableau à partir d'une base de données?Navigation intuitive dans une base de données
Problème de date dans base de donnéesPublipostage Word en PDF avec base de données Excel
Base de donnée partagée entre iPad et PC.Utilisation d'une base de donnée de caractères
Base de donnée Cassandraje ne parviens pas à remplire ma base de données
[RESOLU] l'exploration d'une base Openldap en vbscript[SHELL/SED] Extraire un bout de chaine
Plus de sujets relatifs à : aidez moi svp extraire depuis la base


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR