Habe fertig. Danke für die Hilfe
Letztlich habe ich mir aus anderen Fehlermeldungen hier im Forum eine Lösung zusammen gesucht. Diese war leider nicht wirklich einfach. Dazu galt es erstmal Nested Sets zu verstehen. Dabei hat mir dieser
Link geholfen.
Dort wird erklärt wie die Baustruktur logisch aufgebaut ist. Wenn man diese Infos versteht, kann man die Datenbank von Hand reparieren.
Dazu habe ich mir die Datenbank in Excel geholt (mit Mysql Front) und alle Felder entfernt die ich nicht brauche. Übrig blieben (forum_id, parent_id, left_id, right_id, forum_name )
Die Zeilen habe ich mir in die Reihenfolge sortiert, wie sie auch in meinem Forum sind. Die Kategorien (sind als parent = 0 gekennzeichnet) habe ich zur erleichterung farblich hinterlegt. Damit hatte ich jetzt ein schönes Abbild meiner Foren.
Dann bin ich her gegangen und habe die Angaben zu left_id und right_id neu durch nummeriert. Wenn man sich eine kleine Kat. vor nimmt und diese durch geht, wird man das System recht einfach durchblicken.
Man muss eigentlich nur im Kreis zählen. Ist schlecht zu erklären.
ich versuche mal ein Beispiel:
forum parent left_id right_id
Code: Alles auswählen
forum parent left_id right_id
144 0 31 40
13 144 32 33
25 144 36 37
64 144 34 35
118 144 38 39
Vorne ist nur die Indexnummer. Alle die bei parent eine 0 haben, sind Kategorien.
Nun sortiert man alle die unter parent 144 haben (ist bei Euch natürlich eine andere Zahl) darunter. So wie abgebildet. In die richtige Reihenfolge bringen, so wie die Foren in Euer Forum gehören und dann geht die Zählerei los.
Hier ist die Kat. mit der id 144 mit 4 Foren belegt. Schaut Euch die beiden werte unter left_id und right_id an. Bei left geht das zählen los und bei right endet es. Die 31 gibt vor wo es los geht. Also geht es beim ersten Forum bei 32 (left) los und right ist dann 33. Super, das erste Forum ist schon mal richtig nummeriert. Darunter wird fort gesetzt. Bis das letzte Forum in dieser Kat belegt ist. Das ist in diesem Fall dann mit einer 39.
und jetzt wird in der Kat nur noch die Folgezahl eingetragen (hier also 40) und schon ist eine Kat und deren Foren fertig.
Experten werden sich jetzt die Haare raufen, weil sobald ein Unterforum dabei ist es nähmlich nochmal schwieriger wird. Aber da muss man einfach das selbe System anwenden und das über geordnete Forum so sehen als sei es eine Kategorie. Nachdem ich mir Kat. Forum und Unterforum farblich unterschiedlich markiert hatte, war es ein klacks.
Danach im Excel eine Formel erstellen die die Zellen ausliesst und einen sql Code erstellt. Ab damit in die Datenbank und die Table ist in einem Rutsch wieder heil.
Code: Alles auswählen
Excel Formel
="update phpbb_forums SET left_id='"&C2&"', right_id='"&D2&"' WHERE forum_id='"&A2&"';"
erzeugt z.B.:
Code: Alles auswählen
update phpbb_forums SET left_id='2', right_id='5' WHERE forum_id='1';
Aber die Frage nach dem WARUM hat mich auch beschäftigt und das ist nun heikel. Ein User hier im Forum hat versucht das zu klären und auch zu erklären. In einem Thread, in dem er Hilfe gesucht hat, hat man ihn eher angemacht als dass man ihn geholfen hat. Finde ich schade. Aber ich konnte mir dennoch die nötigen Ansätze aus den 3 Thread ziehen, dass ich damit zu einer Lösung gekommen bin.
Fakt ist, dass es einen Fehler in phpbb gibt. Ob dieser in phpbb .3 behoben ist weis ich nicht (siehe dazu einen anderen Beitrag von mir. Läuft bei mir nicht).
Wenn man ein Forum umsortiert und mit der Maus auf das Pfeilsymbol klickt, dann kann es zu dem Fehler kommen. U.U. ist Eure phpbb_forums damit falsch beschrieben. Beispielsweise wenn man zu schnell klickt und sich der Schreibvorgang in die Datenbank mit dem nächsten Klick überschneidet. Irgendwie so muss es sein. Wenn der Server mal was langsam ist, die MySQL Datenbank im Stress oder sowas in der Art. Dann schreibt phpbb nämlich nicht korrekt die neue Reihenfolge in die DB, sondern vergibt bei mehreren Foren die selbe left_id oder right_id. In dem Fall ist dann der nächste Eintrag (Forum anlegen, ändern oder umsortieren) etwas dass richtig Ärger machen kann. Dann verschwindet u.U. ein Forum oder steht an einer ganz anderen Stelle.
Wenn ich es könnte, würde ich ein php Script erstellen dass die phpbb_forums ausliesst, prüft und ggf. neu schreibt. Dieses Teil braucht es, denn ich bin mir ganz sicher dass dieses Problem eine menge Leute haben. Ich habe es erst nach 3 Monaten bemerkt. Zwischendurch war mal ein Forum weg und ich konnte es mir nicht erklären. Als ich nach monaten das erste mal etwas an meinen Foren tun musste, brach das Chaos aus.
Das wünsche ich niemanden.
Ich hoffe, auch wenn ich es nicht ganz fachmännisch erklären oder eine fertige Lösung presentieren konnte, dass ich trotzdem dem einen oder anderen damit helfen kann, wenn er wie ich hier nach Hilfe sucht.
Stefan