[php+sql] le prochain anniversaire est celui de ...

[php+sql] le prochain anniversaire est celui de ... - SQL/NoSQL - Programmation

Marsh Posté le 21-11-2006 à 14:02:01    

Bonjour,
 
Je cherche a effectuer une requete qui viendrais afficher des entrées en fonction de là prochaine date anniversaire.
j'ai une table avec des utilisateurs, et leur date de naissance ($naissance).
je récupère la date actuel et ressort le moi et le jour avec un truc du sytle:

Code :
  1. $date_aujourdui = date("-m-d" );


Pour l'instant je sais juste afficher si $naissance est = à $date_aujoudui avec une requete de type que j'ai du mal à faire fonctionner:

Code :
  1. $req = "SELECT * FROM membre WHERE DATE_FORMAT(naissance,  '%d%m') = DATE_FORMAT(NOW(), '%d%m')"


ou $date_aujourdui est devenue DATE_FORMAT(NOW(), '%d%m'
 
Je souhaite pour afficher quelque chose du type, "le prochain anniversaire sera --> [utilisateur_lambda] le --> [date en -d-m]"
Et je ne sais pas comment m'y prendre.
Si quelqu'un à une idée je suis prenneur!


Message édité par Jay-ko le 21-11-2006 à 14:32:07
Reply

Marsh Posté le 21-11-2006 à 14:02:01   

Reply

Marsh Posté le 21-11-2006 à 15:13:58    

tu fais un select de toutes les dates après la date d'aujoud'hui mais tu lui signale que tu ne veux que le premier
 
tu remplace le = par > et tu ajoutes à la fin LIMIT 0 , 1 et ne pas oublier de faire un tri
 
Tu auras la 1ère date qui vient après la date actuelle
 
De cette manière je réponds à ta question, mais tu as pas pensé si y a 2 users qui ont la même date de naissance?


Message édité par chepa_jemls le 21-11-2006 à 15:15:26
Reply

Marsh Posté le 23-11-2006 à 16:33:34    

C'est bon! je difuse donc la solution:
 

Code :
  1. <?php
  2. baseop ();
  3. $req_anniv = "SELECT * FROM membres WHERE DATE_FORMAT(date_naissance,'%d%m')>DATE_FORMAT(NOW(),'%d%m') LIMIT 0,1";
  4. $anniv=mysql_query($req_anniv);
  5. while($obj_anniv= mysql_fetch_object($anniv,MYSQL_ASSOC)) {
  6.      $nom_anniv=$obj_nais->nom;
  7.  $prenom_nais=$obj_anniv->prenom;
  8.  $pseudo_nais=$obj_anniv->pseudo;
  9.  $groupe_nais=$obj_anniv->Groupe;
  10.  echo $nom_nais." ".$prenom_nais." ".$groupe_nais;
  11.  }
  12. baseclose ();
  13. footer();
  14. echo "<!-- fin mainpage -->";
  15. ?>


Message édité par Jay-ko le 23-11-2006 à 17:12:20
Reply

Marsh Posté le 23-11-2006 à 17:36:02    

Sauf que, dans l'hystérie d'avoir solutionné mon prb je n'avais pas fait attention à la page précédente.
L'utilisation du limit est bizare dans le sens où ça vient me donner une réponse du prochaine anniv... le mois dernier...
Et j'avais idée de lister les dates d'anniv iddentique avec mon while...
En mettant un "LIMIT 0,2" Hors là ça me propose un choix de dates chaotique.
?

Code :
  1. baseop ();
  2. $date_aujourdui = date("d-m-y" );
  3. echo "Nous somme le ".$date_aujourdui."<br />";
  4. $req_anniv = "SELECT * FROM membres WHERE DATE_FORMAT(date_naissance,'%d%m')>DATE_FORMAT(NOW(),'%d%m') LIMIT 0,1";
  5. $anniv=mysql_query($req_anniv);
  6. while($obj_nais= mysql_fetch_object($anniv,MYSQL_ASSOC)) {
  7.      $nom_nais=$obj_anniv->nom;
  8.  $prenom_nais=$obj_anniv->prenom;
  9.  $pseudo_nais=$obj_anniv->pseudo;
  10.  $groupe_nais=$obj_annivs->Groupe;
  11.  $naissance_nais=$obj_anniv->date_naissance;
  12.  echo "<div>Prochain anniversaire, <b>".$prenom_nais." ".$nom_nais."</b>  groupe ".$groupe_nais." né(e) le ".$naissance_nais."</div>";
  13.  }
  14. baseclose ();
 

me donne en retour:

 
Citation :


Nous somme le 23-11-06
Prochaine anniversaire, Mickael Jacskon groupe A né(e) le 1977-10-26

 


Message édité par Jay-ko le 23-11-2006 à 17:44:03
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed