kostenloser Webspace werbefrei: lima-city


Menü mit Submenüs dynamisch mit PHP generieren

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    makawa

    makawa hat kostenlosen Webspace.

    !EDIT!
    Was ich eigentlich Suche ist eine Kurzschreibweise hiervon:
    if($query = $this -> sql_connection -> prepare("SELECT id, title, url FROM meine_db WHERE extra_rights = '0' AND status = '2' AND type = '2' AND child_of = '0'")) {
                    $query -> execute();
                    $query -> bind_result($tmp_id, $tmp_title, $tmp_url);
                    $query -> store_result();
    
                    while($query -> fetch())
                    {
                        $this -> menu .= "<li";
                        $this -> menu .= ($this -> current_url == $tmp_url) ? " class='active' " : ""; 
                        $this -> menu .= "><a href='{$this -> protocol}://{$this -> site}/{$tmp_url}/'>{$tmp_title}</a>";
    
                        if($query2 = $this -> sql_connection -> prepare("SELECT id, title, url FROM meine_db WHERE extra_rights = '0' AND status = '2' AND type = '2' AND child_of = ?")) {
                                $query2 -> bind_param("i", $tmp_id);
                                $query2 -> execute();
                                $query2 -> bind_result($tmp_id, $tmp_title, $tmp_url);
                                $query2 -> store_result();
    
                                if($query2 -> num_rows > 0)
                                {
                                    $this -> menu .= "<ul>";
                                }
    
                                while($query2 -> fetch())
                                {
                                    $this -> menu .= "<li";
                                    $this -> menu .= ($this -> current_url == $tmp_url) ? " class='active' " : ""; 
                                    $this -> menu .= "><a href='{$this -> protocol}://{$this -> site}/{$tmp_url}/'>{$tmp_title}</a></li>";
                                }
    
                                if($query2 -> num_rows > 0)
                                {
                                    $this -> menu .= "</ul>";
                                }
    
                            $query2 -> close();
                        }
                        else
                        {
                            $this -> debug_me($this -> sql_connection -> error);
                        }
    
                        echo "</li>";
                    }
    
                $query -> close();
            }
            else
            {
                $this -> debug_me($this -> sql_connection -> error);
            }
    Da ich das ca 5 mal machen muss und keine Ewig verschachtelte Abfrage will, dachte ich mir man kann das vielleicht irgendwie mit einer Schleife Realisieren.

    !EDIT ENDE!

    Hallo liebe Community,
    ich generiere auf meiner Website das Menü Dynamisch mit PHP und Inhalten aus meiner DB. Nun möchte ich diese Funktion um Submenüs erweitern.
    Dazu habe ich in meiner Datenbank das Feld "child_of" hinzugefügt. Links aus der ersten Ebene haben dort eine 0 stehen, Links aus tieferen Ebenen (also aus submenüs) haben dort die ID des Eintrages stehen, in dessen Submenü sie auftauchen.
    Also wenn zb "Über uns" mit der ID 5 in der ersten Ebene angezeigt werden soll hat es child_of = 0. Wenn man jetzt aber beim überfahren von "Über uns" der Link zu "Unser Verein" mit der ID 8 angezeigt werden soll hat "Unser Veirein" child_of = 5.
    Wenn man als Untermenü von "Unsere Verein" die Links zu "BlaBlaBla" und "Lorem Impsum" haben will, bekommen diese child_of = 8.

    Nun ist die Frage wie ich das am Besten in PHP umsetzen soll. Im Moment sieht mein Code noch so aus:
    if($query = $this -> sql_connection -> prepare("SELECT id, title, url FROM meine_db WHERE extra_rights = '0' AND status = '2' AND type = '2'")) {
                    $query -> execute();
                    $query -> bind_result($tmp_id, $tmp_title, $tmp_url);
                    $query -> store_result();
    
                    while($query -> fetch())
                    {
                        $this -> menu .= "<li";
                        $this -> menu .= ($this -> current_url == $tmp_url) ? " class='active' " : "";
                        $this -> menu .= "><a href='{$this -> protocol}://{$this -> site}/{$tmp_url}/'>{$tmp_title}</a></li>";
                    }
    
                $query -> close();
            }
            else
            {
                $this -> debug_me($this -> sql_connection -> error);
            }
    Meine Idee war es als Abfragebedingung noch "AND child_of ='0'" hinzuzufügen und dann innerhalb von "while($query -> fetch())" eine weiter Schleife zu erstellen, die dann die Submenüs erstellt. Mir ist aber noch nicht ganz klar wie ich dass am besten mache.

    Vielen Dank für alle Vorschläge im Vorraus
    makawa

    p.s.: Die Submenüs sind HTML Technisch gesehen einfache verschachtelte Listen

    Beitrag zuletzt geändert: 4.4.2013 20:38:44 von makawa
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. schreib es doch einfach in eine eigene funktion die dann das gewünschte ergebnis zurrück gibt, dann musst du nur einmal schreiben und der code wird übersichtlicher.
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!