Zur Navigation

Forum programmieren

1 Marcel (Gast)

Abend...

Da ich hier genau an der Stelle des Experten sitze, möchte ich am besten Mal hier nachfragen.

Und zwar bin ich seit Anfang dieser Woche mit dem Programmieren meines eigenen Forums beschäftigt. Die Registrierung, der Login, die Memberliste, die Profilverwaltung usw. sind auch schon fertig. Dann hatte ich mich an die Erstellung des eigentlichen Forums gemacht und einen Adminbereich programmiert, in dem ich Kategorie erstellen und in diese wiederum "Unterkategorien" erstellen kann. D.h. der Aufbau könnten beispielsweise so ausehen:

- Tiere
> Hunde
> Katzen

"Tiere" wäre dabei die Kategorie und "Hunde" und "Katzen" die Unterkategorien. Die Erstellung ist also bis dahin richtig.

Jetzt habe ich eine neue Datei erstellt (forum.php) und in dieser die "Abfrage" wie folgt aufgebaut:

$ocat = mysql_query("SELECT id, name, beschreibung FROM kategorien ORDER BY id DESC");
while ($row = mysql_fetch_array($ocat)) {
    echo "&raquo; <b>".$row["name"]."</b> - ".$row["beschreibung"]."";
    echo "<br><br>";
    $ucat = mysql_query("SELECT name FROM unterkategorien WHERE kategorie='".$row["id"]."' ORDER BY id DESC");
    while ($row2 = mysql_fetch_array($ucat)) {
        echo "- ".$row2["name"]."<br>";
    }
    echo "<br><br>"
}

Obwohl alles einwandfrei funktioniert, bin ich mir nicht sicher ob das alles so perfekt ist und ob mit der Zeit nicht irgendwelche Nachteile aufkommen könnten.

Ich freue mich über Verbesserungsvorschläge in jeder Hinsicht. Tipps zum weiteren Programmieren der Threadanzeige sind ebenfalls sehr erwünscht.
Vielen Dank!

16.07.2006 18:28 | geändert: 16.07.2006 18:33

2 Jörg Kruse

Vielleicht könntest du die Queries, die in der while-Schleife nacheinander ablaufen in einer einzelnen JOIN-Query außerhalb der while-Schleife zusammenfassen. Also in etwa so:

$ucat = mysql_query("SELECT unterkategorien.name AS uname, oberkategorien.name AS oname, oberkategorien.beschreibung FROM unterkategorien LEFT JOIN oberkategorien ON unterkategorien.kategorie = oberkategorien.id ORDER BY oberkategorien.id, unterkategorien.id");

16.07.2006 20:02

3 Marcel (Gast)

Die Funktion JOIN sagt mir leider gar nichts und bei Google habe ich auch keine hilfreiche Quelle gefunden...

17.07.2006 14:34

5 Marcel (Gast)

Der Hintergrund ist mir durch die Erklärung klar geworden, allerdings verstehe ich immer noch nicht den Aufbau der "Funktion":

SELECT Kunden.Name, Kunden.Strasse, Lieferungen.Produkt, Lieferungen.Anzahl FROM Lieferungen INNER JOIN Kunden ON (Lieferungen.Kunden-Nummer = Kunden.Kunden_Nummer);

Fällt dir eventuell noch ein besseres Beispiel zum Erläutern ein? Würde mich sehr freuen!

17.07.2006 19:05

6 Jörg Kruse

Nach (LEFT / INNER) JOIN wird die zweite Tabelle notiert, die abgefragt wird

FROM Lieferungen INNER JOIN Kunden

Hinter ON findet sich eine Gleichsetzung der Spalten, über die die Datensätze aus den beiden Tabellen verknüpft werden sollen.

ON (Lieferungen.Kunden-Nummer = Kunden.Kunden_Nummer)

Damit die Spalten eindeutig sind, werden durch einen Punkt getrennt die betreffenden Tabellennamen vorangestellt

17.07.2006 20:05

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]