phpbar.de logo

Mailinglisten-Archive

[php] menu mit beliebiger tiefe

[php] menu mit beliebiger tiefe

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Don Feb 23 17:23:24 CET 2006


Hi Michael,

Am Donnerstag, 23. Februar 2006 17:05 schrieb Michael Borchers:
> ich werde mich ans rekursive modell halten, hier meine DB struktur:
>
> CREATE TABLE `menu` (
>   `menu_id` int(11) NOT NULL auto_increment,
>   `menu_name` varchar(255) NOT NULL default '',
>   `menu_level` char(1) NOT NULL default '0',
>   `refer2menu_id` int(11) NOT NULL default '0',
>   `menu_id_parent` int(11) NOT NULL default '0',
>   PRIMARY KEY  (`menu_id`),
>   KEY `menu_level` (`menu_level`),
>   KEY `menu_id_parent` (`menu_id_parent`),
>   KEY `refer2menu_id` (`refer2menu_id`)
> )
>
>
> ich glaube aber mein denkansatz will sich nicht so recht umsetzen
> lassen.
>
> wie würde der rekursive ablauf theoretisch aussehen, welche funktion
> ruft sich wie selbst auf?!
> ich verzweifel hier gleich:(

kurzes Beispiel:

  function getLevel($iIdParent) {

    $sQuery = 'SELECT * FROM menu WHERE menu_id_parent = '.$iIdParent;
    $rResult = mysql_query($sQuery);

    while ($aLine = mysql_fetch_array($rResult, MYSQL_ASSOC)) {

      echo('<br />'.str_pad($aLine['menu_name'],
	                    $aLine['menu_level'], "--- ", STR_PAD_LEFT));
      getLevel($aLine['menu_id']);
    }

  }

  getLevel(0);

Das Beispiel setzt voraus, daß das bzw. die Elemente der obersten Ebene 
die menu_id_parent = 0 haben.


Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive