Salut,
d'après son exemple,
il semble qu'il stock l'âge des utilisateurs en une chaine de caractères de la forme "jj/mm/aaaa",
du coup je ne pense pas que les solutions proposées puissent fonctionner.
Après je m'y connais tellement mal dans la "lecture" des date en SQL que je me trompe peut-être.
Pour faire ça je modifierai la structure de la base de données.
Comme je m'y connais mal dans la "lecture" des date en SQL, j'aurai besoin de 2 champs de type "varchar" :
- l'un stockerai l'année sur 4 chiffres (nommons le 'year'),
- l'autre, le mois et le jour sous la forme 'mmdd' (nommons le birthday)
Mais je suis sur qu'on peut tout faire avec juste un champ de type "date" si on s'y connait mieux que moi. ^^
Maintenant qu'on a cette BDD,
Je ne suis pas sur d'avoir compris ce que tu veux faire,
j'ai cru comprendre que tu as un "user" en paramètre,
et tu veux connaitre tous les "users" du même âge.
Si c'est bien ça,
je ferai une première fonction pour savoir si l'anniversaire du "user" en paramètre est passé ou non.
(s'il est né en 2000, et qu'on est en 2016, il peut avoir, soit 15 ans soit 16 ans).
Dans ton code, on admet qu'on a un objet $user, avec les 2 attributs correspondant aux 2 champs de la BDD que j'ai cité.
function gotBirthday($user)
{
if ($user->get('birthday') < date('md'))
{
return = false;
}
return true;
}
ensuite on appel une fonction qui va récupérer les "user" en BDD qui sont nés la même année que le "user" en paramètre, ET qui ont leur anniversaire passé (ou non).
function getAllUsersSameAge($user)
{
$chevron = '<';
if (gotBirthday($user))
{
$chevron = '>=';
}
// je n'écris pas tout. Et puis il faudrait faire une requête préparée aussi
$results = 'SELECT * FROM users
WHERE year = ' . $user->get("year") . '
AND birthday ' . $chevron . ' ' . date('md');
return $results;
}
$all_users_same_age = getAllUsersSameAge($user);
Je rappel que je n'y comprends rien aux dates SQL, alors je sais qu'il y a forcément moyen de faire plus simple que ça.
Si quelqu'un veut bien proposer une solution, j'en serai ravi. ^^