Avatar billede benjaboy Nybegynder
03. august 2009 - 18:53 Der er 14 kommentarer og
1 løsning

Udregn alder med 00-00-0000

Hejsa.

Har skrevet i denne tråd. http://www.eksperten.dk/spm/862918#reply_7428782
Men da det ikke er min og der er givet svar tror jeg det er bedst jeg også lige opretter min egen.

Har denne koden:
$result = mysql_query("SELECT brugernavn,alder,YEAR(NOW())-YEAR(alder)-IF(DAYOFYEAR(NOW())<DAYOFYEAR(alder),1,0) AS age FROM brugere WHERE id = '".$_SESSION['brugerid']."'");
$r=mysql_fetch_array($result);
echo "User: " . $r["brugernavn"] . "<br/>Alder: " . $r["age"] . "<br/>Fødselsdag: " . $r["alder"] . "<br/>";

og den giver dette:
User: BenjaBoy
Alder:
Fødselsdag: 20-11-1992

En der kan hjælpe med og regne alder ud?

Mvh Benjamin
Avatar billede benjaboy Nybegynder
03. august 2009 - 20:56 #1
Har denne nu:
$query = mysql_query("SELECT * FROM brugere WHERE id = '".$_SESSION['brugerid']."'") or die(mysql_error());
while($row = mysql_fetch_array($query)) {
$age = time() - mktime( 00, 00, 0, $row[maaned], $row[dag], $row[aar] );
// Timestamp starter er fra 1970
$y = strftime( '%Y', $age ) - 1970;
// Timestamp starter fra januar, altså 1
$m = strftime( '%m', $age ) - 1;
?>
<br>
<span style="text-align: center; font-size: 24px; color: #FF0000;">Bekræft</span><br>
<table border="0" align="center" cellspacing="0" cellpadding="0">
<tr>
<td><img src="img/film/example3.jpg"></td>
<td align="left" valign="top" style="padding: 5px 10px 10px 40px; font-size: 16px;">
Navn: <? echo''. $row[navn] .''; ?><br>
Adresse: <? echo''. $row[adresse] .''; ?><br>
By: <? echo''. $row[city] .''; ?> Post nr: <? echo''. $row[postnr] .''; ?><br>
Email: <? echo''. $row[email] .''; ?><br>
Køn: <? echo''. $row[kon] .''; ?><br>
Alder: <? echo strftime( "$y år", $age ); ?>.<br>
<br>
<table border="0" cellspacing="20">
<tr>
<td align="right"><a href="bekraeft.php?status=success"><img border="0" src="img/bestil2.gif"></a></td>
<td align="left"><a href="shop.php?genre=<?php echo $_GET['genre']; ?>"><img border="0" src="img/fortryd.gif"></a></td>
</tr>
</table>
</td>
</tr>
</table>
<?php
}

Den siger bare jeg er 17 når jeg kun er 16.
Dato: 20/11-92.

Mvh Benjamin
Avatar billede showsource Seniormester
04. august 2009 - 07:34 #2
Gem datoer i standard format, YYYY-MM-DD

og så

SELECT YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(), 5)<RIGHT(birth, 5)) as alder
FROM
brugere
WHERE
id = '".$_SESSION["brugerid"]."'"
Avatar billede benjaboy Nybegynder
08. august 2009 - 18:48 #3
Hvordan skal det så gemmes i databasen?
int, varchar eller?
Og hvad skal feltet hedde?

