phpbar.de logo

Mailinglisten-Archive

[php] 2 Fragen ( Speicherproblem & Datenbank)

[php] 2 Fragen ( Speicherproblem & Datenbank)

Tobias Ratschiller tobias_(at)_dnet.it
Thu, 27 Jan 2000 15:08:15 +0100


> 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