login  Naam:   Wachtwoord: 
Registreer je!
 Forum

mysql sort

Offline DaOxx - 30/11/2009 12:43
Avatar van DaOxxPHP beginner Beste,

Ik ben in mijn CMS een sorteerfunctie aan het maken. Nu zijn dit meestal opeenvolgende id's. Maar soms kan er een pagina verwijderd worden waardoor het gaten kunnen ontstaan.

Is het mogelijk om in mysql het volgende record van een bepaald record op te halen op het eerst volgende nummer van de betreffende id.

Beetje lastig hieronder id voorbeeld

1
2
5
6
7

Nu moet 5 -> 2 worden en 2 -> 5 worden.

Alvast bedankt.

9 antwoorden

Gesponsorde links
Offline ArieMedia - 30/11/2009 12:51
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
id's moet je niet veranderen, dan ga je corrupte data krijgen met grote systemen.

Een nieuw veld toevoegen genaamd "volgorde" lijkt me beter 
Offline DaOxx - 30/11/2009 13:01
Avatar van DaOxx PHP beginner DAt heb ik ook, maar daarin staan cijfers. Id's verander ik ook niet.
Offline ArieMedia - 30/11/2009 13:28
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
DaOxx schreef:
DAt heb ik ook, maar daarin staan cijfers. Id's verander ik ook niet.
Kan je dan iets beter uitleggen wat je precies wil?

Want ik neem aan dat je niet gewoon het updaten van de volgorde bedoeld?
Offline DaOxx - 30/11/2009 13:30 (laatste wijziging 30/11/2009 13:37)
Avatar van DaOxx PHP beginner Als ik naar beneden wil sorteren. Dan heb ik de volgende id nodig. Ik poep deze volgorde uit in een while lus. Maar het getal van de order is niet altijd +1. Dus wil ik in die while-lus op een of andere manier de volgende record ophalen gesorteerd op de order_id. Maar ik weet niet hoe.

Naar boven sorteren is wel gelukt, ik kan gewoon in de while-lus de voorgaande id opslaan en deze geef ik dan mee.

Ik moet dus eigenlijk in de whilel-lus een id van de volgende record benaderen. Weet alleen niet of dat mogelijk is.
Offline ArieMedia - 30/11/2009 13:56
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
DaOxx schreef:
Als ik naar beneden wil sorteren. Dan heb ik de volgende id nodig. Ik poep deze volgorde uit in een while lus. Maar het getal van de order is niet altijd +1. Dus wil ik in die while-lus op een of andere manier de volgende record ophalen gesorteerd op de order_id. Maar ik weet niet hoe.

Naar boven sorteren is wel gelukt, ik kan gewoon in de while-lus de voorgaande id opslaan en deze geef ik dan mee.

Ik moet dus eigenlijk in de whilel-lus een id van de volgende record benaderen. Weet alleen niet of dat mogelijk is.

ORDER BY id ASC <-- Oplopend
ORDER BY id DESC <-- aflopend
Offline DaOxx - 30/11/2009 13:58
Avatar van DaOxx PHP beginner Nja, je begrijpt mijn probleem denk ik niet helemaal dat staat er los van namelijk. Maar heb al een oplossing gevonden.

Toch bedankt.
Offline HannaH - 30/11/2009 15:02 (laatste wijziging 30/11/2009 15:03)
Avatar van HannaH MySQL interesse ??
als er id niet meer in je tabel zit is dit toch net hetzelfde?
de vorige van 2 is 5 (of omgekeerd?)

??
als je de data van het vorige record wil
kan ook in die lus een query draaien op basis van die ID

??
of als je wil aangeven hoe je wil sorteren?
.. dan kan je sort mogelijk meegven in de url
en die kan je dan weer opvragen

ORDER BY id $var

Offline larssy1 - 01/12/2009 20:04
Avatar van larssy1 MySQL beginner uhm..

ik weet niet of ik je begrijp..
maar als je niet id's wilt veranderen..

dan kun je toch gewoon met een while lus werken, die alsnog gewoon naar de juiste pagina gaat.. ik bedoel.. 2 hoeft niet persé naar 2 toe te gaan ;)
Offline nick5556 - 02/12/2009 08:59
Avatar van nick5556 PHP beginner Je kunt ook een extra veld invoegen in je database, daarin zet je de volgorde nummers en die zet je er met een while loopje in..

Zolang de waarde bestaat, doe je bij je variabele ++. Als de waarde niet bestaat voeg je het getal in in de database, zo kan je nooit de 12567 reeks krijgen!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.205s