mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 19.04.2024 05:36 Benutzername: Passwort: Auto-Login

Thema: [PHP] Multilevel-Menü aus der Datenbank kreieren vom 30.03.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [PHP] Multilevel-Menü aus der Datenbank kreieren
Seite: Zurück  1, 2, 3, 4, 5, 6, 7, 8  Weiter
Autor Nachricht
Account gelöscht


Ort: -
Alter: -
Verfasst Fr 09.12.2005 13:27
Titel

Antworten mit Zitat Zum Seitenanfang

Wer hat das denn wieder ausgegraben? Das Ding oben is schrott ich sitz grad *zufälligerweise* dran und schreibs neu. Dauert aber noch neun Jahre...
 
Account gelöscht


Ort: -
Alter: -
Verfasst Sa 10.12.2005 00:43
Titel

Antworten mit Zitat Zum Seitenanfang

kotzt mich voll an, anders als rekursiv bekomm ichs nicht hin. nested sets sind zwar knorke, aber wenn man spielereien wie getSiblings, getParent, getFirstChild, insertChild, insertPrevSibling etc.. benötigt, ist das ne ziemliche arbeit. und ich gebs zu: die queries übersteigen mein denkvermögen. * Ich will nix hören... *

argh!
 
Anzeige
Anzeige
beeviZ

Dabei seit: 30.09.2002
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Sa 10.12.2005 03:45
Titel

Antworten mit Zitat Zum Seitenanfang

poste mal deine rekursive lösung. hab auch mal sowas gemacht. war aber am ende sowas von derbe billig. aber funktioniert Grins

Zuletzt bearbeitet von beeviZ am Sa 10.12.2005 03:45, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Account gelöscht


Ort: -
Alter: -
Verfasst Sa 10.12.2005 14:58
Titel

Antworten mit Zitat Zum Seitenanfang

Ist auch mehr als preiswert *peinlichpeinlich*, geht sicher besser aber ist ja auch noch nicht fertig * Ööhm... ja? *

Code:
function getMenuTree($startId = false, $lvl = false) {

    if ($startId) {

        $this->str = "<ul>";
        $query =   "SELECT *
                FROM pre_cPages
                WHERE id = {$startId}";
        $res = $this->DB->query($query);
        $r = $res->fetchAll(PDO_FETCH_ASSOC);
       
       
        $this->str .= "<li>";
        $this->str .= "<a href=\"index.php?pageId={$r[0]["pageStrId"]}\">{$r[0]["pageStrId"]}</a>";

        $this->pId = $r[0]["id"];
        $this->getMenuTree();
        $this->str .= "</li>";
        $this->str .= "</ul>";

    } else {
        $query =   "SELECT * FROM pre_cPages
                    WHERE pid = {$this->pId} ORDER BY sort";

        $res = $this->DB->query($query);
        $r = $res->fetchAll(PDO_FETCH_ASSOC);

        if ($r) {
            $this->str .= "<ul>";
            foreach ($r AS $v) {
                $this->str .= "<li><a href=\"index.php?pageId={$v["pageStrId"]}\">{$v["pageStrId"]}</a>";
                $this->pId = $v["id"];
                $this->getMenuTree();
                $this->str .= "</li>";
            }
            $this->str .= "</ul>";
        }

       
       


    }
   
    return $this->str;
}
 
beeviZ

Dabei seit: 30.09.2002
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Mo 12.12.2005 03:35
Titel

Antworten mit Zitat Zum Seitenanfang

haha. meins is so dermaßen noch billiger. bin aber gerade dabei das noch n bisschen zu überarbeiten:

Code:
function list_cats($cat_id='') {

   $current = mysql_query("SELECT * FROM categories WHERE `cat_id` = '$cat_id'");
   $get_parent = mysql_fetch_row($current);
   
   $get_childs = mysql_query("SELECT cat_id, parent_cat_id FROM categories WHERE `cat_id` = '$cat_id'");

   while($cat = mysql_fetch_assoc($get_childs)) {
      $categories .= $cat['cat_id'].';';
      $categories .= list_cats($cat['parent_cat_id']);
   }
   return $categories;
}

$categories = list_cats($cat_id);
$categories = explode(";",$categories);
$categories = array_reverse($categories);


print_r($categories) hat geschrieben:
Code:
array (
   [0] = ,
   [1] = 4,
   [2] = 12,
   [3] = 22
   )


...





//edit
ich sach mal, hauptsache es klappt. und das tuts *ha ha*


Zuletzt bearbeitet von beeviZ am Mo 12.12.2005 03:35, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Waschbequen
Account gelöscht


Ort: -

Verfasst Mo 12.12.2005 10:02
Titel

Antworten mit Zitat Zum Seitenanfang

Gar viel gibt's da nicht zu überarbeiten - wenn die Datenbank keine andere Möglichkeit unterstützt (ich sag nur CTE *hehe*), dann ist das für den Anwendungsfall sicher die effizienteste Lösung. Aber das ist nur ne Lösung, um die komplette Struktur rauszuhauen - wenn man nur den aktuellen Ast des Baumes aufklappen will, holt man sich so eindeutig zu viel Daten. Für den Fall würde ich dann nochmal nen Blick auf mein Snippet ein paar Seiten zuvor empfehlen.
 
Account gelöscht


Ort: -
Alter: -
Verfasst Mo 12.12.2005 16:54
Titel

Antworten mit Zitat Zum Seitenanfang

Eben darum gehts... nen Baum zu trecken is net dat Problem jung ewwe allet andere is jesicke.
 
webdeveloper

Dabei seit: 25.05.2003
Ort: SG
Alter: 39
Geschlecht: Männlich
Verfasst Mo 12.12.2005 18:08
Titel

Antworten mit Zitat Zum Seitenanfang

für miene begriffe kannst du da nur mit nem parent und nem child arbeiten...

ebene 1 = parent 0
ebene 2 = parent 1
.....

Im endeffekt so, wie es beeviZ in seinem select gemacht hat.
3 spalten auslesen lassen (id, name und parent) und fertig.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen Problem Multilevel Liste Indesign CC (2014)
Kugel kreieren
wie erstelle ich diesen menü effekt bzw. das gesammte menü?
CSS Menü - Finde nicht das richtige Menü
datenbank ?
SQL-Datenbank
Neues Thema eröffnen   Neue Antwort erstellen Seite: Zurück  1, 2, 3, 4, 5, 6, 7, 8  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.