[MySQL/PHP] vorige/volgende op basis van naam

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Ik ben bezig met een soort van foto gallery waarbij ik de vorige en volgende afbeelding uit de rij krijg, het probleem is alleen dat de foto's niet op alfabet geupload worden, de id's worden dan als je de afbeeldingen haalt bijvoorbeeld 5 2 6 1 3
idnaamcategorie
5Foto Acat A
2Foto Bcat A
6Foto Ccat A
1Foto Dcat A
18Foto Dcat B
3Foto Ecat A
28Foto Ecat B


Nou wil ik dus als ik Foto D uit cat A (id 1) op mn pagina heb, als vorige Foto C uit cat A (id 6) en als volgende Foto E uit cat A (id 3) hebben. Ik heb al gezocht op Google maar het enige wat ik vind is een vorige/volgende systeem met gaten in de ID's, of die gesorteerd zijn op datum. Wie kan me op weg helpen met de juiste query?

  • lennartkocken
  • Registratie: September 2004
  • Laatst online: 20-09 20:35
gebruik LIMIT " . $volgendID . ", 1

in je query :)
waarbij $volgendID dus gewoon het fotonummer + 1 (niet fotoID) is.

[ Voor 38% gewijzigd door lennartkocken op 24-08-2006 20:06 ]

Goedkoopste hardware


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Vorige foto: je wil dus een query welke max 1 rij terug geeft en waar categorie A is en de naam voor de huidige naam en de volgorde op naam aflopend.
Deze zin is zo goed als letterlijk naar SQL te vertalen, succes. :):)
Verwijderd schreef op donderdag 24 augustus 2006 @ 20:02:Ik heb al gezocht op Google maar het enige wat ik vind is een vorige/volgende systeem met gaten in de ID's, of die gesorteerd zijn op datum. Wie kan me op weg helpen met de juiste query?
Je meot niet exact hetzelfe probleem zoeken, maar gewoon puur voor het SQL dialect dat je gebruikt een tutorial over de SELECT .. FROM .. WHERE .. ORDER BY .. LIMIT syntax. Meer dan dat is niet nodig, en dit stukje SQL is gewoon verplichte basiskennis.

{signature}


Verwijderd

Topicstarter
Ik dacht blijkbaar te moeilijk, ik zat helemaal te denken aan offsets etc. terwijl idd een simpele query zoals

code:
1
SELECT image_id, image_name FROM images WHERE image_name < "Foto D" ORDER BY image_name DESC LIMIT 1


voldoende is. Bedankt voor het op weg helpen iig :)

[edit]
Hmm ik snap toch niet helemaal wat lennartkocken bedoeld met volgend ID :? volgens wat jij zegt moet ik dus LIMIT 2,1 achter mijn query zetten om de volgende foto te krijgen:

code:
1
SELECT image_id, image_name FROM images ORDER BY image_name LIMIT 2,1


(categorie doet er nu even niet toe) maar dan krijg ik een lege result set...

[ Voor 38% gewijzigd door Verwijderd op 24-08-2006 20:41 ]


Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 22:47
Uit de manual:
The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement. LIMIT takes one or two numeric arguments, which must both be non-negative integer constants (except when using prepared statements).

With two arguments, the first argument specifies the offset of the first row to return, and the second specifies the maximum number of rows to return. The offset of the initial row is 0 (not 1):
Bron: http://dev.mysql.com/doc/refman/5.1/en/select.html

Wat Lennartkocken denk ik bedoelt is dat je -eerst- een lijst maakt met fotonummers, waar de foto's al gealfabetiseerd in staan, en vervolgens met limit $fotoID, 1 het nummer ophaalt van de volgende foto in die lijst.

Maar je eigen query werkt mooier vind ik, gebruik zelf ook zoiets voor het vinden van een ID van het volgende/vorige item in m'n lijst blogitems (er willen nl nog wel eens gaten zitten in die lijst :)), overigens gesorteerd op datum ipv op naam maar same difference ;)

[ Site ] [ twitch ] [ jijbuis ]