phpbar.de logo

Mailinglisten-Archive

[php] Denksportaufgabe :)

[php] Denksportaufgabe :)

Boris Penck php_(at)_phpcenter.de
Sun, 28 Jan 2001 19:52:39 +0100


>
> ich habe eine Datenbankstruktur, die so aussieht:
>
> id | parent | titel
>
> und eine menüstruktur abbildet, also wenn parent = 1 ist der aktuelle
punkt
> ein Untermenü von menüpunkt 1.
>
> Das auslesen und normale Darstellen wäre eigentlich kein problem, da ich
die
> rekursion dafür schon kenn, das problem ist aber, dass ich es in eine
> Array-Struktur speichern möchte die wie die Struktur von ULFs Menu3-Klasse
> ist, also ca. so:
>
> $menu = array(
> 1 => array(
> url = > "/",
> title => "home"
> sub => array(
> 11 =>array(
> "url" => "/seite2",
> "title" => "seite2"
> )
> )
> )
> )

Ok, schreiben wir dein array mal um:

$menu = array(
    1 => array(
        "url" => "/",
        "titel" => "home"
        "sub" => array(
            11 => array(
                "url" => "/seite2",
                "title" => "seite2"
            )
        )
    )
)

(nur so als Übersicht)

jetzt machen wir da mal kurz eine andere Struktur draus:

$menu[1][url] = "/";
$menu[1][titel] = "home";
$menu[1][sub][11][url] = "/seite2";
$menu[1][sub][11][title] = "seite2";

jetzt fummeln wir das in eine schleife, die theroretisch die datenbank
ausliste


// select * from tabelle where parent = '1'
while(datenbank) {

    // $id, $parent, $titel, $url seien jetzt mal irgendwie ausgelesen (ich
glaube du hast oben die url in der tabelle
    // vergessen - $db ist das array was die datenbank informationen
enthällt (zeilenseite), wie gewohnt.
    $menu[$db[id]][url] = $db[url];
    $menu[$db[id]][titel] = $db[titel];

    // select * from tabelle where parent = $db[id]
    while(datenbank2) {
        $menu[$db[id]][sub][$db2[id]][url] = $db2[url];
        $menu[$db[id]][sub][$db2[id]][url] = $db2[titel];
    }
}

jetzt hast du alle parents mit den dazugehörigen childs in einem array.

Ich hoffe das hat geholfen.

Grüß dich Marcel !
-boris





php::bar PHP Wiki   -   Listenarchive