Avatar billede yHec Novice
30. august 2004 - 13:01 Der er 11 kommentarer og
1 løsning

Dato sammenligning

Jeg skal have sammenlignet to datoer... Og det troede jeg ikke  kunne være så svært....

Jeg henter den ene i et DATE-felt i en mySQL. Splitter den op med explode og laver et timestamp med mktime.

$expl=explode("-",$row_rs_comment['Dato']);
$forgammel=date("d. M-Y", mktime(0, 0, 0, $expl[1]+1, $expl[2], $expl[0]));
$idag=date("d. M-Y");

Så vidt så godt...

Så kommer sammenligningen...

if ($idag<$forgammel);
    echo '<br>ældre';
if ($idag>$forgammel);
    echo '<br>yngre';

Og den virker ikke...

Nogen forslaw??

Y
Avatar billede yHec Novice
30. august 2004 - 13:01 #1
Forresten; den spytter begge resultater ud...
Avatar billede razor Nybegynder
30. august 2004 - 13:04 #2
Proev at sammenligne dem som unix-timestamps. Det som mktime() og time() returnerer.
Avatar billede dennismp Nybegynder
30. august 2004 - 13:23 #3
Kan du ikke bare lade databasen gøre det for dig?

SELECT felt,felt,felt, .. , now()<Dato
FROM ..


Så vil du kunne se på den kolonne om det givne udtryk er sandt eller ej.
Avatar billede dennismp Nybegynder
30. august 2004 - 13:24 #4
det skal nok være curdate() istedet for now.
Avatar billede yHec Novice
30. august 2004 - 13:28 #5
Sagen er den, at det drejer om et jokesarkiv, hvor tilføjelses datoen er en del af db... Det der skal ske, er at der udfor de nyeste (yngre end en måned) vittigheder skal stå et "Ny!!" (el. lign)... Altså, alle records skal vises, men nogen skal fremhæves!! Kan det gøres i en sql sætning?

Iøvrigt er det jo unixstamps der sammenlignes! De er bare formatterede til output

Y
Avatar billede dennismp Nybegynder
30. august 2004 - 13:35 #6
Ja.

.. SELECT felt,felt,felt, .. , now()<dato as ny


if( $row['ny'] == 1 )
  print "NY NY NY";
print $row['titel']..

..

osv.

Værdien er 0 hvis udtrykket er falsk, 1 hvis det er sandt.
Avatar billede yHec Novice
30. august 2004 - 14:12 #7
Dennismp >> det var dog en gribende enkel løsning:-)

Smid et svar
Avatar billede dennismp Nybegynder
30. august 2004 - 14:17 #8
Jeg er doven af natur :-)
Avatar billede Slettet bruger
01. september 2004 - 02:21 #9
Og ellers ville det da også være lettere at lade MySQL lave om til unixtime i stedet for at have PHP til at gøre det manuelt. Her er lidt eksempelkode til inspiration.

$nu=time();
$maxalder=60*60*24 * 30; // Max alder for ny poster er 30 dage.

SELECT felt,felt,felt, .. , UNIX_TIMESTAMP(dato) as unixtime

$alder=$nu-$row['unixtime']; // alder er nu beregnet i sekunder
if($alder<$maxalder)
  print "NY NY NY";
Avatar billede dennismp Nybegynder
01. september 2004 - 08:47 #10
Øh? PHP gør jo intet af det manuelt? Det er MySQL der giver resultatet af sammenligningen, som så læses af php. PHP har slet ikke fat i datoen. (Med mindre du kommenterer razor's indlæg?)
Avatar billede Slettet bruger
01. september 2004 - 12:38 #11
Jeg tænkte på som et andet alternativ til den kode fra selve spørgsmålet.
Avatar billede dennismp Nybegynder
01. september 2004 - 12:42 #12
Ahh :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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