v2.5.2
Giriş yap

Sınırsız kategorileri listelemek

mb
226 defa görüntülendi

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("&nbsp;", $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.

Cevap yaz
Cevaplar (3)
emmir2
422 gün önce
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>";
    }
}
mb
424 gün önce

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.

emmir2
425 gün önce
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>";
    }
}