Page 1 sur 1

Date & age :(

Posté : 17 févr. 2005, 04:30
par :)
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é

Posté : 17 févr. 2005, 09:39
par Cyrano
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 ;)

Posté : 17 févr. 2005, 12:14
par @rthur
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)

Posté : 17 févr. 2005, 12:24
par Invité
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 !

Posté : 17 févr. 2005, 12:51
par Invité
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 ?

Posté : 17 févr. 2005, 14:10
par Cyrano
Pour les manipulations de date, le mieux est de consulter le manuel ==> ICI <==

Posté : 18 févr. 2005, 00:08
par @rthur
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);