dedlfix: Rekursives Löschen von Foren inkl. Threads und Beiträgen

Beitrag lesen

Hi!

Heiliger Bimbam. Also doch lieber Nested Sets, oder? Ich müsste auch mit deinem Tipp viel zu viel umstricken, da kann ich gleich alles auf Nested Sets umbauen...
Würdet ihr mir dabei assestieren?

Ja, natürlich, nach bestem Wissen und Gewissen. Aber Achtung! Nested Sets sind unschlagbar was das Abfragen anbelangt (zumindest kenne ich kein besseres System), aber dafür hast du einen erhöhten Aufwand beim Einpflegen. Ich nehme an, du hast dir das Prinzip schon angesehen und als wichtigstes Merkmal die Rechts-Links-Werte gesehen. Wenn ich es mir recht überlege dürften Lücken kein Problem darstellen, aber die vorhandenen Werte müssen aufsteigend nummeriert sein. Das heißt, dass du beim Einfügen stets die R-L-Werte der "nachfolgenden" Datensätze anpassen musst. Das ist an sich kein Problem, erfordert aber ein bis zwei zusätzliche Statements und außerdem noch zwei für Table Locking inklusive Freigabe. Um das einigermaßen effizient handhaben zu können, kann und sollte man sich für jede Aufgabenstellung eine eigene Funktion schreiben.

Bevor du dich entscheidest, den Nested-Sets-Weg zu gehen, solltest du dir überlegen, ob sich der Aufwand lohnt. Mir scheint, dass das Löschen ganzer Foren vielleicht eher selten vorkommen wird. Wenn das so ist, wäre es vielleicht nicht unbedingt sinnvoll für diesen einen Anwendungsfall den Komfort zu haben, dafür aber generell Mehraufwand zu betreiben. Zumal deine Struktur immer noch recht flach ist und nicht so viele Verzweigungen auftreten können wie beispielsweise im hiesigen Forum.

Meine Eingaben hier entsprechen vom Prinzip her dem, was ich in echt im Code schreibe, allerdings nur etwas abgewandelt, eben aus Angst vor SQL-Attacken.

Davor brauchst du eigentlich keine Angst zu haben, wenn du das Prinzip Kontextwechsel verstanden hast. Lücken entstehen nur, wenn man nicht beachtet, dass einige Zeichen in bestimmten Kontexten eine Sonderbedeutung haben und deswegen anders notiert werden müssen (Maskieren/Escapen).

$db->real_escape_string() reicht nicht alleine aus...

In Richtung SQL-Statement schon. Für andere Kontexte gibt es andere Regeln und Verfahren, aber die solltest du sinnigerweise erst dann anwenden, wenn die Daten diesen Weg gehen, nicht schon irgendwann früher.

Lo!