Geavanceerde auto increment?
Is dat mogelijk?
Anyway, MySQL kent naar mijn weten niet zo'n functie. Het zou namelijk erg gek zijn om zo je id's te veranderen (helemaal als deze relaties bevat naar andere tabellen).
Je moet dit dus met een UPDATE statement doen.
Om te sorteren idd, wat zou er dan praktisch zijn?
Gewoon alsnog sorteren op id. Dat er een gat tussen zit maakt niet uit, ga niet je auto_increment waarde veranderen en hecht hier ook niet teveel waarde aan.
Je kan op tig manieren sorteren.
op naam ( ASC / DESC )
email, id, datum e.d.
Erik, de gebruiker moet zelf de volgorde kunnen aanpassen.
Wat ben je aan het proberen nu? laat eens een stukje script zien dan begrijp ik iets beter wat je bedoel.
Deze geef je het juiste ordernr.
Elke keer als je een record toevoegt (of de sortering wijzigt), dan moet je de ordernr's wijzigen. Het beste is als je de SORT kolom een decimal geeft (geen int). Je hebt dan bijv:
1.0
2.0
3.0
4.0
Stel dat je de 4.0 tussen de 1.0 en 2.0 wil zetten, dan wijzig je tijdelijk de 4.0 naar 1.5.
Bij het loopen door je resultaten in PHP neem je een teller variabele mee, die checkt of de ordering nog juist loopt, dus:
Code (php)
Zo herstel je de ordering in je database. Werkt erg makkelijk.
Misschien bestaat er een makkelijkere manier, maar deze weet ik niet.
EDIT:
@ERIK:
Dit is wel een probleem, want de sortering moet handmatig aangepast kunnen worden. Op jouw manier kan dat niet.
Gewijzigd op 01/01/1970 01:00:00 door Barman V
komt er op neer dat er nu een hoofd tabel is , de records die daar in staan hebben ieder een id en een naam ( onder andere ) en die naam correspondeert met een andere tabel in de database. In de hoofd tabel kan ik dus zien welke andere tabellen er bij horen. Deze tabellen die beschreven staan in de hoofd tabel worden vervolgens opgehaald, maar ik wil de gebruiker laten kiezen in welke volgorde!
Dat is niet het beste, want je kan in de toekomst nog steeds tegen een knelpunt oplopen. Het slimste om te doen is een positie opgeven bij het INSERTEN..
Bestaat die positie al, dan die positie + alle hogere + 1 doen. (op zich dus een eitje)
Vervolgens controleren of de query is gelukt, en dan doe je de insert query.
Je volgorde blijft zo goed en je hebt er geen beperkingen aan, die je met de oplossing van Barman (met decimalen) wel hebt, je kan er maximaal 10 toevoegen.
Robert_Deiman schreef op 06.11.2008 09:12:
@Barman
Dat is niet het beste, want je kan in de toekomst nog steeds tegen een knelpunt oplopen. Het slimste om te doen is een positie opgeven bij het INSERTEN..
Bestaat die positie al, dan die positie + alle hogere + 1 doen. (op zich dus een eitje)
Vervolgens controleren of de query is gelukt, en dan doe je de insert query.
Je volgorde blijft zo goed en je hebt er geen beperkingen aan, die je met de oplossing van Barman (met decimalen) wel hebt, je kan er maximaal 10 toevoegen.
Dat is niet het beste, want je kan in de toekomst nog steeds tegen een knelpunt oplopen. Het slimste om te doen is een positie opgeven bij het INSERTEN..
Bestaat die positie al, dan die positie + alle hogere + 1 doen. (op zich dus een eitje)
Vervolgens controleren of de query is gelukt, en dan doe je de insert query.
Je volgorde blijft zo goed en je hebt er geen beperkingen aan, die je met de oplossing van Barman (met decimalen) wel hebt, je kan er maximaal 10 toevoegen.
Dit is inderdaad de betere oplossing. Overigens heb ik met mijn manier geen problemen gekend, het werkt als een zonnetje, maar het is inderdaad wat omslachtig. Ik zal deze manier in mijn achterhoofd houden.
Wat bedoel je met maximaal 10 toevoegen? Met mijn manier kon je ook veel meer toevoegen.
hier heb toegepast en waarvan de code hier te vinden is.
Barman zijn idee raad ik niet aan, afgezien van het feit dat je dan zelf moet gaan nadenken loop je tegen het probleem aan dat je tussen 2.0 en 3.0 maar 10 paginas kunt toevoegen, tenzij je meer cijfers achter de komma erbij gaat halen... maar dan maak je het geheel nog lastiger.
Ikzelf werk meestal met een volgorde ID, dan hoef je je normale ID niet aan te passen en kan je naar hartelust gaan sorteren. Zoals ik Barman zijn idee raad ik niet aan, afgezien van het feit dat je dan zelf moet gaan nadenken loop je tegen het probleem aan dat je tussen 2.0 en 3.0 maar 10 paginas kunt toevoegen, tenzij je meer cijfers achter de komma erbij gaat halen... maar dan maak je het geheel nog lastiger.
Arjan Kapteijn schreef op 06.11.2008 09:37:
Barman zijn idee raad ik niet aan, afgezien van het feit dat je dan zelf moet gaan nadenken loop je tegen het probleem aan dat je tussen 2.0 en 3.0 maar 10 paginas kunt toevoegen, tenzij je meer cijfers achter de komma erbij gaat halen... maar dan maak je het geheel nog lastiger.
Mijn code was inderdaad minder goed. Maar je ziet het verkeerd. Het werkt als volgt:
Records met ordernr's:
1.0
2.0
3.0
4.0
5.0
Stel je wil 5.0 tussen 2.0 en 3.0 zetten, dan wijzig je 5.0 in 2.5.
Het queryvoorbeeld die ik in mijn eerste post toonde update de records weer als volgt:
1.0
2.0
2.5 > wordt 3.0
3.0 > wordt 4.0
4.0 > wordt 5.0
Ik geef toe dat dit niet de beste manier was, maar het werkte prima voor mij.
Bedankt robert, perfect.