Page 1 sur 1
Calcul d'age
Posté : 11 févr. 2010, 23:34
par Mister Tux
Bonjour,
Voila je vous explique mon cas. J'ai une table avec des noms et des dates de naissance. j'aimerai récupérer les âges, pour refaire une requête et trouver les noms ayant le même âge ..
Re: Calcul d'age
Posté : 11 févr. 2010, 23:38
par stealth35
Re: Calcul d'age
Posté : 12 févr. 2010, 00:27
par AB
Dans le même lien qu'a donné stealth35 tu peux aussi t'intéresser à la fonction YEAR() en bas de page.
Cela dépend de ce que tu veux faire mais si ton champ date de naissance est formaté correctement (au format DATE myql), pour trouver les personnes ayant 30 ans cette année tu peux faire
SELECT nom FROM matable WHERE YEAR(NOW()) - YEAR(date_de_naissance) = 30
Re: Calcul d'age
Posté : 14 févr. 2010, 22:41
par mistertux
Effectivement ca fonctionne.
J'essaye d'ajouter d'autres criteres de recherches comme ca
$sql = "SELECT * FROM videos WHERE YEAR(NOW()) - YEAR(date_naissance) = '$age' and nom LIKE '%$nom%' and prenom LIKE '%$prenom%' and pays LIKE '$pays'";
mais je n'obtient pas de resulat. Une erreur de syntaxe ?
Est il possible d'etre plus precis pour l'age en travaillant avec les mois et les jours et non qu'avec les années ?
Re: Calcul d'age
Posté : 15 févr. 2010, 00:31
par AB
Effectivement ca fonctionne.
J'essaye d'ajouter d'autres criteres de recherches comme ca
$sql = "SELECT * FROM videos WHERE YEAR(NOW()) - YEAR(date_naissance) = '$age' and nom LIKE '%$nom%' and prenom LIKE '%$prenom%' and pays LIKE '$pays'";
mais je n'obtient pas de resulat. Une erreur de syntaxe ?
Est il possible d'etre plus precis pour l'age en travaillant avec les mois et les jours et non qu'avec les années ?
1/Fais afficher les erreurs mysql durant développement ainsi tu auras les erreurs de syntaxe.
$ressource = mysql_query($sql) or die(mysql_error())
2/Que veux tu sélectionner exactement en étant plus précis ?
Re: Calcul d'age
Posté : 15 févr. 2010, 00:47
par stealth35
ton date_naissance est il de type date ou varchar ?
+1 pour les remarque de AB
mais te conseil plutot de faire
$ressource = mysql_query($sql) || exit(mysql_error());
"die" etant un alias de "exit" (pas très conseillé d'utilisé les alias)
Re: Calcul d'age
Posté : 15 févr. 2010, 01:21
par AB
mais te conseil plutot de faire
$ressource = mysql_query($sql) || exit(mysql_error());
"die" etant un alias de "exit" (pas très conseillé d'utilisé les alias)
Effectivement la remarque est pertinente dans le cadre général (certains allias venant à être dépréciés avec le temps...)
Mais s'agissant ici d'un code utilisé uniquement en phase de debuggage, cela n'a pas d'importance.
Re: Calcul d'age
Posté : 15 févr. 2010, 01:23
par stealth35
autant toujours prendre de bonne habitude ca mange pas de pain

Re: Calcul d'age
Posté : 15 févr. 2010, 23:05
par mistertux
Ca fonctionne si je n'utilise pas plus de 2 and dans ma requête ... Il y a un moyen de faire une recherche dans ma table avec au moins 5 critères ?
Et oui ma colonne date_naissance est en date. Le probleme vient des and ...
Re: Calcul d'age
Posté : 16 févr. 2010, 00:40
par stealth35
essaye de mettre parenthese ici
(YEAR(NOW()) - YEAR(date_naissance) = '$age')
sinon je ne peu que te conseil de tester tes requêtes, avec phpmyadmin (ou autre)
Re: Calcul d'age
Posté : 16 févr. 2010, 00:51
par AB
Ca fonctionne si je n'utilise pas plus de 2 and dans ma requête ... Il y a un moyen de faire une recherche dans ma table avec au moins 5 critères ?
Et oui ma colonne date_naissance est en date. Le probleme vient des and ...
Tu peux en mettre beaucoup plus des conditions "and" dans ta table. Le pb ne vient pas d'une limitation à ce niveau mais sans doute de tes conditions qui sont soit trop restrictives et la requqête ne retourne donc pas de résultat, soit ces conditions sont mal écrites.
Fait afficher ta requête pour voir si la chaine est ok
$sql = "SELECT .....";
echo $sql;
//ensuite suit les conseils de débuggage en faisant
$ressource = mysql_query($sql) || exit(mysql_error());
Re: Calcul d'age
Posté : 18 févr. 2010, 15:15
par mistertux
Quand je parlais d'etre precis je parlais dans le calcul de l'age car actuellement je fais une soustraction year(now) - year(datedenaissance) mais quelqu'un né en janvier et un autre en decembre c pas pareil.
Pour ce qui est de ma requete je sais deja qu'une requete avec un critere a chaque fois ca fonctionne, ensuite si je met des and au dela de 2 ou 3 je n'ai pas d'erreur sql mais aucun resultat trouvé. Je vais continué mes tests ...
A bientot