sql volgende/vorige

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hipska BE

Hipska BE

30/07/2006 20:28:00
Quote Anchor link
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
 
PHP hulp

PHP hulp

17/11/2024 15:27:46
 
Gerben G

Gerben G

30/07/2006 20:35:00
Quote Anchor link
id - 1
en id +1
 
Jan Koehoorn

Jan Koehoorn

30/07/2006 20:40:00
Quote Anchor link
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

Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Gerben G

Gerben G

30/07/2006 20:44:00
Quote Anchor link
@ jan

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


daar had ik even niet aan gedacht
 
Jan Koehoorn

Jan Koehoorn

30/07/2006 20:44:00
Quote Anchor link
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 ;-)
 
Jan Koehoorn

Jan Koehoorn

30/07/2006 20:44:00
Quote Anchor link
Donhertog:
@ jan

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.
 
Jan Koehoorn

Jan Koehoorn

30/07/2006 20:47:00
Quote Anchor link
Eureka!!!!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
(
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.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Jan Koehoorn

Jan Koehoorn

30/07/2006 21:00:00
Quote Anchor link
Hij kan zelfs nog iets netter, zodat je de id's in de goede volgorde krijgt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Jan Koehoorn

Jan Koehoorn

31/07/2006 09:49:00
Quote Anchor link
En nog korter, hahaha:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(
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
 
Lissy Pixel

Lissy Pixel

31/07/2006 10:59:00
Quote Anchor link
Grinnnn....heb het weer genoteerd voor als ik ook met dit aan de slag wil of.............nodig heb !!
 
Hipska BE

Hipska BE

31/07/2006 17:58:00
Quote Anchor link
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.


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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.