Problème script PHP happy birthday

Hello,

comme beaucoup de developpeurs novices je voudrait mettre sur mon site un script souhaitant l’anniversaire des inscrits.
Pour cela, j’ai créée un table « anniv » avec 3 champs : id (auto increment), nom, date_anniversaire (format date, 0000-00-00)

Je me suis concocté un petit outils d’amin qui fonctionne bien, j’entre et modifie sans problème mes inscrits dans cette table. (j’entre les dates d’anniversaire au format 2009-08-16)

Mais lorsque je veux afficher le nom d’une personne qui est né à la date du jour, ça bug. rien ne s’affiche alors que pour tester j’ai entré un nom avec la date exacte du jour. voici mon code en question

<?php



$date_du_jour = date("Y-m-d");
echo "Ils sont n&eacute;s le " . $date_du_jour . " :";


// ...connexion à ma base...

 require "admin/config.php";
 mysql_connect(DB_HOST, DB_LOGIN, DB_PASS);
 mysql_select_db(DB_BDD);

//

$retour = mysql_query('SELECT nom FROM anniv WHERE date_naissance = $date_du_jour');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
{
 if ($date_naissance = $date_du_jour)
 {
 echo stripslashes($donnees['nom']); 
 }

} // Fin de la boucle qui liste les news
?>

Lorsque je supprime « WHERE date_naissance = $date_du_jour » ça m’affiche tous les noms de ma liste (donc le « if » n’est pas pris en compte)

Merci pour votre aide si vous trouvez la faille et la solution

Heu … si tu filtre sur la date de naissance dans la requête, cela ne sert à rien de le faire une seconde fois dans la boucle.

Et sinon, essaye avec des ’ autour de la date, car mySQL l’interprète de la sorte : Y-m-d = 2009-08-16 = 2001 - 16 = 1985.

Et c’est débile, car la date d’anniversaire ne doit pas prendre en compte l’année :slight_smile:

je comprend pas où tu veux que je mette des ’ autour de la date…

je vois pas où est le problème dans mon code puisque je demande d’afficher les noms ayant une date de naissance = 2009-08-16
et j’ai justement créée un test né le 2009-08-16 !

ça me prend bien la tête cette histoire de date et de format !!!

Ci dessous ton script corrigé :

<?php

$date_du_jour = date("Y-m-d");
echo "Ils sont n&eacute;s le " . $date_du_jour . " :";


// ...connexion à ma base...

 require "admin/config.php";
 mysql_connect(DB_HOST, DB_LOGIN, DB_PASS);
 mysql_select_db(DB_BDD);

//

$retour = mysql_query(sprintf('SELECT nom FROM anniv WHERE date_naissance = \'%s\'', mysql_real_escape_string($date_du_jour)));
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
{
 echo $donnees['nom']; 
} // Fin de la boucle qui liste les news
?>

J’ai viré le stripslashes sur le nom : là, tu insères tes noms n’importe comment. Inspire toi de ce que j’ai fait pour l’insertion - sachant que si tu as des \ devant les caractères ', ", etc, c’est que c’est à l’insertion le problème (ce que tu as en base devrait être la même chose que ce que l’utilisateur a tapé).

OK Cool

ça marche effectivement. maintenant ça m’affiche bien mes test qui sont nés aujourd’hui

maintenant il me reste à régler la mise en page.

merci pour ton aide !