[PHP/MySQL] Sorteren

Pagina: 1
Acties:
  • 129 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Ad Hox
  • Registratie: Maart 2003
  • Laatst online: 16:20
Ik heb een probleem met het sorteren van mijn query.

Ik wil sorteren op 2 tabellen, namelijk een op de dag en op de tijd. Bij de dag moet de hoogste bovenaan komen te staan, dus dag 31 moet boven dag 4 komen. Dit doe ik met behulp van DESC.
De andere tabel is de tijd, daar moet de nieuwste tijd bovenaanstaan (dus 22:00 uur moet boven 03:00 uur).

Ik heb de volgende query opgesteld:
PHP:
1
$sql = "SELECT * FROM lf WHERE update= 'ja' AND maand = 'juni' ORDER BY dag,uur DESC LIMIT 0,5";


Het is voor een weblog. 09 juni, 21:00 uur moet boven 09 juni 08:00 uur en ook boven 08 juni 13:00 uur komen te staan. Dat nu gebeurd: de nieuwste tijd komt bovenaan maar de dag word niet goed gesorteerd: 9 juni staat onderaan, 8 juni bovenaan.

Wat ik geprobeerd heb: uur DESC, dag ASC en andersom maar werkte niet.

Nogmaals het is voor een weblog en als ik een bericht post moet die bovenaan komen te staan. Misschien is er een betere manier om te sorteren?

Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Je wil ze toch allebei op DESC hebben dan?

Acties:
  • 0 Henk 'm!

  • Ad Hox
  • Registratie: Maart 2003
  • Laatst online: 16:20
Ja eigenlijk wel, maar dat werkt dus niet.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ja kan gewoon per veld DESC en ASC opgeven? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Waarom gebruik je niet een DATE/TIME field ipv losse velden? Daarmee gaan de sorteringen altijd goed.

Acties:
  • 0 Henk 'm!

  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01 03:23
of gebruik er gewoon een timestamp bij en dan daar op sorteren, ben je gelijk van je probleem af

This space for rent. Serious inquiries only please.


Acties:
  • 0 Henk 'm!

  • nemesis_
  • Registratie: Mei 2003
  • Laatst online: 15-05-2024

nemesis_

I'm your enemy!

PHP:
1
$sql = "SELECT * FROM lf WHERE update= 'ja' AND maand = 'juni' ORDER BY dag DESC,uur DESC LIMIT 0,5";

Ook een cookie?


Acties:
  • 0 Henk 'm!

  • lammert
  • Registratie: Maart 2004
  • Laatst online: 03-09 11:50
Erkens schreef op vrijdag 09 juni 2006 @ 15:05:
Waarom gebruik je niet een DATE/TIME field ipv losse velden? Daarmee gaan de sorteringen altijd goed.
Inderdaad, gewoon sorteren op timestamp en klaar is kees

Acties:
  • 0 Henk 'm!

  • Ad Hox
  • Registratie: Maart 2003
  • Laatst online: 16:20
Nah, hij voert met behulp van date in php de dag en het uur in.

Als ik sorteer: uur,dag DESC dan komt trouwens de nieuwste dag wel bovenaan, 9 juni maar binnen de dag word de laagste tijd gesorteerd (dus 01.00 uur voor 21.00 uur).

Heb ook niet zoveel ervaring met andere velden in MySQL als DATE

EDIT 1: Maar misschien is het handiger om me daar in te verdiepen :)
EDIT 2: De velden apart DESC'en werkt wel! Zoals hierboven werd aangegeven.

[ Voor 22% gewijzigd door Ad Hox op 09-06-2006 15:09 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Ad Hox schreef op vrijdag 09 juni 2006 @ 15:07:
Heb ook niet zoveel ervaring met andere velden in MySQL als DATE

Maar misschien is het handiger om me daar in te verdiepen :) (edit)
dat is zeker handig, en het voorkomt ook toekomstige problemen, want wat als je bijvoorbeeld alle items van de afgelopen 2 weken wilt zien? Dat gaat je niet eenvoudig lukken met je huidige structuur, omdat je ook eerst nog moet bepalen dat 2 weken geleden een andere maand was etc :)

Acties:
  • 0 Henk 'm!

  • ZroBioNe
  • Registratie: Augustus 2001
  • Niet online
Of een unix timestamp gebruiken..

PHP:
1
time();
doet dat bijv.

Acties:
  • 0 Henk 'm!

  • Rigi
  • Registratie: September 2001
  • Laatst online: 30-11-2018
Ad Hox schreef op vrijdag 09 juni 2006 @ 15:07:
Nah, hij voert met behulp van date in php de dag en het uur in.
...
Als ik me niet vergis kan je dat toch gewoon omzetten naar een timestamp?

EDIT: Ja, dat hierboven is dan natuurlijk weer mooier :X

[ Voor 12% gewijzigd door Rigi op 09-06-2006 15:16 ]


Acties:
  • 0 Henk 'm!

  • Ad Hox
  • Registratie: Maart 2003
  • Laatst online: 16:20
Klopt, jullie hebben gelijk. Maar er staat ook een WHERE conditie in mijn SQL en die pas ik per maand aan, dus selecteer alleen van Juni en als het de volgende maand is, pas ik dat script gewoon even aan :)

Hoewel jullie manier makkelijker werkt, zal ik overwegen om dit in te gaan bouwen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ad Hox schreef op vrijdag 09 juni 2006 @ 16:01:
Klopt, jullie hebben gelijk. Maar er staat ook een WHERE conditie in mijn SQL en die pas ik per maand aan, dus selecteer alleen van Juni en als het de volgende maand is, pas ik dat script gewoon even aan :)
Wat is je punt? ;)
SQL:
1
SELECT FROM_UNIXTIME(`timestampveld`, 'formaat')

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Ad Hox schreef op vrijdag 09 juni 2006 @ 16:01:
Klopt, jullie hebben gelijk. Maar er staat ook een WHERE conditie in mijn SQL en die pas ik per maand aan,
Ueh.. snap ik dit goed? Je wijzigt elke maand je code zodat je de data van die maand binnentrekt?

waarom niet gewoon een scriptje dat alles van de huidige maand binnentrekt? :X
Kijk voor de grap eens op www.php.net/date en zoek eens op het sql commando BETWEEN

Stop uploading passwords to Github!

Pagina: 1