12. september 2004 - 13:37
Der er
21 kommentarer og 1 løsning
beregne alder i query
hvordan kan man beregne alderen i sin query?? YEAR(SUBTIME(CURDATE(), user.birth))>='$_POST[age]' jeg kan ikke få det ovenstående til at virke??
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
12. september 2004 - 14:12
#1
Den linie du viser, returnerer også blot, hvorvidt det beregnede år er større end eller lig værdien i $_POST[age].
12. september 2004 - 14:14
#2
ja det ved jeg... men hvis jeg laver den sådan her virker den stadig ikke... den returnere ikke noget som helst SELECT YEAR(SUBTIME(CURDATE(), user.birth)) AS age ...
12. september 2004 - 14:18
#3
Lad mig gætte, den linie du viser, returnerer '1'?
12. september 2004 - 14:19
#4
Hvilken version af MySQL kører du med? Prøv evt. at vis den del af PHP-koden, hvor du trækker værdien ud...
12. september 2004 - 14:22
#5
$sql = "SELECT name, YEAR(SUBTIME(CURDATE(), user.birth)) AS age, time FROM $DB.user WHERE id=$value"; MySQL 4.1.4-gamma-nt
12. september 2004 - 14:57
#7
den smuttede lige, der skulle selvfølgelig være `` rundt om tabel, ikke ''. SELECT DATE_FORMAT( FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(`fødselsdag`)), '%Y')+0 AS age FROM `tabel` `fødselsdag` og `tabel` er så de eneste der skal skiftes ud.
12. september 2004 - 22:00
#8
hvad er det som er galt med den her? SELECT YEAR(SUBTIME(CURDATE(), user.birth)) AS age ...
13. september 2004 - 15:49
#9
Functionen SUBTIME(expr1,expr2) forventer at expr1 er i formatet 'time' eller 'datetime', og at expr2 er i 'time' formatet.
CURDATE() returnerer ingen af de førnævnte formater - den returner i 'date' formatet.
Desuden tvivler jeg på at du opbevarer brugeren fødselsdato i 'time' formatet, som expr2 skal være :)
Ref:
http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html
13. september 2004 - 22:00
#10
findes der så ikke noget som kan returnere i formatet time i stedet for CURDATE()??
14. september 2004 - 19:34
#11
terrek > jeg får en fejl når jeg bruger dit eksempel :(
14. september 2004 - 19:35
#12
dsj > bruger du selv det eksempel du kom med?
14. september 2004 - 21:24
#13
Hvilken fejl kommer den med, og hvordan ser den færdige kode ud, når du indsætter i mit eksempel?
14. september 2004 - 21:34
#14
$sql = "SELECT name, FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(user.birth)), '%Y')+0 AS age, time, sex, zip, area, pic FROM $DB.user WHERE id=$value"; min fejl kommer fatisk ved feltet time da jeg kører den gennem en funktion der laver en dato... Warning: mktime(): Windows does not support negative values for this function in s:\http\_www\elektrobeat.dk\gfx\req\functions.php on line 71 01/01-1970 01:00
15. september 2004 - 07:18
#15
Som den skriver, så fodrer du mktime() med negative værdier, hvilket ikke understøttes af windows. Så fejlen ligger så vidt jeg kan se, ikke den kode jeg kom med. Men hvis vi skal have det rettet, må du lige fortælle hvad feltet time skal indeholde? Brugerens onlinetid? Kom evt. med koden hvor du bruger mktime(), og der hvor du sætter variablerne, du bruger i mktime();
15. september 2004 - 09:50
#16
Nej, jeg bruger det ikke selv, men egentlig vil jeg også anbefale, at du foretager udregningen i din PHP-kode i stedet.
15. september 2004 - 13:44
#17
terrek > jeg får kun den fejl hvis jeg smider din kode ind?
15. september 2004 - 17:18
#18
Det har du godt nok sagt én gang, og derfor ville jeg gerne se din kode for at kunne rette en evt. fejl, men da dét lader til ikke interesserer dig, kan jeg vel kun tilbyde en PHP løsning: <?php function age($bday,$bmonth,$byear) { $nday = date("j"); $nmonth = date("n"); $nyear = date("Y"); $age = $nyear-$byear; if ($nmonth <= $bmonth) { if ($nmonth == $bmonth) { if ($nday > $bday) { $age--; } } else { $age--; } } return $age; } ?> Du kalder så funktionen ved evt. at skrive echo age(6,8,1987); (brug ikke age(06,08,1987) - det kan give problemer) Det kan sikkert koges ned, men i det her eksempel er det til at gennemskue, hvad der sker.
15. september 2004 - 17:39
#19
$sql = "SELECT name, time, sex, zip, area, pic, FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birth)), '%Y')+0 AS age FROM $DB.user WHERE id=$value";
15. september 2004 - 18:05
#20
Du mangler jo 'DATE_FORMAT('-delen: SELECT name, time, sex, zip, area, pic, DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birth)), '%Y')+0 AS age FROM $DB.user
15. september 2004 - 18:11
#21
shit!! :) ja så var det nok derfor :p tak for hjælpen
15. september 2004 - 18:14
#22
;)
Computerworld tilbyder specialiserede kurser i database-management