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é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: :slight_smile:](/forum/images/emoji/twitter/slight_smile.png?v=5)
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é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 !