Laatste 3 laten zien... op volgorde

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kevin Stoove

Kevin Stoove

18/09/2004 14:33:00
Quote Anchor link
Ik heb een database met een tabel. In die tabel is informatie geplaatst en dat is gerangschikt via automatische ID nummers.

Nu gebruik ik deze code:

SELECT * FROM lokaties ORDER BY id ASC LIMIT 3

Maar ik krijg niet wat ik wil. Ik wil dat de laatste 3 worden getoond (Dus degene met de hoogste ID nummers) met degene die het laatst geplaatst is onderaan komt te staan. Dus bijvoorbeeld momenteel staan er 5 rijen in mijn tabel dan laat hij dit zien

3
4
5

Dat is wat ik wil hebben. En als ik een rij toevoeg dat hij dan:

4
5
6

Laat zien... snappen jullie wat ik bedoel? Hoe doe ik dit? Want de code die ik nu gebruik is dus niet goed...
 
PHP hulp

PHP hulp

05/05/2024 21:02:05
 
John de Boer

John de Boer

18/09/2004 15:04:00
Quote Anchor link
Dan moet je sowieso al
SELECT * FROM lokaties ORDER BY id DESC LIMIT 3
gebruiken!
Zo rangschikt hij die met de hoogste id bovenaan.
jouw methode ransgchikt hij de kleinste bovenaan...
ASC - DESC zie je het verschil? :)
Gewijzigd op 18/09/2004 15:05:00 door John de Boer
 
Kevin Stoove

Kevin Stoove

18/09/2004 15:15:00
Quote Anchor link
Oke zo kiest hij dus de hoogste ID's maar hoe doe ik dan dat de hoogste onderaan?
 

18/09/2004 15:19:00
Quote Anchor link
dat regel je dus met DESC

SELECT * FROM lokaties ORDER BY id DESC LIMIT 3

of

SELECT * FROM lokaties ORDER BY id LIMIT 3
 
Kevin Stoove

Kevin Stoove

18/09/2004 15:46:00
Quote Anchor link
ja dat desc heb ik er ook ingedaan nu en dan pakt hij inderdaad de laatste drie (met hoogste ID nummer) Maar hij laat ze dan zo zien:

5
4
3

En ik wil dat hij ze zo laat zien:

3
4
5
 
John de Boer

John de Boer

18/09/2004 16:16:00
Quote Anchor link
Hij moet id 1 en 2 niet laten zien?
misschien zoek je dan:
SELECT * FROM lokaties ORDER BY id ASC WHERE id >= 3 LIMIT 3
?

Of neus anders eens in de SQL Tutorial (wel engelstalig, heb geen nederlandse kunnen vinden!)
Gewijzigd op 18/09/2004 16:17:00 door John de Boer
 
Ano Niem

Ano Niem

18/09/2004 16:46:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
$sql
= mysql_query("SELECT * FROM lokaties ORDER BY id DESC LIMIT 3");
while($array = ksort(mysql_fetch_array($sql)))
{

echo $array['id'];
}

?>


www.php.net/ksort (sorteerd assoc array op key)
www.php.net/krsort (sorteerd assoc array op key achterste voren)
 
Mitch X

Mitch X

18/09/2004 16:51:00
Quote Anchor link
Wij hebben ook een SQL tut, Meneertje de Boer :P
 
Kevin Stoove

Kevin Stoove

19/09/2004 10:30:00
Quote Anchor link
John:
Hij moet id 1 en 2 niet laten zien?
misschien zoek je dan:
SELECT * FROM lokaties ORDER BY id ASC WHERE id >= 3 LIMIT 3
?

Of neus anders eens in de SQL Tutorial (wel engelstalig, heb geen nederlandse kunnen vinden!)


Ja maar als ik een rij toevoeg zeg maar dan moet hij

3
4
5

niet meer laten zien maar dan:

4
5
6

laten zien snap je?
 
Mitch X

Mitch X

19/09/2004 10:50:00
Quote Anchor link
Wat wil je nou?
De laatste 3 toch?
Dan heb je het antwoord toch al gehad? :|
 
Kevin Stoove

Kevin Stoove

19/09/2004 11:58:00
Quote Anchor link
Jah ik wil de laatste drie... maar de laatste onderaan. Ik krijg hem bovenaan dat wil ik niet. En met die WHERE id >= 3 dan pakt hij 4,5,6 en niet 5,6,7 als ik er een 7e rij aan toevoeg. Dus dat werkt niet.

En die

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
$sql
= mysql_query("SELECT * FROM lokaties ORDER BY id DESC LIMIT 3");
while($array = ksort(mysql_fetch_array($sql)))
{

echo $array['id'];
}

?>


werkt helemaal niet... dan krijg ik errors...
 
Ano Niem

Ano Niem

19/09/2004 12:14:00
Quote Anchor link
Volgens mij snappen jullie zijn probleem niet.
Hij wilt de laatste 3 records ophalen. (Doe je met ORDER BY `field` DESC LIMIT 3)
Maar hij wilt dat ze nog wel oplopend worden weergegeven.
Als je ze ophaalt met order by `field` desc dan is ie aflopend wat Kevin dus niet wilt.

Mvg Sickness
 
Dutchcamel

dutchcamel

19/09/2004 15:17:00
Quote Anchor link
Het is misschien een wat omslachtige oplossing maar als ksort() niet werkt (ik weet niet of Kevin het zo goed gebruikt) is dit wat overblijft:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?
$result
= mysql_query("SELECT COUNT(*) AS aantal FROM lokaties");
$row = mysql_fetch_object($result);
$start = $row->aantal - 3;
$sql = mysql_query("SELECT * FROM lokaties ORDER BY id ASC LIMIT ".$start.", 3");
while ($array = mysql_fetch_array($sql)) {
    echo $array['id'];
}

?>


Waarbij je eventueel de twee 3'en nog kan veranderen in een ander getal wat je wil. Nadelen zijn dat het 2 queries zijn en dat als er minder dan 3 rijen in de database staan er LIMIT -1, 3 ofzo wordt uitgevoerd en dus een error oplevert.
Gewijzigd op 19/09/2004 15:19:00 door dutchcamel
 
John de Boer

John de Boer

19/09/2004 22:47:00
Quote Anchor link
Mitch:
Wij hebben ook een SQL tut, Meneertje de Boer :P

Ja klopt, ik heb gezocht op het forum en kwam um hiero tegen ;-)
en ik voel me nu wel klein zeg :-p
Gewijzigd op 19/09/2004 22:53:00 door John de Boer
 
John de Boer

John de Boer

19/09/2004 22:57:00
Quote Anchor link
Sickness:
Volgens mij snappen jullie zijn probleem niet.
Hij wilt de laatste 3 records ophalen. (Doe je met ORDER BY `field` DESC LIMIT 3)
Maar hij wilt dat ze nog wel oplopend worden weergegeven.
Als je ze ophaalt met order by `field` desc dan is ie aflopend wat Kevin dus niet wilt.

Mvg Sickness

Ik denk het toch wel... als er een record bij komt dan wordt de hoogste id toch ook automatisch mee verhoogd?!?!,

maar dan geef jij ook niet de goeie oplossing sickness!
hij geeft bij jou dan

6
5
4

en geen

4
5
6

de 'DESC' moet dus nog weer ge'ASC'd worden zeg maar ;)

en anders hebben Kevin en dutchcamel het antwoord al wel gegeven dunkt me

op deze link is in elk geval meer info over ksort
Gewijzigd op 19/09/2004 23:09:00 door John de Boer
 



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.