Breadcrumb sitilinde Recursive kategori listeleme.
Merhaba Arkadaslar biraz arastirma yaptim ancak Recursive mantigini bir turlu cozemedim,
Diyelim ki boyle bir verimiz var
<?php
$categories = [
[
'id' => 1,
'name' => 'Main Category',
'parent_id' => 0
],
[
'id' => 2,
'name' => 'Main Category 1',
'parent_id' => 0
],
[
'id' => 3,
'name' => 'Main Category 2',
'parent_id' => 0
],
[
'id' => 4,
'name' => 'Alt Category',
'parent_id' => 1
],
[
'id' => 5,
'name' => 'Alt Category 1',
'parent_id' => 4
]
];
Ve çıktısının bu şekilde olmasını istiyorum..
Tabi ki de Recursive fonksiyon olma koşu ile.
Main Category
Main Category > Alt Category
Main Category > Alt Category > Alt Category 1
Main Category 1
Main Category 2
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (1)
Merhaba arkadaşlar uzun uğraşlar sonucu yaptım ve cevabı sizinle paylaşmak istedim.
Diyelim database kayıtları yukardaki array gibi.
View bölümü bu şekilde olacak...
<?php
if ($row['category_parent_id'] > 0) {
echo breadcrumbCategory($row['category_name'], $row['category_parent_id'], $row['category_id']);
//print_r($findCategory);
} else {
echo $row['category_name'];
}
?>
Recursive Fonksiyonda bu sekilde olacak/
<?php
function breadcrumbCategory($category_name = null, $parent_id = 0, $category_id = null)
{
$html = '';
global $db;
$array = $db->from('download_categories')->where('category_id', $parent_id, '=')->all();
foreach ($array as $category) {
$html .= breadcrumbCategory($category['category_name'], $category['category_parent_id']);
$html .= $category['category_name'];
$html .= ' > ';
if ($category_id) {
$results = $db->from('download_categories')->where('category_id', $category_id, '=')->all();
foreach ($results as $result) {
$html .= $result['category_name'];
}
}
}
return $html;
}
Onemli not , Kopyala yapistir ile calismaz kodlari kendinize gore uyarlamaniz gerekir...