Menüde kategorilere göre ürün listeleme PHP

Merhaba arkadaşlar kategoriler ve hizmetler adında 2 adet tablom var resimleri aşağıda.

Şimdi bu hizmetler tablosundaki ürünleri eklerken kategorisini seçip ekliyorum. Ve kategoriler tablosundaki kategorinin idsini hizmetler tablosundaki kategoriler_id sütununa atıyor fakat sitede listelerken sıkıntı yaşıyorum. Menüde kategorinin üstüne gelince yana açılan menüde o kategoriye ait ürünlerin çıkmasını istiyorum ama hepsi en alttakinde çıkıyor.

Kodlar aşağıda

  <div id='cssmenu' style="margin-top:20px; ">
<ul>
   <li><a href='index.php'>Ana Sayfa</a></li>
       <li><a href='hakkimizda.php'>Hakkımızda</a></li>
   <li class='active'><a href='#'>Ürünlerimiz</a>
      <ul>
         <?php
include ('db.php');
    $kategorisis = $bag->query("select * from kategoriler")->fetchAll(PDO::FETCH_ASSOC);
foreach ($kategorisis as $row) { ?>            
         <li><a href="#"><?php echo $row['kategori_isim'];?></a><?php } ?>
                 <ul>   
                  <?php include ('db.php'); $hizmetm = $bag->query("select * from hizmetler")->fetchAll(PDO::FETCH_ASSOC); foreach($hizmetm as $mn1){ ?>
               <li><a href="sayfa.php?urunler=<?php echo $mn1['hizmet_id'].'/'.$mn1['seo_url']; ?>"><?php echo $mn1['baslik']; ?></a></li>
                  <?php } ?>
            </ul>
         </li>
        
      </ul>
   </li>
   <li><a href='referanslar.php'>Referanslar</a></li>
   <li><a href='iletisim.php'>İletişim</a></li>
</ul>

</div

<div id='cssmenu' style="margin-top:20px; ">
<ul>
   <li><a href='index.php'>Ana Sayfa</a></li>
       <li><a href='hakkimizda.php'>Hakkımızda</a></li>
   <li class='active'><a href='#'>Ürünlerimiz</a>
      <ul>
         <?php
include ('db.php');
     $kategorisis = $bag->query("
 
                    SELECT*FROM hizmetler 
                    INNER JOIN kategoriler 
                    ON hizmetler.kategoriler_id = kategoriler.kategori_id 
                    ORDER BY hizmet_id DESC
                     
                     ")->fetchAll(PDO::FETCH_ASSOC);
foreach ($kategorisis as $row) { ?>            
         <li>
         <a href="#">
          <?php echo $row['kategori_isim'];?>
          <ul>                
             <li><a href="sayfa.php?urunler=<?php echo $row['hizmet_id'].'/'.$row['seo_url']; ?>"><?php echo $row['baslik']; ?></a></li>
        

            </ul>
         </li>
 <?php } ?>
        
      </ul>
   </li>
   <li><a href='referanslar.php'>Referanslar</a></li>
   <li><a href='iletisim.php'>İletişim</a></li>
</ul>

</div>

 

Yukarıdaki kodları dene. Tasarımda bozulma olabilir. Onu düzenlersin. Önemli olan iki farklı tabloyu listeyebilmek. Seninde istediğin bu sanırım.

 

 

siyahpapyon.com

Merhaba çok teşekkürler dediğin gibi yapınca büyük bi kısmı oldu kategoride 1 ürün varken doğru çalışıyor ama aynı kategoriye ikinci ürünü ekleyince onu tekrar bir bölüm olarak açıyor. Resim aşağıda.

 

Sanırım foreach kısmında bir sorun olmalı. ORDER BY hizmet_id DESC yerine ORDER BY kategori_id DESC dene bakalım ne sonuç alacağız?

 

Eğer yukarıdaki çalışmazsa ORDER BY kategori_id DESC aynı kalsın aşağıdaki kodu dene bir de.

SELECT*FROM kategoriler INNER JOIN hizmetler

Yok malesef seni de yoruyorum ama olmadı sadece sıralama değişiyor yine kategoriler 2 kere çıkıyor. :(

<div id='cssmenu' style="margin-top:20px; ">
<ul>
   <li><a href='index.php'>Ana Sayfa</a></li>
       <li><a href='hakkimizda.php'>Hakkımızda</a></li>
   <li class='active'><a href='#'>Ürünlerimiz</a>
      <ul>
         <?php
include ('db.php');
     $kategorisis = $bag->query("
                    SELECT*FROM kategoriler 
                    INNER JOIN hizmetler 
                    ON hizmetler.kategoriler_id = kategoriler.kategori_id
                    WHERE hizmetler.kategoriler_id = kategoriler.kategori_id
                    ORDER BY kategori_id DESC
                    ")->fetchAll(PDO::FETCH_ASSOC);
foreach ($kategorisis as $row) { 
  ?>            
         <li>
         <a href="#">
          <?php echo $row['kategori_isim'];?>
          <ul>                
             <li><a href="sayfa.php?urunler=<?php echo $row['hizmet_id'].'/'.$row['seo_url']; ?>"><?php echo $row['baslik']; ?></a></li>
        

            </ul>
         </li>
 <?php } ?>
        
      </ul>
   </li>
   <li><a href='referanslar.php'>Referanslar</a></li>
   <li><a href='iletisim.php'>İletişim</a></li>
</ul>

</div>

Bu şekilde dener misin? Bu sefer olması gerekiyor. Bu da olmazsa kendi localhostumda tablolarını kurarak deneyeceğim. 

Malesef yine olmadı sadece sıralama değişti :(

Serkan ilgine çok teşekkür ederim uzun uğraşlar sonucu sonunda çözdüm kodları aşağı ekliyorum belki birine faydası olur :) 

 

<li><a href="#">Ürünlerimiz</a>
                                        <ul class="child">
                                                     <?php
                                                            include ('db.php');
                                                                 $kategorisis = $bag->query("
                                                                                SELECT * FROM kategoriler")->fetchAll(PDO::FETCH_ASSOC);
                                                            foreach ($kategorisis as $kategori) {

     
                                                        ?> 
      
                                            <li><a><?php echo $kategori['kategori_isim'];?></a>
                                                <?php 
                                                      $kategoriUrunleri = $bag->query("SELECT * FROM hizmetler where kategoriler_id=".$kategori["kategori_id"])->fetchAll(PDO::FETCH_ASSOC);
                                                                
                                                if(count($kategoriUrunleri)>0){


                                                ?>
                                                
                                                
                                                <ul>
                                                    <?php
    
                                                        foreach($kategoriUrunleri as $urun){
                                                            ?>
                                                    
                                                     <li><a href="sayfa.php?urunler=<?php echo $urun['hizmet_id'].'/'.$urun['seo_url']; ?>"><?php echo $urun['baslik']; ?></a></li>
                                                    <?php


                                                        }
                                                            
                                                    
                                                    ?>
                                                    
                                                   
                                                </ul>
                                                <?php } ?>
                                            </li>
                                      <?php } ?>
                                        </ul>
                                    </li>

 

Cevap Yaz

Cevap yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git