Avatar billede sevinding Juniormester
27. december 2010 - 08:09 Der er 10 kommentarer og
1 løsning

udregne alder mellem 2 datoer

Hej.
Jeg bruger flg. script til at udregne alder:

$q = mysql_query("SELECT *, (YEAR(CURDATE())-YEAR(born))-(RIGHT(CURDATE(), 5)<RIGHT(born, 5)) as alder, DATE_FORMAT(born, '%d-%m-%Y') AS ny_dato FROM tour WHERE id=$id")
or die(mysql_error());

Det virker også fint hvis det er alder til i dag. Nu er der jo nogle ryttere der er døde. Hvordan gør jeg, så jeg får alderen frem på de der er døde samtidig med at jeg bibeholder current date på de der fortsat lever. Jeg har et date felt der hedder died.
Se på: http://www.tourfacts.dk/profilryttere1.php?id=3390
Avatar billede webweaver Praktikant
27. december 2010 - 11:26 #1
Kan du ikke bare checke med en if sætning om died er true?
Altså om der er en dato i det felt.

Og hvis der så er, lave CURDATE om til YEAR(died) feltet ...
Avatar billede sevinding Juniormester
27. december 2010 - 18:28 #2
Det lyder sikkert rigtigt :-). Nu er jeg lidt af en novice i php. Det jeg bruger er noget jeg ændret fra koder jeg har fundet.
Er det sådan at du evt. ville prøve at ændre

$q = mysql_query("SELECT *, (YEAR(CURDATE())-YEAR(born))-(RIGHT(CURDATE(), 5)<RIGHT(born, 5)) as alder, DATE_FORMAT(born, '%d-%m-%Y') AS ny_dato FROM tour WHERE id=$id")
or die(mysql_error());

til noget i retning af hvad du mener, så kan jeg forhåbentlig passe det til.
På forhånd tak
Avatar billede webweaver Praktikant
27. december 2010 - 21:02 #3
Det kan fx laves således;

<?php

$check = mysql_query("SELECT died FROM tabel") or die(mysql_query());
                           
if (mysql_result($check,0) != 0) {
                       
$q = mysql_query("SELECT *, (YEAR(died) - YEAR(born)) - (RIGHT(died, 5)<RIGHT(born, 5)) as alder, DATE_FORMAT(born, '%d-%m-%Y') AS ny_dato FROM tabel") or die(mysql_error());
$data = mysql_fetch_array($q);
                           
echo $data['alder'] . " år<br>DØD";
                           
} else {
                       
$q = mysql_query("SELECT *, (YEAR(CURDATE()) - YEAR(born)) - (RIGHT(CURDATE(), 5)<RIGHT(born, 5)) as alder, DATE_FORMAT(born, '%d-%m-%Y') AS ny_dato FROM tabel") or die(mysql_error());
$data = mysql_fetch_array($q);
                           
echo $data['alder'] . " år<br>LEVER";
                               
}

?>


Dette har jeg lavet ud fra at du har DATETIME i din database.
Avatar billede sevinding Juniormester
28. december 2010 - 04:35 #4
Tusind tak.
Det var lige hvad jeg søgte. Skal bare lige ha det flettet ind i min kode.
Sender du et svar, så jeg ka uddele de nfortjente point?
Avatar billede sevinding Juniormester
28. december 2010 - 05:39 #5
Hej igen.
Jeg var lige hurtig nok på aftrækkeren.
I died feltet står der som standard: 0000-00-00
Hvordan undgår jeg at få det med?
Jeg har prøvet at ændre:
if (mysql_result($check,0) != 0) {
til
'if (mysql_result($check,0) != 0000-00-00) {

Jeg må også lige sige at jeg kun bruger DATE og ikke DATETIME
Avatar billede webweaver Praktikant
28. december 2010 - 13:28 #6
Om du bruger DATE eller DATETIME er ligegyldigt. Det virker med begge dele. Når du siger at den ikke skal tage 0000-00-00 med, hvad mener du så? Den tager det nemlig ikke med, sådan som jeg har lavet det længere oppe. Hvis died feltet er tomt, og dermed står til 0000-00-00, vil den vise ham som "levende".

Det er vel det der er meningen? Så prøv at forklare lidt nærmere hvad du mener? :-)
Avatar billede webweaver Praktikant
28. december 2010 - 13:31 #7
Se evt. http://www.lasse-jensen.dk/eksperten/curdate.php
Der står died til 000-00-00, hvilket du også kan se, i og med at den er tom. Og personen vises som levende.
Avatar billede sevinding Juniormester
28. december 2010 - 14:28 #8
Det er mig der ikke tænkte mig om. Dit udspil virker perfect.
Jeg bruger en stump kode:

if(!$r[died]); else echo "$r[new_date]<br>\n";

og det er den stump, der driller. Kan du hjælpe mig med at få den stump til kun at udskrive hvis der ikke står 0000-00-00?
Jeg er godt klar over at jeg sætter din tålmodighed på prøve.
Avatar billede webweaver Praktikant
28. december 2010 - 14:45 #9
Det gør skam slet ikke noget. Det er jo derfor at jeg er herinde - for at hjælpe folk :-)

Du kan bruge den samme if sætning igen, som jeg lavede.

if (mysql_result($check,0) != 0) {

// Hvis personen er død/den ikke står til 0000-00-00.

} else {

// Hvis ikke ovenstående ....

}


Hvis du gerne vil bruge dine egne variabler, så burde noget i stil med,

if ($r['died'] != 0) {

// Hvis personen er død/den ikke står til 0000-00-00.

} else {

echo $r['new_date'] . "<br>\n";

}
Avatar billede sevinding Juniormester
28. december 2010 - 15:16 #10
Sådan.
Nu må du gerne sende et svar,så vi kan få afregnet.
Tak for det.
Avatar billede webweaver Praktikant
28. december 2010 - 16:19 #11
Det var så lidt :-)

Tak for point.
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