Forum Struktur mittels parent_id in Multi-Dim-Array

_voodoo

Erfahrenes Mitglied
Hallo,

Ich bau mir ein kleines Forum und bin grad bei einem kleinen aber feinen Problem, und
zwar möcht ich die einzelnen Foren in einem Dropdown ausgeben, als Sprungmarken quasi.
Ansich kein Problem aber ich will sie ähnlich denen hier auf tutorials.de einrücken mit jeder Ebene.

Code:
forum_id | parent_id
    1         0
    2         1
    3         0
    4         2
parent_id = 0 ist praktisch die erste Ebene, parent_id = 1 verweist dann auf eine übergeordnete Ebene.
Ich denke mit einer rekursiven Funktion müsste man das schaffen, ich bekomm aber absolut keinen Ansatz :(

So soll halt das Dropdown dann aussehen:
Code:
Kategorie
- Forum 1
-- Forum 1.1
-- Forum 1.2
--- Forum 1.2.1
-- Forum 1.3
- Forum 2

Vielen Dank für jeden hilfreichen Denker :-)
 
Das hier koenntest Du mal testen.

PHP:
<?
function showforum($id,$offset)
{
$results=mysql_query("select * from forum where parent_id='$id'");
while ($result=mysql_fetch_assoc($results))
 {
  for ($x=0;$x<$offset;$x++)
   {
    printf("&nbsp;");
   }
  printf($result[forum_id]);
  printf("<br>");
  showforum($result[forum_id],$offset+1);
 }
}
showforum(0,0);
 
PHP:
function dropdown($id) {
   $sql = mysql_query("SELECT * FROM forum WHERE parent_id = ".$id);
   while($result = mysql_fetch_row($sql) {
      dropdown($result['id'])
   }
}

So sollte das eigentlich gehen. In der while-Schlaufe musst du nun halt noch das Dropdown ausgeben, mit einem Zähler in welcher Ebende es ist (wieviel du Einrücken musst), aber ich denke dass wirst du selber hinkriegen :)
 
aquasonic hat gesagt.:
PHP:
function dropdown($id) {
   $sql = mysql_query("SELECT * FROM forum WHERE parent_id = ".$id);
   while($result = mysql_fetch_row($sql) {
      dropdown($result['id'])
   }
}

So sollte das eigentlich gehen. In der while-Schlaufe musst du nun halt noch das Dropdown ausgeben, mit einem Zähler in welcher Ebende es ist (wieviel du Einrücken musst), aber ich denke dass wirst du selber hinkriegen :)
Ehrlich gesagt hilft mir das nicht im geringsten weiter, da mein Hauptproblem darin besteht, dass ich nicht weiß wie tief ich in den Ebenen bin.

Da find ich reptiler's Vorschlag weitaus hilfreicher, Danke - werd das testen wenn ich wieder an meiner Maschine sitze.
 
Wenn ich Dir trotzdem noch einen Tipp geben darf, ich würde das ganze Forum mit NestedSets machen, dann weisst du auch immer in welcher Ebende du bist, und kannst jeden Eintrag und Forum usw. mit einer Abfrage (ohne Rekursion) abfragen :D

Hier ein guter Link dazu: http://www.develnet.org/36.html
 
Zurück