Mvh Benjamin
Avatar billede benjaboy Nybegynder
08. august 2009 - 18:57 #4
Her er koden:
$query = mysql_query("
SELECT YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(), 5)<RIGHT(birth, 5)) as alder
FROM
brugere
WHERE id = '".$_SESSION['brugerid']."'") or die(mysql_error());
while($row = mysql_fetch_array($query)) {
?>
<br>
<span style="text-align: center; font-size: 24px; color: #FF0000;">Bekræft</span><br>
<table border="0" align="center" cellspacing="0" cellpadding="0">
<tr>
<td><img src="img/film/example3.jpg"></td>
<td align="left" valign="top" style="padding: 5px 10px 10px 40px; font-size: 16px;">
Navn: <? echo''. $row[navn] .''; ?><br>
Adresse: <? echo''. $row[adresse] .''; ?><br>
By: <? echo''. $row[city] .''; ?> Post nr: <? echo''. $row[postnr] .''; ?><br>
Email: <? echo''. $row[email] .''; ?><br>
Køn: <? echo''. $row[kon] .''; ?><br>
Alder: <? echo $row[alder];  ?>.<br>
<br>
<table border="0" cellspacing="20">
<tr>
<td align="right"><a href="bekraeft.php?status=success"><img border="0" src="img/bestil2.gif"></a></td>
<td align="left"><a href="shop.php?genre=<?php echo $_GET['genre']; ?>"><img border="0" src="img/fortryd.gif"></a></td>
</tr>
</table>
</td>
</tr>
</table>
<?php
}

Og her er fejlen:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')-(RIGHT(CURDATE(), 5)
Avatar billede showsource Seniormester
09. august 2009 - 07:27 #5
Feltet i db skal være et DATE felt.
Datoer skal så gemmes som i formatet 1963-12-27

ÅR-MÅNED-DAG YYYY-MM-DD
Avatar billede benjaboy Nybegynder
10. august 2009 - 19:35 #6
Og feltet skal hedde YEAR? :)
Avatar billede benjaboy Nybegynder
10. august 2009 - 20:14 #7
Får stadig den der fejl som jeg skrev i #4
Avatar billede showsource Seniormester
11. august 2009 - 09:31 #8
SELECT (YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(), 5)<RIGHT(birth, 5)) as alder

Feltet i tabellen hedder her birth, og er et DATE felt, YYYY-MM-DD
Avatar billede benjaboy Nybegynder
11. august 2009 - 17:00 #9
Hey det virkede sku :)

Mange tak for hjælpe.
Når man så skal gemme det må det da være:

date("Y/m/d");

Mvh Benjamin
Avatar billede showsource Seniormester
12. august 2009 - 06:59 #10
Gem i standard formaet, YYYY-MM-DD

Hvis du vil gemme aktuel dato:
UPDATE tabel SET birth = CURDATE() WHERE id = 1

Hvis dato kommer fra brugerinput, så lad dag, måned og år være tre select, og ved post tjekke at det er tal, og derefter bruge checkdate() inden du tilsidst gemmer i db.
http://dk.php.net/manual/en/function.checkdate.php

$dag = $_POST["year"]."-".$_POST["maaned"]."-".$_POST["dag"];

UPDATE tabel SET birth = '".$dag."' WHERE id = 1


Og lidt go' læsning:
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
Avatar billede benjaboy Nybegynder
12. august 2009 - 17:00 #11
Hvade og tænkt på det med:
$dag = $_POST["year"]."-".$_POST["maaned"]."-".$_POST["dag"];

Men det gør de inde i rediger bruger.
Og så skal de jo kunne se hvad de har indtastet.
Så kan jeg jo ikke bruger 0000-00-00 til noget? :)

Mvh Benjamin
Avatar billede showsource Seniormester
12. august 2009 - 19:36 #12
Altså i formularen, så valgt dato/år er selected ?

SELECT YEAR(birth) as f_aar, MONTH(birth) as f_maaned, DAYOFMONTH(brith) as f_dag WHERE id = 1

Når du så viser formularen, ( med en forløkke ), kan du tjekke om en værdi skal være selected.
Avatar billede showsource Seniormester
12. august 2009 - 19:38 #13
FROM tabel WHERE .... ( men det er du vel med på :O] )
Avatar billede benjaboy Nybegynder
25. august 2009 - 17:06 #14
Det virkede. smid et svar :)
Avatar billede showsource Seniormester
25. august 2009 - 22:14 #15
ok
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