Mailinglisten-Archive |
> Nun mein Problem: Wie kann ich realisieren, dass ich den kompletten
> Kategoriebaum angezeigt bekomme?
Mit Deiner beschriebenen Struktur ist das nicht mit einem einzigen
SQL-Statement möglich.
Du musst also rekursiv in PHP die Parent-Kategorie ermitteln, bis der Parent
0 ist. Das könnte ungefähr so aussehen (Framework):
function category_get_parents($cat_id, $parents = false)
{
global $db;
// Beim ersten Aufruf den String initialisieren
if(!$parents)
{
$parents = "";
}
// Aktuelle Kategorie aus der Datenbank holen
$query = "SELECT * FROM tabelle WHERE cat_id = $cat_id";
$db->query($query);
$db->next_record();
// Den Namen der Kategorie zum wachsenden $parents-String anfügen
$parents .= $db->Record["cat_name"]."/";
// Sind wir schon an der Root-Kategorie angelangt?
if($db->Record["parent_id"] == 0)
{
// Ja - wir verabschieden uns
return($parents);
}
// Diesselbe Funktion wieder aufrufen, um den Parent der aktuellen
Kategorie zu holen
$parents = category_get_parents($db->Record["parent_id"], $parents);
// Und den ganzen String zurückgeben
return($parents);
}
// Motor anwerfen
print(category_get_parents(42));
Kristian war das nicht genug, deswegen hat folgendes geschrieben:
http://www.koehntopp.de/kris/artikel/sql-self-references/
Damit soll man mit einer einzigen SQL-Query den gesamten Baum erhalten.
> Ich habe immer noch probleme mit meinem Chat. Ich bekomme immer die
Meldung
> "MySQL Client ran out of Memory" sobald mehr als 3 Leute etwas posten.
Kann
> man das irgendwie umgehen?
Diese Frage ist wahrscheinlich in einer MySQL-Liste besser aufgehoben.
Mit freundlichen Grüßen,
Tobias Ratschiller
--
<?$I=1.125;while($I>=-1.225){for($l= /* Tobias Ratschiller */
-2;$l<=1;$l+=3/79){$Q=$u=0;for($E=127; /* New Media Consultant */
$Q*$Q+$u*$u<4&&--$E>32;){$o=$Q;$Q=$Q* /* http://phpWizard.net */
$Q-$u*$u+$l;$u=2*$o*$u+$I;}printf("%c",$E);}print("\n");$I-=9/88;} ?>
php::bar PHP Wiki - Listenarchive