Avatar billede Mik2000 Professor
12. december 2006 - 22:01 Der er 7 kommentarer og
1 løsning

Kontoller datoer og tider

Jeg har en tabel hvor der bl.a. er 2 felter. Date og time. I date gemmes en dato (YYYY-MM-DD) og i time gemmes en tid (hh:mm:ss)

Jeg er ved at lave en side, hvor noget på den, kun skal vises hvis datoen i databasen, ligger før dags dato, da posten ellers er udløbet.

Er der en nem funktion til, i f.eks. en while løkke, at tjekke om databasens dato og tid, ligger før dags dato og tid?
Avatar billede Slettet bruger
13. december 2006 - 00:55 #1
Du kan gøre det direkte i databasekaldet, ved hjælp af UNIX_TIMESTAMP() og NOW()

Her kan du blot vælge kun at hente de posts der er senere end dags dato.

--pacroon
Avatar billede Mik2000 Professor
13. december 2006 - 01:27 #2
Har du mulighed for at lave et eksempel?

Hvis ja så er pointene dine :)
Avatar billede Slettet bruger
13. december 2006 - 02:03 #3
Når du har dato og tid i to forskellige felter kan det godt være det bliver lidt snørklet, men UNIX_TIMESTAMP tager et argument som er i DATETIME format (yyyy-mm-dd hh:mm:ss - faktisk som dine to felter sat sammen) :)

Så hvis du kan concatenat'e dem i PHP (der er nok en nemmere måde) - så kan du:

SELECT foo
FROM table
WHERE UNIX_TIMESTAMP($datetime) > NOW()
ORDER BY bar

Kan du få det til at virke?

Du kan også bruge DATE_FORMAT i mySQL til at formatere dine datofelter. (fx DATE_FORMAT(date, '%d%m%y  %h%m%s)

--pacroon
Avatar billede greew Nybegynder
13. december 2006 - 09:21 #4
Der kan eventuelt også laves noget CONCAT(), så

SELECT foo
FROM table
WHERE UNIX_TIMESTAMP(CONCAT(date, ' ', time)) > NOW()
ORDER BY bar

Den er ikke testet men burde umiddelbart virke - held og lykke :)
Avatar billede Slettet bruger
13. december 2006 - 09:52 #5
Det er nok vejen frem, ja :)
Avatar billede Mik2000 Professor
13. december 2006 - 09:56 #6
Hejsa

Forsøgte denne (det er den som den kommer frem med i koden under):
SELECT * FROM paintings WHERE UNIX_TIMESTAMP('2004-01-01 11:15:15') > NOW();

Men hvordan fortæller man den at den skal vise posterne. Jeg har prøvet understående.

$check_datetime = "SELECT * FROM paintings WHERE issold = 0 ORDER BY auctionenddate DESC";
$check_datetime2 = mysql_query($check_datetime);
while($check_datetime3 = mysql_fetch_row($check_datetime2)) {
   
    $datetime = $check_datetime3[7]." ".$check_datetime3[9];
   
    $check_datetime = "SELECT * FROM paintings WHERE UNIX_TIMESTAMP('$datetime') > NOW()";
    $check_datetime2 = mysql_query($check_datetime);
    $check_datetime3 = mysql_fetch_row($check_datetime2);
   
    $paintingsid = $check_datetime3[0];
   
    mysql_query("UPDATE paintings SET issold = '1' WHERE paintingsid = '$paintingsid'" );

}
Avatar billede Slettet bruger
13. december 2006 - 11:33 #7
Så skal du jo bare echo'e eller print'e de ting du får ud i $check_datetime3 :)
Avatar billede Mik2000 Professor
26. december 2006 - 02:10 #8
Problemet er at jeg ikke får noget ud, men fandt en anden måde at løse problemet (omstrukturering af siden - derfor ingen løsning skrevet her)

Men tak for at prøve at hjælpe og god jul
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