v2.5.2
Giriş yap

Breadcrumb sitilinde Recursive kategori listeleme.

mrknowitall
1,202 defa görüntülendi

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

mrknowitall
1540 gün önce

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