Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Sınırsız alt Menu oluşturma

Slm arkadaşlar bilirsiniz sınırsız menu oluşturma işini

şimdi benim mysql veritabanım şöyle

id alt_id menu_ismi
1 0 Anasayfa
2 0 Kategoriler
3 1 PHP
4 1 FLASH

ve menu yapım da şöyle
<div id="ustMenu">
  <ul id="menu">
    <li><a href="#">Anasayfa</a><li>
   <li>Kategoriler
      <ul>
      	<li><a href="#">PHP</a></li>
        <li><a href="#">FLASH</a></li>
      </ul>
    </li>
</ul>
</div>

Dinamik bir şekilde bunu nasıl yapabilirim.
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • 1
    fka adlı üyenin fotoğrafı
    13 yıl önce yazılmış
    70 cevap - 0 soru
    Önce tüm veriyi array'a dök, şöyle

    function getMenu($topmenu = 0)
    {
        $menus = array();
        $sql = mysql_query("select * from menu where alt_id = ".floatval($topmenu));
        while (false !== ($ustmenu = mysql_fetch_assoc($sql)))
        {
            $sub = getMenu($ustmenu['id']);
            if (count($sub) > 0)
                $menus[] = $sub;
            else
                $menus[] = $ustmenu['menu_ismi'];
        }
        return $menus;
    }
    


    Bu şekilde bir rekürsif yapı oluşturman gerekiyor, denemedim ama çalışması gerekiyor. Test edilmeli, fonksiyon sürekli bir üstmenü id'si alarak alt kısmını taramalı, böylece rekürsif bir array elde edersiniz bu array ile dönerek

    $menu = getMenu();
    
    function writeMenu($menu)
    {
        echo '<ul>';
        foreach ($menu as $item)
        {
            if (is_array($item))
            {
                writeMenu($item);
            } else
                echo '<li>'.$item['menu_ismi'].'</li>';
        } 
        echo '</ul>';
    }
    


    şeklinde bir rekürsif fonksiyonla yazabilirsin, ikisini bir arada da yapabilirsin.

    Not: fonksiyonları denemedim, elden geçmesi gerekebilir.

Cevaplar

  • mtdesign adlı üyenin fotoğrafı
    13 yıl önce yazılmış
    14 cevap - 0 soru
    menuler.tbl
    ID | menu_adi
    1 | Anasayfa
    2 | Kategoriler

    altmenuler.tbl
    ID | menu_id | altmenu_adi
    1 | 2 | PHP
    2 | 2 | FLASH

    Daha sonra PHP ya da vb. yazılımlarla bu iki tablo arasında ilişki kurularak(RelationShip), döngüler yardımıyla sayfaya yazdırılır.