Doğru Cevap
-
Ö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.