Avatar billede simon_jacobsen Nybegynder
16. januar 2007 - 19:39 Der er 15 kommentarer og
1 løsning

alder ud fra timestamp

Hvis jeg har en mysql database med nogle brugeres alder som timestamp af deres fødselsdato, hvordan kan jeg så gøre sådan at jeg kan Skrive en alder f. eks 21 i et søgefelt og så lede i databasen efter alle de timestamps hvor brugeren er 21?
Avatar billede showsource Seniormester
16. januar 2007 - 19:46 #1
timestamp, er vel et datetime felt? I formatet Y-m-d ??
Avatar billede simon_jacobsen Nybegynder
16. januar 2007 - 19:48 #2
Nej er gemt i:

mktime(0,0,0,$maaned,$dag,$aar);
Avatar billede showsource Seniormester
16. januar 2007 - 19:56 #3
hmm, ok, men med et datefelt, ville dette ellers virke! :O)

$find = "SELECT * FROM tabel WHERE (YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(), 5)<RIGHT(birth, 5)) = ". intval($_POST["alder"]);

$hent = mysql_query($find) or die (mysql_error());

Men kan da ændres til brug for et timestamp
Avatar billede simon_jacobsen Nybegynder
16. januar 2007 - 20:03 #4
Okay, kan nemt lave det om så formatet  bliver et datefelt.

Men forstår ikke helt din $find variable
Avatar billede showsource Seniormester
16. januar 2007 - 20:05 #5
intval($_POST["alder"]) sikrer at det er ewt tal du bruger i query

(YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(), 5)<RIGHT(birth, 5))
er hentet fra manuelen, og udregner et datefelt til antal år.
Avatar billede showsource Seniormester
16. januar 2007 - 20:06 #6
Altså feltet "birth" er f.eks. 1963-12-27
Avatar billede simon_jacobsen Nybegynder
16. januar 2007 - 20:16 #7
kan ikke lige finde fejlen ved dette:

<?
if(!empty($_POST[submit])){
include("sqlserver.php");
$birth=$_POST["alder"];
$find = "SELECT * FROM brugerdb WHERE (YEAR(CURDATE())-YEAR($birth))-(RIGHT(CURDATE(), 5)<RIGHT($birth, 5)) = ". intval($_POST["alder"]);
$hent = mysql_query($find) or die (mysql_error());
$antal = mysql_num_rows($hent);
echo $antal;
}
?>
Avatar billede showsource Seniormester
16. januar 2007 - 20:17 #8
$birth skal være feltnavnet i din tabel
Avatar billede showsource Seniormester
16. januar 2007 - 20:19 #9
<?php

if(!empty($_POST[submit])){
include("sqlserver.php");

$find = "SELECT * FROM brugerdb WHERE (YEAR(CURDATE())-YEAR(felt))-(RIGHT(CURDATE(), 5)<RIGHT(felt, 5)) = ". intval($_POST["alder"]);
$hent = mysql_query($find) or die (mysql_error());
$antal = mysql_num_rows($hent);
echo $antal;
}

?>

Og felt skal jo så være et date felt, a'la' 1977-01-16
Avatar billede simon_jacobsen Nybegynder
16. januar 2007 - 20:20 #10
ok nu virker det :)
tager den højde for skudår ? :)
Avatar billede showsource Seniormester
16. januar 2007 - 20:26 #11
Vil jeg tro, da det er "ren mysql"
Avatar billede showsource Seniormester
16. januar 2007 - 20:31 #12
Vil jeg tro, da det er "ren mysql"
er jo så nok noget vrøvl da der jo laves en udregning, uanset skudår
Avatar billede simon_jacobsen Nybegynder
16. januar 2007 - 20:36 #13
Hvordan laver man så 1977-01-16 om til en alder via php?
Avatar billede simon_jacobsen Nybegynder
16. januar 2007 - 20:44 #14
kan du ikke lige smide et svar :)
Avatar billede showsource Seniormester
17. januar 2007 - 07:16 #15
Det er der vist svaret på her:
http://www.eksperten.dk/spm/756479
Avatar billede simon_jacobsen Nybegynder
21. januar 2007 - 16:03 #16
takker :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester