Nested Sets Forum
Till
- programmiertechnik
Hola!
Ich programmiere derzeit ein simples Forum mit Baumstrucktur(Nested Sets).
Ich kriege nur leider keine vernümpfige Ausgabe mit <li> zu stande:
http://root.sxsystems.net/projects/sxForum/nestedsets/test.php
Problem: Das öffen und schließen von Punkten und Unterpunkten (<ul>, <li>)
Kennt jemand ein Forum oder eine Code in welchem mein Problem schon gelöst wurde?
Grüße, Till
Hallo Till,
Kennt jemand ein Forum oder eine Code in welchem mein Problem schon gelöst wurde?
in dem entsprechenden Feature Artikel von Henryk Plötz werden die Bäume mit Listen dargestellt. Besonders zu beachten die Funktion "zeichneBaum()".
Gruß, Andreas
你好 Andreas,
Kennt jemand ein Forum oder eine Code in welchem mein Problem schon
gelöst wurde?in dem entsprechenden Feature Artikel
von Henryk Plötz werden die Bäume mit Listen dargestellt. Besonders zu
beachten die Funktion "zeichneBaum()".
Ja, aber Henryk hat nicht mit Nested Sets gearbeitet :)
再见,
CK
Hallo Christian,
Ja, aber Henryk hat nicht mit Nested Sets gearbeitet :)
aber, wenn ich es richtig verstanden habe, war das Problem die sortierte Ausgabe, nicht die Datenhaltung. Die Übertragung dahin, daß die Funktion zeichneBaum() die Daten in der richtigen Form bekommt, muß der OP natürlich noch leisten. Aber er will ja auch selbst programmieren :-)
再见,
chinesisch, japanisch, timbuktu?
Gruß, Andreas
Hallo Christian!
Meine Momentane Lösung erscheint mir so unprofessionell und blöd :D
Deswegen suche ich eine Software welche dies schon "perfekt" gelöst hat.
<?php
mysql_connect('localhost', 'root');
mysql_select_db('forum');
$query = "SELECT n.*, round((n.rgt-n.lft-1)/2,0) AS childs, count(*)+(n.lft>1) AS level, ((min(p.rgt)-n.rgt-(n.lft>1))/2) > 0 AS lower, (((n.lft-max(p.lft)>1))) AS upper FROM forum n, forum p WHERE n.lft BETWEEN p.lft AND p.rgt AND (p.parent = n.parent) AND (p.id != n.id OR n.lft = 1) GROUP BY n.parent, n.id ORDER BY n.parent, n.lft";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
$tree[] = $row;
}
echo '<ul>';
foreach($tree as $id => $values) {
echo '<li>'.$values['topic'];
if ($values["level"] == 1)
$parent = array();
if ($values["level"] >= $last["level"])
$parent[$last["level"]] = $last;
if ($values['childs'] > 0) {
echo '<ul>';
} elseif ($values['lower'] == 0) {
echo '</li></ul>';
for ($i=2;$i<$values["level"];$i++) {
if ($parent[$i]["lower"] == 0) {
echo '</ul></li>';
} else {
echo '</li>';
}
}
} else {
echo '</li>';
}
if ($values['level'] == 2 && $values["lower"] == 0) {
echo '</li>';
}
$last = $values;
}
echo '</ul>';
?>