Forum Clubic

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 !