sql volgende/vorige
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
en id +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
dit zou ook kunnen werken:
SELECT veld
FROM tabel
WHERE id <= $_GET[id]
OR id > $_GET[id]
ORDER BY id
LIMIT 3
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Quote:
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:
@ jan
daar had ik even niet aan gedacht
Quote:
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(
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
)
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.
Die 500 is maar een voorbeeld. Verander die in die GET waarde.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(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
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
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Grinnnn....heb het weer genoteerd voor als ik ook met dit aan de slag wil of.............nodig heb !!
kan ik in die query dan ook nog eens de gegevens van id 500 ophalen?
Edit:
dit is al niet meer nodig.
en werkt dit als je id auto_increment is? kan je niet iets doen als next_insert_id ofzoiets
Gewijzigd op 01/01/1970 01:00:00 door Hipska BE