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;
}