Merhabalar,
Bir php scriptte ana kategori ürünlerini ve alt kategori ürünlerini aynı sayfada çekmek istiyorum. Uzun denemeler sonucunda başarıya ulaşamadım.
Veritabanı yapısı bu şekilde;
CREATE TABLE `urun_kategori_lokma` (
  `id` int(11) NOT NULL,
  `adi` text CHARACTER SET utf8 COLLATE utf8_turkish_ci,
  `sira` text CHARACTER SET utf8 COLLATE utf8_turkish_ci,
  `resim` text CHARACTER SET utf8 COLLATE utf8_turkish_ci,
  `kategori` text CHARACTER SET utf8 COLLATE utf8_turkish_ci,
  `onaciklama` text CHARACTER SET utf8 COLLATE utf8_turkish_ci,
  `durum` text CHARACTER SET utf8 COLLATE utf8_turkish_ci,
  `aciklama` text CHARACTER SET utf8 COLLATE utf8_turkish_ci,
  `seo` text CHARACTER SET utf8 COLLATE utf8_turkish_ci,
  `tur` text CHARACTER SET utf8 COLLATE utf8_turkish_ci,
  `eklenme_tarihi` text CHARACTER SET utf8 COLLATE utf8_turkish_ci,
  `guncelleme_tarihi` text CHARACTER SET utf8 COLLATE utf8_turkish_ci,
  `adi_en` text CHARACTER SET utf8 COLLATE utf8_turkish_ci,
  `aciklama_en` text CHARACTER SET utf8 COLLATE utf8_turkish_ci,
  `onaciklama_en` text CHARACTER SET utf8 COLLATE utf8_turkish_ci,
  `seo_en` text CHARACTER SET utf8 COLLATE utf8_turkish_ci,
  `icon` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Veritabanı içeriği de bu şekilde;
INSERT INTO `urun_kategori_lokma` (`id`, `adi`, `sira`, `resim`, `kategori`, `onaciklama`, `durum`, `aciklama`, `seo`, `tur`, `eklenme_tarihi`, `guncelleme_tarihi`, `adi_en`, `aciklama_en`, `onaciklama_en`, `seo_en`, `icon`) VALUES
(1, 'Lokma', '1', 'resim-yok', '0', '', 'on', '', 'lokma', 'urun_kategori_lokma', '29.10.2024', NULL, NULL, NULL, NULL, '', NULL),
(2, 'Bubble', '2', 'resim-yok', '0', '', 'on', '', 'bubble', 'urun_kategori_lokma', '29.10.2024', NULL, NULL, NULL, NULL, '', NULL),
(3, 'Regnum', '3', 'resim-yok', '0', '', 'on', '', 'regnum', 'urun_kategori_lokma', '29.10.2024', NULL, NULL, NULL, NULL, '', NULL),
(4, 'İçecekler', '4', 'resim-yok', '0', '', 'on', '', 'icecekler', 'urun_kategori_lokma', '29.10.2024', NULL, NULL, NULL, NULL, '', NULL),
(5, 'Süslemeler', '5', 'resim-yok', '0', '', 'on', '', 'suslemeler', 'urun_kategori_lokma', '29.10.2024', NULL, NULL, NULL, NULL, '', NULL),
(6, 'İç Dolgu', '6', 'resim-yok', '5', '', 'on', '', 'ic-dolgu', 'urun_kategori_lokma', '29.10.2024', NULL, NULL, NULL, NULL, '', NULL);
İç Dolgu haricindeki diğer kategoriler ana kategori, İç Dolgu kategorisi Süslemeler kategorisinin alt kategorisi şeklinde. Ana kategorilerin kategori sütunu değerini 0 yaparak, alt kategorinin değerini de ana kategorinin id değeri yaparak belirliyoruz.
Php kodlarımız da aşağıdaki gibi;
<div class="main category">
    <div class="container">
        <h5 class="page-subtitle text-center"><?=$adi?></h5><br/>
        <div class="row">
            <?php
            if (strstr($_SERVER["SCRIPT_URL"], "kategori")) {
                // Ana kategorileri çekelim
                $anaKategoriler = $db->query("SELECT * FROM urun_kategori_lokma WHERE kategori='0' ORDER BY sira ASC")->fetchAll(PDO::FETCH_ASSOC);
                
                foreach ($anaKategoriler as $anaKategori) {
                    echo "<h3>" . $anaKategori["adi"] . "</h3>";  // Ana kategori başlığı
                    
                    // Alt kategorileri ve ana kategoriyi birleştirerek ürünleri çekmeyi deniyorum.
                    $kategoriID = $anaKategori['id'];
                    $urunler = $db->query("SELECT * FROM urunler_lokma WHERE kategori='$kategoriID' OR kategori IN (SELECT id FROM urun_kategori_lokma WHERE kategori='$kategoriID') ORDER BY sira ASC")->fetchAll(PDO::FETCH_ASSOC);
                    
                    foreach ($urunler as $goster) {
                        ?>
                        <div class="col-6 col-lg-3 col-sm-4 col-md-3">
                            <a title="<?=$goster["adi"]?>" href="<?=$goster["seo"]?>">
                                <div class="product box-shadow">
                                    <div class="medium-img image" data-src="resimler/<?=$goster["resim"]?>">
                                        <img class="blur" title="<?=$goster["adi"]?>" alt="<?=$goster["adi"]?>" src="resimler/<?=$logo?>">
                                    </div>
                                    <div class="detail">
                                        <span class="name"><?=$goster["adi"]?></span>
                                        <span class="price"><?=$goster["fiyat"]?> <i class='fa fa-try'></i></span>
                                    </div>
                                </div>
                            </a>
                        </div>
                        <?php
                    }
                }
            } else {
                $cek = $db->query("SELECT * FROM urunler_lokma WHERE kategori='$id' ORDER BY sira ASC")->fetchAll(PDO::FETCH_ASSOC);
                foreach ($cek as $goster) {
                    ?>
                    <div class="col-12 col-md-3">
                        <div class="card border-0 shadow-light text-center mb-4">
                            <div class="card-body position-relative">
                                <div class="h-300 position-relative overflow-hidden">
                                    <div class="background background-h-300">
                                        <img src="resimler/<?=$goster["resim"]?>" alt="">
                                    </div>
                                </div>
                                <a title="<?=$goster["adi"]?>" href="<?=$goster["seo"]?>">
                                    <h4 class="text-default"><?=$goster["adi"]?></h4>
                                </a>
                                <div class="row">
                                    <div class="col text-center">
                                        <p class="text-success my-0"><?=$goster["fiyat"]?></p>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                    <?php
                }
            }
            ?>
        </div>
    </div>
</div>
Ekrana Ana Kategori başlığı altında ana kategori ürünlerini, alt kategori başlığı altına da alt kategori ürünlerini bastırmak istiyorum. Desteğinizi rica ederim.