artikeltjes en pagina's combineren
In de cms kan je pagina's aanmaken, en artikeltjes (tekstjes). Artikeltjes kunnen op een of meerdere pagina's geplaatst worden, en moeten de mogelijkheid hebben om de volgorde (per pagina) te veranderen.
De volgende tabellen denk ik momenteel nodig te hebben (even velden die niet nodig zijn hiervoor weggelaten):
PAGINAS
id: PK
ARTIKELS
id: PK
PAGINA-ARTIKEL
pagina: FK
artikel: FK
volgorde: int
Is dit de handigste opzet?
En verder, hoe ik dat in mijn cms wilde gaan laten aanmaken:
Bij het maken (of wijzigen!) van een artikel krijg je een keuzevak (multiple) waar ze de pagina's kunnen selecteren. Zodra deze gesubmit worden, moet het volgende gebeuren:
Alle pagina's die geselecteerd zijn, moeten (blijven) bestaan in de lijst pagina-artikel. Pagina's die niet geselecteerd zijn moeten niet (meer) bestaan in de lijst.
allereerst gaat hij dan met een while loop alle pagina's uit de lijst langs, die NIET geselecteerd zijn. Met een mysql-query kijkt hij eerst of hij bestaat (SELECT where pagina=id) en vervolgens delete hij hem in dat geval.
vervolgens loopt hij de pagina's door die wel gekozen zijn, hij doet insert <waardes> en on duplicate NIKS (wat is "niks" overigens?).
Is dit een goede manier cq. hebben jullie ideeën? Ik vind vooral het laatste stukje niet echt heel netjes.
Bij het updaten van de koppeling van een artikel aan verschillende paginas, is het wellicht het eenvoudigst om eerst alle koppelingen te verwijderen en daarna weer nieuwe koppelingen aan te maken voor de geselecteerde paginas. Op deze manier hoef je maar 2 queries uit te voeren en ben je waarschijnlijk het snelste klaar.
Zo dus doen?