Sınırsız kategorileri listelemek
Merhabalar
Sınırsız kategorim var ve bunları menü de listelemek istiyorum.
Normal listelerken sıkıntı olmuyor ama submenu yapmak istediğim de olmadı.
Kullandığım listeleme fonksiyonu
function MenuYaz($KategoriUstIDegeri=0, $BoslukDegeri=0){
global $db;
$KategoriSorgusu = $db->prepare("SELECT * FROM kategoriler WHERE kategori_ust_id = ?");
$KategoriSorgusu->execute([$KategoriUstIDegeri]);
$KategoriSorgusuSayi = $KategoriSorgusu->rowCount();
$KategoriSorugusuKayitlari = $KategoriSorgusu->fetchAll(PDO::FETCH_ASSOC);
f($KategoriSorgusuSayi>0){
foreach($KategoriSorugusuKayitlari as $Kayitlar){
$KategoriID = $Kayitlar["kategori_id"];
$KategoriUstID = $Kayitlar["kategori_ust_id"];
$KategoriAdi = $Kayitlar["kategori_adi"];
$KategoriLink = $Kayitlar["kategori_link"];
echo "<li>" . str_repeat(" ", $BoslukDegeri). $KategoriAdi . "</li>";
MenuYaz($KategoriID, $BoslukDegeri+10);
}
}
}
Yapmak istediğim menu
<ul>
<li><a href="link.php"><span>BİLGİSAYAR <i class="fal fa-angle-down"></i></span></a>
<ul class="submenu">
<li><a href="link.php">ASUS</a></li>
<li><a href="link.php">LENOVA</a></li>
<li><a href="link.php">HP</a></li>
</ul>
</li>
<li><a href="link.php"><span>ELEKTRONİK</span></a></li>
<li><a href="link.php"><span>KIYAFET</span></a></li>
<li><a href="link.php"><span>MUTFAK</span></a></li>
</ul>
Kategorileri menü içerisin de nasıl gösterebilirim.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (3)
function MenuYaz($KategoriUstIDegeri = 0, $BoslukDegeri = 0){
global $db;
$KategoriSorgusu = $db->prepare("SELECT * FROM kategoriler WHERE kategori_ust_id = ?");
$KategoriSorgusu->execute([$KategoriUstIDegeri]);
$KategoriSorgusuSayi = $KategoriSorgusu->rowCount();
$KategoriSorugusuKayitlari = $KategoriSorgusu->fetchAll(PDO::FETCH_ASSOC);
if ($KategoriSorgusuSayi > 0) {
echo "<ul>";
foreach($KategoriSorugusuKayitlari as $Kayitlar) {
$KategoriID = $Kayitlar["kategori_id"];
$KategoriUstID = $Kayitlar["kategori_ust_id"];
$KategoriAdi = $Kayitlar["kategori_adi"];
$KategoriLink = $Kayitlar["kategori_link"];
$SubKategoriSorgusu = $db->prepare("SELECT * FROM kategoriler WHERE kategori_ust_id = ?");
$SubKategoriSorgusu->execute([$KategoriID]);
$SubKategoriSorgusuSayi = $SubKategoriSorgusu->rowCount();
$class = "";
if ($SubKategoriSorgusuSayi > 0) {
$class = " class='submenu'";
}
echo "<li><a href='$KategoriLink'><span>$KategoriAdi";
if ($SubKategoriSorgusuSayi > 0) {
echo " <i class='fal fa-angle-down'></i>";
}
echo "</span></a>";
if ($SubKategoriSorgusuSayi > 0) {
echo "<ul$class>";
MenuYaz($KategoriID, $BoslukDegeri + 10);
echo "</ul>";
}
echo "</li>";
}
echo "</ul>";
}
}
Gönderdiğiniz kodu denedim fakat şöyle bir sıkıntı oluyor. İlk olarak <ul> ile başlatıyuruz. Daha sonra eğer alt kategorisi varsa
tekrar bir ul daha açıp class olarak "submenu" etikietini vermem gerekiyor. Şuan ki kodda sadece ul olarak ekliyor.
<li><a href="link.php"><span>ANA MENÜ <i class="fal fa-angle-down"></i></span></a>
<ul class="submenu">
<li><a href="link.php">ALT MENÜ 1</a></li>
<li><a href="link.php">ALT MENÜ 2 </a></li>
<li><a href="link.php">ALT MENÜ 3</a></li>
</ul>
</li>
<li><a href="link2.php"><span>DİĞER ANA MENÜ</span></a></li>
<li><a href="link3.php"><span>DİĞER ANA MENÜ 3</span></a></li>
if ($SubKategoriSorgusuSayi > 0) {
echo "<li><a href='$KategoriLink'><span>$KategoriAdi <i class='fal fa-angle-down'></i></span></a>";
MenuYaz($KategoriID, $BoslukDegeri+10);
echo "</li>";
}
Buraki kisim da ul classını eklediğimde bu sefer iç içe ul yapıyor ve bu sefer de menü bozuluyor.
function MenuYaz($KategoriUstIDegeri=0, $BoslukDegeri=0){
global $db;
$KategoriSorgusu = $db->prepare("SELECT * FROM kategoriler WHERE kategori_ust_id = ?");
$KategoriSorgusu->execute([$KategoriUstIDegeri]);
$KategoriSorgusuSayi = $KategoriSorgusu->rowCount();
$KategoriSorugusuKayitlari = $KategoriSorgusu->fetchAll(PDO::FETCH_ASSOC);
if ($KategoriSorgusuSayi > 0) {
echo "<ul>";
foreach($KategoriSorugusuKayitlari as $Kayitlar) {
$KategoriID = $Kayitlar["kategori_id"];
$KategoriUstID = $Kayitlar["kategori_ust_id"];
$KategoriAdi = $Kayitlar["kategori_adi"];
$KategoriLink = $Kayitlar["kategori_link"];
$SubKategoriSorgusu = $db->prepare("SELECT * FROM kategoriler WHERE kategori_ust_id = ?");
$SubKategoriSorgusu->execute([$KategoriID]);
$SubKategoriSorgusuSayi = $SubKategoriSorgusu->rowCount();
if ($SubKategoriSorgusuSayi > 0) {
echo "<li><a href='$KategoriLink'><span>$KategoriAdi <i class='fal fa-angle-down'></i></span></a>";
MenuYaz($KategoriID, $BoslukDegeri+10);
echo "</li>";
} else {
echo "<li><a href='$KategoriLink'><span>$KategoriAdi</span></a></li>";
}
}
echo "</ul>";
}
}