Date & age :(

:)
Invité n'ayant pas de compte PHPfrance

17 févr. 2005, 04:30

bsoir tous

dans une table j'ai un champ 'daten'(date de naissance) les enreistrements on cette forme 1979-09-30 en tant que date

je souhaiterai par une raquette définir une liste d'utilisateur entre deux age par ex entre 20 et 30 ans (défini par deux variable recupere par une liste déroulante $ age1 et $age2), mais comment appeler ou calculer l'age d'un utilisateur par raport a la date courante
$connexion = mysql_connect("***","***","***");
mysql_select_db("***",$connexion);
$reqr="SELECT * FROM feelut where daten='$???"; 
//while(list($nom,$prenom,$adresse)=mysql_fetch_array($reqr)) 
$envoi = mysql_query($reqr);  
merci a vous !
message edité par ermelir: pense a ajouter les bbcodes php pour mettre ton code, ca ameliore la lisibilité

Mammouth du PHP | 19672 Messages

17 févr. 2005, 09:39

Salut,
c'est une petite question de réflexion : tu pars du principes que tu cherches des personnes qui, à la date courante, ont + de 20 ans et - de 30 ans ? Alors tu dois définir à quelles dates de naissance correspondent les extrémités de la "fourchette", donc, l'année courante - 20 et -30. Exemple, nous sommes le 17 février 2005, je vais donc chercher des dates > 1975:02:17 et < 1985:02:17. Je ne sais plus si on peut mettre > ou < pour tester un champ date dans MySQL, mais il me semble que ça fonctionne, faudrait tester. sinon, il faudra trouver une alternative, il y en a toujours ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

17 févr. 2005, 12:14

Je ne sais plus si on peut mettre > ou < pour tester un champ date dans MySQL, mais il me semble que ça fonctionne, faudrait tester. sinon, il faudra trouver une alternative, il y en a toujours ;)
On peut tout à fait le faire <NOW() et >NOW()
On peut également utiliser l'opérateur BETWEEN:

Code : Tout sélectionner

...(NOW() BETWEEN $date_inf AND $date_sup)
Quand tout le reste a échoué, lisez le mode d'emploi...

Invité
Invité n'ayant pas de compte PHPfrance

17 févr. 2005, 12:24

Salut,
c'est une petite question de réflexion : tu pars du principes que tu cherches des personnes qui, à la date courante, ont + de 20 ans et - de 30 ans ? Alors tu dois définir à quelles dates de naissance correspondent les extrémités de la "fourchette", donc, l'année courante - 20 et -30. Exemple, nous sommes le 17 février 2005, je vais donc chercher des dates > 1975:02:17 et < 1985:02:17. Je ne sais plus si on peut mettre > ou < pour tester un champ date dans MySQL, mais il me semble que ça fonctionne, faudrait tester. sinon, il faudra trouver une alternative, il y en a toujours ;)
Ok je vois bien ton résonnement, donc il faudrai que je calcul les extremités des 'fourchettes' et que je fasse ma requette comme ça:

$connexion = mysql_connect("***","***","***"); 
mysql_select_db("***",$connexion); 
$reqr="SELECT * FROM feelut where daten >'$resulatat1' and <$resultat2"; 
//while(list($nom,$prenom,$adresse)=mysql_fetch_array($reqr)) 
$envoi = mysql_query($reqr); 
si elle est bonne, comment définir les variable
$resultat1 et $resultat2

merci !

Invité
Invité n'ayant pas de compte PHPfrance

17 févr. 2005, 12:51

Je ne sais plus si on peut mettre > ou < pour tester un champ date dans MySQL, mais il me semble que ça fonctionne, faudrait tester. sinon, il faudra trouver une alternative, il y en a toujours ;)
On peut tout à fait le faire <NOW() et >NOW()
On peut également utiliser l'opérateur BETWEEN:

Code : Tout sélectionner

...(NOW() BETWEEN $date_inf AND $date_sup)
Comme ça :?
<?php $connexion = mysql_connect("***","***","***"); 
mysql_select_db("***",$connexion); 
$reqr="SELECT * FROM feelut where daten (NOW() BETWEEN $date_inf AND $date_sup)"; 
//while(list($nom,$prenom,$adresse)=mysql_fetch_array($reqr)) 
$envoi = mysql_query($reqr); 
et comment définir les variables $date_inf et date_sup ?

Mammouth du PHP | 19672 Messages

17 févr. 2005, 14:10

Pour les manipulations de date, le mieux est de consulter le manuel ==> ICI <==
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

18 févr. 2005, 00:08

Je ne sais plus si on peut mettre > ou < pour tester un champ date dans MySQL, mais il me semble que ça fonctionne, faudrait tester. sinon, il faudra trouver une alternative, il y en a toujours ;)
On peut tout à fait le faire <NOW() et >NOW()
On peut également utiliser l'opérateur BETWEEN:

Code : Tout sélectionner

...(NOW() BETWEEN $date_inf AND $date_sup)
et comment définir les variables $date_inf et date_sup ?
Comme ça, ça devrait marcher pour entre -20 et -30 ans.
$date_inf = mktime(0, 0, 0, date("m"), date("d"), date("Y") -30);
$date_sup = mktime(0, 0, 0, date("m"), date("d"), date("Y") -20);
Quand tout le reste a échoué, lisez le mode d'emploi...