Merhaba,
Gönderdiğin Tablo yapısı ve kod yapısına uyarak düzenlemeler yaptım, string değerini nereye gönderdiğini kullanmadığını fark etmiş olsam da, başka şekilde değerlendireceğini düşündüm için o bölüme pek dokunmadım. Umarım çalışır, test etme şansım olmadı. İyi çalışmalar.
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){
while($menu = $menuIcerikSonuc->fetch_assoc()){
$returnItem .= '<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">'.$menu->link_adi.'<span class="caret"></span></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, $string + 2);
if($getSubs !== false){
$returnItem .= '<ul class="dropdown-menu">';
$returnItem .= $getSubs;
$returnItem .= '</ul>';
}
}
$returnItem .= '</li>';
}
}
return $returnItem;
}