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;
} Php & Mysql Bootstrap Menü
12
●1.269
- 04-09-2016, 04:00:32Normal ş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.
- 09-09-2016, 12:19:38Aşağıdaki kodda, "kategoriler" tablomuza bağlanıyoruz, sizin data yapınıza göre değişkenler:
kat_id = id
kat_ustid = ust_menu_id
kat_adi = link_adi
<?php // Kategorileri çekiyoruz... $query = "SELECT * FROM kategoriler order by kat_id ASC"; $goster = $db->prepare($query); $goster->execute(); //queriyi tetikliyor $toplamSatirSayisi = $goster->rowCount(); // sorgudan dönen satır sayısını öğreniyoruz $tumSonuclar = $goster->fetchAll(); //DB'deki bütün satırları ve sutunları $tumSonuclar değişkenine dizi şeklinde aktarıyoruz //alt kategorisi olmayan kategorilerin sayısını öğreniyoruz: $altKategoriSayisi = 0; for ($i = 0; $i < $toplamSatirSayisi; $i++) { if ($tumSonuclar[$i]['kat_ustid'] == "0") { $altKategoriSayisi++; } } // Kategoriler yazdırıyoruz... for ($i = 0; $i < $toplamSatirSayisi; $i++) { if ($tumSonuclar[$i]['kat_ustid'] == "0") { Ust_Kategoriler($tumSonuclar[$i]['kat_id'], $tumSonuclar[$i]['kat_adi'], $tumSonuclar[$i]['kat_ustid']); } } function Ust_Kategoriler($id, $baslik, $ustKategori) { global $tumSonuclar; global $toplamSatirSayisi; //kategorinin, alt kategori sayısını öğreniyoruz: $altKategoriSayisi = 0; for ($i = 0; $i < $toplamSatirSayisi; $i++) { if ($tumSonuclar[$i]['kat_ustid'] == $id) { $altKategoriSayisi++; } } // eğer alt kategorisi varsa, link vermiyoruz... if ($altKategoriSayisi > 0) { echo '<li class="has-sub"><a href="'.$id.'-urunler-'.permalink($baslik).'.html">'.$baslik.' ('.$altKategoriSayisi.') <div class="arti artidiv"><i class="fa fa-plus-square-o"></i></div><div class="arti eksidiv"><i class="eksi fa fa-minus-square-o"></i></div></a>'; }else{ echo '<li class="has-sub"><a href="'.$id.'-urunler-'.permalink($baslik).'.html">'.$baslik.' ('.$altKategoriSayisi.')</a>'; } if ($altKategoriSayisi > 0) { //alt kategorisi varsa onları da listele echo '<ul>'; for ($i = 0; $i < $toplamSatirSayisi; $i++) { if ($tumSonuclar[$i]['kat_ustid'] == $id) { Ust_Kategoriler($tumSonuclar[$i]['kat_id'], $tumSonuclar[$i]['kat_adi'], $tumSonuclar[$i]['kat_ustid']); } } echo '</ul>'; } echo '</li>'; } ?> - 19-09-2016, 20:33:59Kimlik doğrulama veya yönetimden onay bekliyor.trdeveloper adlı üyeden alıntı: mesajı görüntüle
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ı:
- 19-09-2016, 21:35:26Merhaba,
ust_id'yi 0 olarak kontrol ettirmeyi önceki sürümde iptal etmiştik hatırlarsan ? ust_id si olduğu için içeriği alman zaten imkansız
Gözden kaçırdın sanırım o kısmı söylemiştim ama dediğim gibi gözden kaçtı sanırım.
if($menu->ust_menu_id == 0){ bu bölüm benim yolladığım kod blogun da yok dikkat edersen.
Saygılarımla.

