verdorie ik kom er weer niet uit.

ik bekom via de url het id van een record dat hij moet tonen, maar ik wil nog een link maken op de pagina dat hij naar het volgende id gaat en een link voor vorige id.

SELECT * FROM ".$tabel." WHERE id = ".$_GET['id']." and album = 'test' LIMIT 1
id - 1
en id +1
SELECT * FROM ".$tabel." WHERE id = ".$_GET['id']." and album = 'test' LIMIT 1

Tips:
• gebruik geen * maar pak alleen de velden die je wilt
• WHERE id = ".$_GET['id']." is voldoende. Als het goed is, is je id uniek

Als er records verwijderd zijn, zijn je id's niet meer opeenvolgend. Je kunt dus niet gewoon id - 1 en id + 1 doen, zoals Donhertog voorstelt.

Suggestie:

SELECT veld
FROM tabel
WHERE id >= $_GET[id]
LIMIT 2

en:

SELECT veld
FROM tabel
WHERE id <= $_GET[id]
LIMIT 2

[edit]
dit zou ook kunnen werken:
SELECT veld
FROM tabel
WHERE id <= $_GET[id]
OR id > $_GET[id]
ORDER BY id
LIMIT 3

[/edit]
@ jan


Als er records verwijderd zijn, zijn je id's niet meer opeenvolgend


daar had ik even niet aan gedacht
Correctie: die edit uit mijn vorige post werkt natuurlijk niet. Hij pakt dan namelijk alle records en sorteert de eerste drie op id. Beschouw die tip dus als niet verzonden ;-)
Donhertog schreef op 30.07.2006 20:44
@ jan


Als er records verwijderd zijn, zijn je id's niet meer opeenvolgend


daar had ik even niet aan gedacht

Precies, dus ik denk dat hij niet onder twee queries uitkomt.
Eureka!!!!

(
SELECT id
FROM tabel
WHERE id = 500
)

UNION

(
SELECT id
FROM tabel
WHERE id > 500
ORDER BY id ASC
LIMIT 1
)

UNION

(
SELECT id
FROM tabel
WHERE id < 500
ORDER BY id DESC
LIMIT 1
)

[edit]
Die 500 is maar een voorbeeld. Verander die in die GET waarde.
[/edit]
Hij kan zelfs nog iets netter, zodat je de id's in de goede volgorde krijgt:

(SELECT id
FROM tabel
WHERE id = 500)

UNION

(SELECT id
FROM tabel
WHERE id > 500
ORDER BY id ASC
LIMIT 1)

UNION

(SELECT id
FROM tabel
WHERE id < 500
ORDER BY id DESC
LIMIT 1)

ORDER BY id ASC
En nog korter, hahaha:

(
SELECT id
FROM tabel
WHERE id >=500
ORDER BY id ASC
LIMIT 2
)

UNION

(
SELECT id
FROM tabel
WHERE id < 500
ORDER BY id DESC
LIMIT 1
)
ORDER BY id ASC
Grinnnn....heb het weer genoteerd voor als ik ook met dit aan de slag wil of.............nodig heb !!
bedankt jan, ik hoopte dat jij ging reageren ;)

kan ik in die query dan ook nog eens de gegevens van id 500 ophalen?
[edit]dit is al niet meer nodig.[/edit]

en werkt dit als je id auto_increment is? kan je niet iets doen als next_insert_id ofzoiets

Reageren