merhaba konu kapanmadığı için sorunun çözülmediğini düşünerek yazıyorum bu şekilde denermisiniz.
<?php
function getAllSubcategories($db, $parentID) {
// İlk olarak doğrudan alt kategorileri çekelim
$categories = $db->query("SELECT id FROM urun_kategori_lokma WHERE kategori='$parentID'")->fetchAll(PDO::FETCH_COLUMN);
$allCategories = $categories;
// Her alt kategori için tekrar fonksiyonu çağır
foreach ($categories as $categoryID) {
$subcategories = getAllSubcategories($db, $categoryID);
$allCategories = array_merge($allCategories, $subcategories);
}
return $allCategories;
}
function getCategoryHierarchy($db, $categoryID, $delimiter = " > ") {
$category = $db->query("SELECT * FROM urun_kategori_lokma WHERE id='$categoryID'")->fetch(PDO::FETCH_ASSOC);
if (!$category) {
return ""; // Kategori bulunamadıysa boş döndür
}
// Eğer ana kategori değilse (kategori != 0), üst kategoriyi bul
if ($category['kategori'] != '0') {
$parentHierarchy = getCategoryHierarchy($db, $category['kategori'], $delimiter);
return $parentHierarchy . $delimiter . $category['adi'];
}
// Ana kategori ise sadece kendi adını döndür
return $category['adi'];
}
?>
<div class="main category">
<div class="container">
<h5 class="page-subtitle text-center"></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 alalım
$kategoriID = $anaKategori['id'];
$altKategoriler = getAllSubcategories($db, $kategoriID);
// Ana kategoriyi ve tüm alt kategorileri sorguya dahil edelim
$kategoriListesi = implode(",", array_merge([$kategoriID], $altKategoriler));
$urunler = $db->query("SELECT * FROM urunler_lokma WHERE kategori IN ($kategoriListesi) ORDER BY sira ASC")->fetchAll(PDO::FETCH_ASSOC);
foreach ($urunler as $goster) {
// Ürünün bağlı olduğu kategori hiyerarşisini alın
$kategoriHiyerarsi = getCategoryHierarchy($db, $goster["kategori"]);
?>
<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="category"><?=$kategoriHiyerarsi?></span> <!-- Hiyerarşik kategori adı -->
<span class="price"><?=$goster["fiyat"]?> <i class='fa fa-try'></i></span>
</div>
</div>
</a>
</div>
<?php
}
}
}
?>
</div>
</div>
</div>