2011-08-19 2 views
0

J'essaie de construire une fonction de recherche, qui obtient les résultats par une tranche d'âge. La base de données contient l'anniversaire d'un utilisateur (par exemple, 1980-09-11 00:00:00). Maintenant, j'essaie de rechercher des utilisateurs, par ex. en utilisant $ agefrom = 15; et $ ageto = 18; .. Mais je ne sais pas comment le code php et l'instruction db devraient ressembler ..Rechercher l'âge en php

Je veux faire le plus de choses en PHP, puis seulement faire une requête sql comme (naissance < birth_to AND birth> birth_from)

Nous vous remercions de votre aide!

Répondre

0

La requête la plus simple, qui ne fonctionnera pas avec une précision totale serait

SELECT ... 
FROM ... 
WHERE YEAR(birthday) BETWEEN (YEAR(now()) - 18, YEAR(now()) - 15) 

Cela échouera si n'a pas encore eu lieu l'anniversaire d'une personne dans une année donnée (par exemple, il est le 1er mai et leur b- le jour est le 15 juin). Pour gérer ce cas, il faudra un peu plus de calcul des dates pour vérifier "l'année est bonne mais le jour/mois est faux".

0

Je pense qu'il est plus facile de construire les dates dont vous avez besoin il y a 15 et 18 ans (en PHP), puis placez ceux dans la requête avec une instruction BETWEEN. Ronde à minuit ou vous aurez des cas de mauvais bord.

+0

Mais le problème est là, que je n'ai pas de résultats exacts, si une personne n'a pas encore d'anniversaire dans l'année .. Comment résoudre ce problème? – simons

+0

@simons Ajoute un an à '$ ageto'. – JJJ

Questions connexes