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
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...