Mailinglisten-Archive |
Hi Manuel (und alle anderen, die sich noch vor Weihnachten eine automatische Sitemap wuenschen), Manuel Gisbert schrieb am 26.11.2001: >function renderLayer($parentID) >{ > $query = "select * from tablename where refID='$parentID'"; > $result = mysql_query($query); > while($data = mysql_fetch_array($result)) > { > print($data["pageName"]."<br>"); > renderLayer($data["ID"]); > // hier wird die Funktion renderLayer rekursiv aufgerufen > // um alle Seiten anzuzeigen, die die gerade ausgegebene > // Seite als Parent haben. > } >} ich bin mal so frei und bau diesen ersten Ansatz mal aus. Der hat den Nachteil, dass er ziemlich viele SQL Abfragen macht, die eigentlich sinnlos sind. Wenn du 5 Hauptpunkte mit jeweile 5 Unterpunkten und nochmals 5 Subunterpunkten hast, dann hast du mal locker 1 + 5 * 5 * 5 Abfragen, wenn ich mich nicht irre. Ich wuerde das so machen, dass du bei jedem SELECT auch pruefst, ob fuer das jeweilige Element ueberhaupt Unterpunkte vorhanden sind. Also in etwa wie folgt: function renderLayer($parentID) { $query = "SELECT a.*, COUNT(b.ID) AS subcnt "; $query .= " FROM tablename AS a, tablename AS b "; $query .= " WHERE a.refID = '$parentID'"; $query .= " AND b.refID = a.ID"; $query .= " GROUP BY a.ID"; $result = mysql_query($query); while($data = mysql_fetch_array($result)) { print($data["pageName"]."<br>"); if ($data["subcnt"] > 0) { renderLayer($data["ID"]); } } } Damit sollte man aber die Anzahl der Aufrufe deutlich senken koennen. Dieser Ansatz liesse sich sicher noch weiter optimieren, vielleicht hat da ja jemand Bock drauf... ;-) Gruss, Ralf -- __________________________________________ In-Greece.de - die Griechenlandcommunity _______ http://www.in-greece.de/ _________
php::bar PHP Wiki - Listenarchive