Avatar billede Fiber Bjørn Juniormester
25. marts 2006 - 16:54 Der er 22 kommentarer og
1 løsning

udskriv DB efter dato men fra datoen i dag og frem

Sådan ser den ud i dag.

$query = mysql_query("select * from vmcc_traninger order by DATE_FORMAT(dato,'%d-%m-%Y') limit $limit");

Men ville gerne kun vise datoerne fra i dag og frem. Så alle de gamle datoer ikke bliver vist, og det kan jeg ikke halt få til at lykkes???
Avatar billede hmortensen Nybegynder
26. marts 2006 - 01:12 #1
Måske sådan her:
WHERE dato >= NOW()

Ud over det, du sorterer efter en formateret dato, hvilket giver "forkerte" resultater.
Avatar billede Slettet bruger
29. marts 2006 - 00:20 #2
Som hmortensen antyder:

SELECT * FROM vmcc_traninger WHERE dato < NOW() ORDER BY dato LIMIT $limit
Avatar billede Slettet bruger
29. marts 2006 - 00:22 #3
Og jeg kom lige til at vende den forkert. < skulle være > og skal måske også have et = på som i hmortensens forslag.
Avatar billede Fiber Bjørn Juniormester
29. marts 2006 - 09:13 #4
Det virker ok bort set fra at udskriften først er fra d. 21-06-06 hvilket jeg ikke kan forstå hvor den får den dato fra.
http://www.vmcc.dk/traninger.php
Avatar billede hmortensen Nybegynder
29. marts 2006 - 09:22 #5
Gentager lige mig selv:
"Ud over det, du sorterer efter en formateret dato, hvilket giver "forkerte" resultater."
Avatar billede Fiber Bjørn Juniormester
29. marts 2006 - 10:32 #6
ok, jeg tror vi går lidt forbi hinanden. Det jeg gerne vil er at sorter træningerne efter den dato som trænings datoen er. Men der er jo ikke noget ved at vise de træninger der har været. Altså fra dagen i dag og bag ud.
Avatar billede Slettet bruger
29. marts 2006 - 15:39 #7
Ja, og det er også det, som både jeg og hmortensen har svaret på.

WHERE dato <= NOW()
betyder at den kun skal vise rækker, der ikke er passeret endnu.

ORDER BY DATE_FORMAT(...
betyder at den skal sortere efter den formaterede dato, og det giver ikke det resultat, du forventer. Læg mærke til at de står sorteret i orden efter dag-i-måneden, da det er det første af den formaterede dato.

ORDER BY dato
betyder at den skal sortere efter selve datoen
Avatar billede hmortensen Nybegynder
29. marts 2006 - 15:56 #8
sandbox, nu vendte du tegnet igen ;)
Avatar billede Slettet bruger
29. marts 2006 - 16:02 #9
Jeg sværger. Det er mit tastatur, som diskriminerer mod større-end tegn. Men det kan også klares:

WHERE NOW() <= dato

Sådan! Så gør den, som den skal, og mit tastatur får tegnet vendt, som det nu synes ;-)
Avatar billede Fiber Bjørn Juniormester
29. marts 2006 - 17:24 #10
hvilken DB type skal det være
Avatar billede Slettet bruger
29. marts 2006 - 17:31 #11
Mener du feltet dato i tabellen? Det skal vel være en DATE eller DATETIME. Andet giver ikke rigtig mening.
Avatar billede Fiber Bjørn Juniormester
29. marts 2006 - 17:43 #12
ja tænkte jeg nok. jeg har det til at ligge som varchar. Er det så en måde man kan udskrive datoen, så det kommer til at se sådan ud. 29-03-2006

her er lige hvordan jeg udskriver det
<td width="15%"><?echo"<span class='sort_tekst'>$getter[dato] :</span>";?></td>
Når den udskrives nu skrives den sådan  2006-29-03
Avatar billede Slettet bruger
29. marts 2006 - 17:53 #13
Ja, det kan man sagtens. Det kan gøres på flere forskellige måder:

Min foretrukne måde er, at lade sql-kaldet lave et timestamp, så jeg i PHP-koden kan bruge date() for at formatere den.

En anden måde er at bruge DATE_FORMAT() i sql-kaldet - men i SELECT-delen, ikke i ORDER BY delen.
Avatar billede Fiber Bjørn Juniormester
29. marts 2006 - 18:08 #14
så nu er feltet dato i tabellen lavet om til DATE og nu virker det. Men det med at skrive det ud i den rigtig række fælge 29-03-2006 er jeg ikke lige klar over hvad dert er du vil med date()
Så go er jeg ik :) men bliver det forhåbenligt.
Avatar billede hmortensen Nybegynder
29. marts 2006 - 19:49 #15
SELECT *, DATE_FORMAT(dato, '%d-%m-%Y') AS nyDato FROM ...

SÅ kan du fange den formaterede dato med $getter['nyDato']


Sandbox, hvis der ikke skal laves meget specielt dato formatering, er der da ingen grund til at lave det om til unix timestamp, og så formatere i php'en bagefter.
Avatar billede Fiber Bjørn Juniormester
30. marts 2006 - 14:15 #16
det virker :) Det kom til at se sådan ud
$query = mysql_query("SELECT * , DATE_FORMAT(dato, '%d-%m-%Y') AS nyDato FROM vmcc_traninger WHERE dato >= NOW() ORDER BY dato LIMIT $limit");

$getter[nyDato]
feltet dato i tabellen er DATE type
Så nu mangler der vist kun et svar så der kan gives point :)
Avatar billede hmortensen Nybegynder
30. marts 2006 - 14:16 #17
Vi kan vel ta en deler mig og sandbox :)
Avatar billede Fiber Bjørn Juniormester
30. marts 2006 - 14:45 #18
jep det var som også meningen, så skal han vel også sende et svar ???
Avatar billede Slettet bruger
31. marts 2006 - 02:12 #19
Det kommer her.
Avatar billede Slettet bruger
31. marts 2006 - 02:13 #20
Og jeg prøver igen
Avatar billede Fiber Bjørn Juniormester
01. april 2006 - 11:38 #21
fu.. jeg kom kun til at vælge hmortensen kan men annuler et godkendt svar eller skal jeg lave et spørgsmål mere og give dig snadbox point. Fordi point skal du have
Avatar billede hmortensen Nybegynder
01. april 2006 - 13:50 #22
Jeg opretter bare et spørgsmål til sandbox med point ;)

Til en anden gang, skal du markere begge brugere der skal have point, for at dele dem imellem.

http://www.eksperten.dk/spm/699822
Avatar billede Slettet bruger
01. april 2006 - 14:22 #23
Så er der lagt et svar i den anden.

Og tak til dig også, steffenbloch, for points, selv om de lige tog en smuttur forbi hmortensen ;-)
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
Computerworld tilbyder specialiserede kurser i database-management

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