Mijn database heb ik kortweg zo opgebouwd:
Onderwerpen
id |parent_id|
1 |0
2 |0
3 |1
4 |3
In bovenstaand voorbeeld zijn 1 & 2 onderwerpen welke in het menu worden getoond, en 3 in het submenu van 1, en 4 in het submenu van 3.
Het is een duidelijk methode om mee te werken en alles lukt, behalve het verwijderen van onderwerpen inclusief alle dieperliggende pagina's. Natuurlijk kan je met een while iedere keer controleren of er dieperliggende pagina's zijn en verwijderen, maar dan moet je per laag een while doen en dat is natuurlijk niet rendabel. Graag zou ik een pure mysql oplossing vinden waarmij bovenstaand onderwerp 1, en daarmee ook 3 en 4 verwijderd kunnen worden.
Alvast bedankt!
Kwestie van het aanbrengen van de juiste FK's en bijbehorende acties (CASCADE) in je tabel. Als je dan een parent verwijderd, zullen automatisch alle childs verwijderd worden.
InnoDB is de enige engine waarmee je foreign keys kunt gebruiken, dus daar ben je op aangewezen. Waarschijnlijk zul je de tabel opnieuw aan moeten maken en moeten vullen, want switchen van MyISAM naar InnoDB is niet zomaar mogelijk...
Tja, dan heb je dus niet de mogelijkheid om met foreign keys te werken en heb je dus helaas weinig aan je database. De data die je erin zet is nu namelijk niet meer te vertrouwen aangezien de fk relaties niet bestaan...
Vraag eens bij je host of ze die engine kunnen activeren of zoek een host die wel een goede database ondersteuning biedt.
WAMP is een goed alternatief waarbij je zeker wel van InnoDB gebruik kunt maken.
Overigens kun je dit wellicht met usbwebserver ook wel voor elkaar krijgen door in de instellingen van MySQL te duiken. Ik weet alleen niet hoeveel vrijheid je hebt om hier aanpassingen in te maken.