Ik ben bezig met een klein CMS'je. Ik wil gebruikers de mogelijkheid geven de volgorde van pagina's in het menu te wijzigen.
Ik heb deze tabel (versimpeld):
navitems
- id
- title
- sequence
In het overzicht van alle pagina's staan 2 pijltjes bij iedere pagina: omhoog en omlaag.
Nu weet ik alleen niet hoe ik het werkend krijg aangezien het volgende gebeurd:
- Een nieuwe pagina begint standaard met sequence (volgorde) = 0
- Bij het klikken op omhoog heb ik squence - 1 gedaan (het menu doet ORDER BY squence ASC), en bij omlaag dus + 1
Bij het klikken op omhoog komt de pagina helemaal bovenaan te staan aangezien de sequence meteen lager is dan die met 0 of een ander getal. Bij andere pagina
s moet de volgorde dus ook veranderd worden. Zonder dat de al eerder opgeslagen volgorde gereset wordt.
Ik hoop dat het duidelijk is. Zou iemand weten hoe ik dit op kan lossen?
wat je dan krijgt is natuurlijk dat er twee menu items kunnen zijn met dezelfde sequence. maar hoe je dit moet oplossen... heel dirty, maar ik zou beginnen door gewoon de hele tabel te droppen, en bij iedere wijziging opnieuw te vullen.
wat je dan krijgt is natuurlijk dat er twee menu items kunnen zijn met dezelfde sequence. maar hoe je dit moet oplossen... heel dirty, maar ik zou beginnen door gewoon de hele tabel te droppen, en bij iedere wijziging opnieuw te vullen.
Maar dan vergeet hij de volgorde die de vorige keer was ingesteld?
Je hoeft natuurlijk niet je hele tabel leeg te gooien, het enige wat je hoeft te doen is het sequence veld aan te passen. Dus zodra de gebruiker klaar is met zijn aanpassingen lees je de nieuwe volgorde uit en pas je elk record in de database aan. Als je het slim doet hoef je alleen de aangepaste menu items aan te passen. Het is echter wel een query voor elke aanpassing, je draait mogelijk dus wel een groot aantal queries.
Je hoeft natuurlijk niet je hele tabel leeg te gooien, het enige wat je hoeft te doen is het sequence veld aan te passen. Dus zodra de gebruiker klaar is met zijn aanpassingen lees je de nieuwe volgorde uit en pas je elk record in de database aan. Als je het slim doet hoef je alleen de aangepaste menu items aan te passen. Het is echter wel een query voor elke aanpassing, je draait mogelijk dus wel een groot aantal queries.
Ahaa oke! Maar hoe lees ik die nieuwe volgorde uit? Ik heb genoeg verstand van PHP maar het inzicht is soms echt ver te zoeken..
Afhankelijk van de hoeveelheid pagina's in je menu is het dus de vraag wat sneller is kwa querytijd. Danwel hele tabel opnieuw vullen, danwel alleen de aangepaste items een update geven. Persoonlijk zou ik voor het laatste gaan.