phpbar.de logo

Mailinglisten-Archive

[php] PHP/mySQL Baumstruktur

[php] PHP/mySQL Baumstruktur

Tom Malek php_(at)_phpcenter.de
Sat, 18 Aug 2001 20:27:33 +0200 (GMT+02:00)


so hab' ich aber bei einer ziemlich gro=DFen Menustruktur ziemlich viele DB=
-Anfragen. Beispielsweise m=F6chte ich einmal die komplette Struktur laden =
und mittels Javascript als Exlorer-Menu im Browser anzeigen lassen. Bis ich=
 da die komplette Struktur aus der DB ausgelesen hab', wurden ziemlich viel=
e SELECT-Anfragen gemacht.=20

> * Tom Malek wrote:
> > Ich suche aber eine Klasse rein ohne das grafische Output, denn das
> m=F6cht'
> > ich selber handlen.
>=20
> Sagte ich doch, http://www.ulf-wendel.de/menu3/
>=20
> > Ausserdem soll das ganze auf mySQL-Basis funktionieren,
> > was bei Menu3 wohl nicht der Fall ist !?
>=20
> Macht ja nix. Wenn deine DB-Men=FCstruktur =FCber parent
> gel=F6st ist, also z.B.
>=20
>    cid
>    cparent
>    cname
>   =20
>    cid   cparent   cname
>    1     0         foo
>    2     1         untermenuepunkt von foo
>   =20
> Dann baust du dir einfach eine rekursive Funktion, die
> das zusammenschneidert, z.B. so:
>=20
> <?php
>=20
> class tree_manager {
>=20
> =09[...]
> =09
>         function read_categories_into_tree($parent, &$readarr) {
>           $db =3D new DB_job;
>           $db1 =3D new DB_job;
>=20
>           $db->query("select * from category where cparent=3D'$parent'");
>          =20
>           while ($db->next_record()) {
>             $id =3D $db->f("cid");
>             $name =3D $db->f("cname");
>=20
>             $hash =3D $id;
>=20
>             $readarr["$hash"] =3D array(
>             =09=09=09"title" =3D> $name,
>         =09=09=09"url" =3D> "catedit.php?id=3D$id",
> =09=09=09=09"target" =3D> "right"
>             =09=09=09);
>=20
>             $db1->query("select count(*) as anz from category where
> cparent=3D'$id'");
>             $db1->next_record();
>             $anz =3D $db1->f("anz");
>=20
>             if ($anz > 0) {
>               $readarr["$hash"]["sub"] =3D array();
>               $this->read_categories_into_tree($id,
> $readarr["$hash"]["sub"]);
>             }
>           }
>         }
>=20
> }
> ?>
>=20
>=20
> PS: bitte keine Fullquotes und nach 72 Zeichen einmal
> auf die RETURN-Taste hauen, Mails sind keine Textver-
> arbeitung.
>=20
> --=20
> Die Marktumfrage zu PHP Schulungen, Consultingdienstleistungen und
> frei verf=FCgbaren Artikeln.
>=20
>         Mitmachen? http://www.thinkphp.de/survey/survey.php
> --=20
> ** http://www.php-center.de **
> Die PHP-Liste: mailto: php_(at)_phpcenter.de
> http://lists.phpcenter.de/mailman/listinfo/php
>=20

______________________________________________________
http://firemail.fireball.de - Ihr Briefkasten im Web.=20
Einfach, schnell, sicher.



php::bar PHP Wiki   -   Listenarchive