Normal şartlar altında, problemsiz çalışıyor olması gerekiyor birde şöyle dene bakalım problem devam edecek mi. Ek olarak db yapısından, daha uzun bir kesit (yapmak istediğin halinin) paylaşırsan daha aydınlatıcı olabilir şuan ki durum için. Kolay gelsin.
function menuler($id = 0, $string = 0)
{
global $db;
$menuIcerik = $db->prepare("SELECT FROM panel_menu_menuler WHERE ust_menu_id = ? ORDER BY link_sira ASC");
$menuIcerik->bind_param("s", $id);
$menuIcerik->execute();
$menuIcerikSonuc = $menuIcerik->get_result();
$returnItem = false;
/*
returnItem degeri ön tanımlı olarak false veriliyor, eğer if sorgusu içerisine girmez ise, otomatik olarak false dönecektir, eğer girer ise doğal olarak html değerini dönecektir.
*/
if ($menuIcerikSonuc->num_rows > 0) {
$returnItem = '';
while ($menu = $menuIcerikSonuc->fetch_object()) {
$returnItem .= '<li class="dropdown"><a href="' . $menu->link . '" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">' . $menu->link_adi . '</a>';
/*
Ana kategori olmasına göre, sub içeriği veriyor bu durumu kendine göre database üzerinden yada kod yordamıyla ayarlayabilirsin. Gönderdiğin ekran görüntüsünü baz olarak bu şekilde düzenledim.
*/
$getSubs = menuler($menu->id, $string + 2);
if ($getSubs != false && $getSubs != "") {
$returnItem .= '<ul class="dropdown-menu">';
$returnItem .= $getSubs;
$returnItem .= '</ul>';
}
$returnItem .= '</li>';
}
}
return $returnItem;
}
Tekrar merhaba. Kod ve veritabanı yapısının son halini ekliyorum. Önceki postta sonsuz listeleme yapabilen bir menüden bahsetmek istemiştim. ust_menu_id 'si 0'a eşit olan yani ana menü olan verileri ve bunların alt verileri listeleniyor. Fakat bunların alt menüleri listelenemiyor (Örnek olarak 8'nolu id). Html çıktısını incelediğimde bir problem görünmüyor. Fakat while döngüsünde id, ust_id v.b. döndürdüğümde bahsettiğim 8 id'li satırda listelenmiyor. Sanırım açıklayabildim.
function menuler($id = 0, $menuTipi, $menuKod = 0)
{
global $db;
$menuIcerik = $db->prepare("SELECT * FROM panel_menu_menuler WHERE ust_menu_id = ? AND isim_kod = ? ORDER BY link_sira ASC");
$menuIcerik->bind_param("is",$id,$menuKod);
$menuIcerik->execute();
$menuIcerikSonuc = $menuIcerik->get_result();
if($menuTipi == "0"){
$returnItem = false;
/*
returnItem degeri ön tanımlı olarak false veriliyor, eğer if sorgusu içerisine girmez ise, otomatik olarak false dönecektir, eğer girer ise doğal olarak html değerini dönecektir.
*/
if($menuIcerikSonuc->num_rows > 0){
while($menu = $menuIcerikSonuc->fetch_object()){
//echo $menu->menuler_benzersiz_kimlik."-";
$subIcon = false;
if ($menu->icon == 1) {
$subIcon .= '<span class="caret"></span>';
} else if($menu->icon == 0) {
$subIcon .= '';
}else{
return false;
}
if ($menu->ust_menu_id == 0) {
$returnItem .= '<li class="dropdown"><a href="modul.php?MENU=menu_icerik_duzenle&IsimKod='.$menu->menuler_benzersiz_kimlik.' " class="dropdown-toggle" data-toggle="dropdown" title="Düzenle" role="button" aria-haspopup="true" aria-expanded="false">'.$menu->link_adi.$subIcon.'</a>';
} else {
$returnItem .= '<li><a href="#" title="Düzenle">'.$menu->link_adi.$subIcon.'</a>';
}
/*
Ana kategori olmasına göre, sub içeriği veriyor bu durumu kendine göre database üzerinden yada kod yordamıyla ayarlayabilirsin. Gönderdiğin ekran görüntüsünü baz olarak bu şekilde düzenledim.
*/
if($menu->ust_menu_id == 0){
$getSubs = menuler($menu->id, $menuTipi = 0, $menuKod);
if($getSubs !== false && $getSubs != ""){
$returnItem .= '<ul class="dropdown-menu">';
$returnItem .= $getSubs;
$returnItem .= '</ul>';
}
}
$returnItem .= '</li>';
//echo $menu->id."-";
//echo $menu->ust_menu_id."-";
//echo $menu->menuler_benzersiz_kimlik."-";
}
}
return $returnItem;
}else if($menuTipi == "1"){
echo "Dikey";
}else{
return false;
}
}
Çıktısı: