Z-Arrow: Wie funktioniert die Gliederung in diesem Forum?

Hallo zusammen!

Für einen Verband in meiner Stadt soll ich ein Forum anfertigen...

Mittlerweile grüble ich mir einen Ast ab, wie hier in diesem Forum, das ich mir als lobenswertes Vorbild nehme, die ganzen Antworten zu den Fragen sortiert und vor allem so geordnet in die Datenbank eingelesen werden das
hinter eine artgerechte Struktur im Thread entsteht und bsp. eine Anmerkung zu einer Antworz auf ein Thema nicht irgendwo anders zu finden ist.

Also bitte helft mir, ich komm da irgendwie nicht weiter!

Danke im Voraus

euer Z-Arrow

  1. Tach auch.

    Für einen Verband in meiner Stadt soll ich ein Forum anfertigen...

    Mittlerweile grüble ich mir einen Ast ab, wie hier in diesem Forum, das ich mir als lobenswertes Vorbild nehme, die ganzen Antworten zu den Fragen sortiert und vor allem so geordnet in die Datenbank eingelesen werden das
    hinter eine artgerechte Struktur im Thread entsteht und bsp. eine Anmerkung zu einer Antworz auf ein Thema nicht irgendwo anders zu finden ist.

    Also bitte helft mir, ich komm da irgendwie nicht weiter!

    Ein Forum hat, grob gesagt, eine Baumstruktur.
    Dies bedeutet insbesondere, dass jedes Nachfolgeposting einen Vorgänger hat.
    Die Threadstarter haben natürlich keinen Vorgänger (oder das Posting "Hauptseite", wenn du das so sehen willst).

    Eine einfache Datenstruktur wäre also (schon in Schema für deine DB gedacht):
    id | parent_id | message | ... (weitere Eigenschaften)
    1  | NULL      | Originalposting
    2  | 1         | erste Antwort auf das OP
    3  | 1         | zweite Antwort auf das OP
    4  | 2         | Antwort auf Antwort 1
    5  | 2         | Antwort auf Antwort 1

    Wenn du den Teilen noch Zeitstempel gibst, kannst du den Baum dann ganz einfach durchhangeln, um ihn anzuzeigen.

    Hauptseite: frage alle Postings ab, die keine parent_id haben und zeige sie dem Zeitstempel nach sortiert an.
    Um den Baum anzuzeigen, zeige in der ersten Ebene alle Postings an, die als parent_id die ID des Originalposts an, und verfahre dann rekursiv, um deren kindknoten darzustellen.

    Das ganze ist noch nicht sonderlich effizient (mir fallen da spontan einige Verbesserungen ein), aber vielleicht ist es ein erster Denkansatz für dich.

    Bis die Tage,
    Matti

    1. danke danke danke du hero genau das hab icj wissen gebraucht!!!

  2. Herzlich willkommen!

    Für einen Verband in meiner Stadt soll ich ein Forum anfertigen...

    Begrüßenswert, weil: Es gibt genügend Borads, die sich fälschlicherweise Forum nennen (und das Internet verunstalten).

    Mittlerweile grüble ich mir einen Ast ab, wie hier in diesem Forum, das ich mir als lobenswertes Vorbild nehme, die ganzen Antworten zu den Fragen sortiert und vor allem so geordnet in die Datenbank eingelesen werden das

    Nunja, der Speicherort muss nicht eine DB sein, aber es vereinfacht die Sache mit "nested sets" (Suchbegriffe, Wiki). Das ist hier der Fall, soviel ich weiß.

    Die klassische Art, ein threadbased Forum (nichtlinear) darzustellen, ist eine Rekursion. Die bringt zwar Prozessor(Rechnerarchitektur)bedingt ein paar Nachteile mit sich (Suchwort: Rekursion), ist jedoch einfach zu verstehen und auch einfach zu machen. Auf meiner Site findest Du einige Foren, die auf einer Rekursion beruhen, wenn Du Dir die URIs anschaust, siehst Du schon, wie die Datenstruktur aufgebaut ist (die Knoten stehen im URI).

    Btw., bei einem geschickten Aufbau der Daten(Baum)struktur kann ein Sortieren auch entfallen, das spart Rechenleistung.

    Viel Spaß beim Programmieren, beachte Race Conditions,
    Horst Haselhuhn

    1. Moin!

      Nunja, der Speicherort muss nicht eine DB sein, aber es vereinfacht die Sache mit "nested sets" (Suchbegriffe, Wiki). Das ist hier der Fall, soviel ich weiß.

      Du weißt das Falsche. Dieses Forum speichert alle aktiven Threads in zwei Shared-Memory-Bereichen im RAM und erstellt davon regelmäßig ein Abbild in Form von XML-Dateien. Eine Datenbank ist in diesem Bereich nicht aktiv.

      - Sven Rautenberg

  3. Hallo Z-Arrow,

    Also bitte helft mir, ich komm da irgendwie nicht weiter!

    Ein bestehendes Forum möchtest Du nicht nutzen? Inspirieren lassen könntest Du Dich aber an vergleichbaren Programmen wie bspw. mylittleforum. Ansonsten hilft Dir sicher auch mal ein Blick in die Fachartikel hier - insbesondere: Threadbasiertes Forum mit PHP und MySQL.

    Mit freundlichem Gruß
    Micha