[PHP] Kategorileme Mantıgı ve Fonksiyonu

[PHP] Kategorileme Mantıgı ve Fonksiyonu

PHP-Mysql[1]Arkadaşlar hepimiz mysql de mutlaka kategorileme yapmışızdır.Sınırsız kategori,kategori ve alt kategori mantıgı bazen insana kafayı yedirtir.Ben bunları fonksiyon haline getirip kodlamalarınıza dahil etmek için basit bir hale getirdim.

İlk önce

Kategori
-Alt kategori

bu mantıkla işleyen fonksiyonumuzu vereyim.

 

function kategori($basla,$limit){
    $ust    =mysql_query("select * from menuler where  menu_aktif='1' LIMIT ".$basla.",".$limit."");

        while ($don=dizi($ust)){

        //bu kısımda menu yapısına göre alt menu varsa bir sorgu yoksa baska sorgu
            if($don["altmenu"] == 1){
            $ustid=$don['id'];
            echo '<li class="warning"><a href="#">'.$menu_adi=$don["menu_adi"].'</a>';
            $alt    =mysql_query("select * from altmenuler where ustid='$ustid'");
            echo '<ul class="secondary">';
            //burada kategoriye göre alt menuler dönecek
            while($s=dizi($alt)){
            echo '
            <li><a href="#">'.$s["altmenu_adi"].'</a></li>';
            }
            }else{
            echo '<li><a href="">'.$menu_adi=$don["menu_adi"].'</a>';

            }
        echo '</ul></li></li>';
        }

}

Üstteki kodda baslangıç ve limit de verdim isterseniz kullanabilir isterseniz silebilirsiniz.

Mysql tablo yapısı

`ustmenuler` (`id`, `menu_adi`, `menu_sira`, `menu_icerik`, `menu_aktif`, `altmenu`)

`altmenuler` (`altid`, `altmenu_adi`, `altmenu_icerik`, `altmenu_aktif`, `ustid`)

Simdi sınırsız kategori ve alt kategori mantıgının fonksiyonunu vereyim.

Bu Fonksyionumuz

function SinirsizKategoriListele($kategoriArray , $ebeveyn = 0  , $kademe_pixel = 5 ,  $i = 0  ,  $menuler = NULL , $nested = FALSE )
{

  // Sayfalar Boşşa boş döndür.
    if( empty($kategoriArray) ){
        return;
    }

    // Eğer fonksiyon içinden çağırılmıyorsa
    if( !$nested ){
        // Sayfaları ebeveyn idsi ile yeni dizi oluştur
        foreach($kategoriArray as $row):
            $items[$row['menu_altid']][]=$row;
        endforeach;
    }else{
        // Nested ise gelen sayfaları al
        $items=$kategoriArray;
    }

    // Gelen sayfaları aç
    foreach( $items[$ebeveyn] as $sayfa ){
        // Boşluk hesapla
        $bosluk=str_repeat(' ',($i * $kademe_pixel));

        // Menuleri değişkene aktar
        $menuler .= '<li><a href="#">'.$sayfa['menu_baslik'].'</a>'.PHP_EOL;

        // Açılan menude bir alt sayfa var ise nested çağır
        if(isset($items[$sayfa['menu_id']])){
            $menuler .= '<ul class="sub-menu">'.PHP_EOL;
            $menuler=SinirsizKategoriListele($items,$sayfa['menu_id'],$kademe_pixel,($i + 1),$menuler,TRUE);
            $menuler .= '</ul>'.PHP_EOL;
        }

        $menuler .= '</li>'.PHP_EOL;
    }

    // Oluşan menüleri return et
    return $menuler;
}

buda cagırma ve dondurme

<?php
            $sql_kategori=mysql_query("SELECT * FROM menuler order by menu_sira ASC");
            $kategori_list=array();
            $i=0;
            while($row_kategori=mysql_fetch_object($sql_kategori)){
                $kategori_list[$i]['menu_id']=$row_kategori->menu_id;
                $kategori_list[$i]['menu_baslik']=$row_kategori->menu_baslik;
                $kategori_list[$i]['menu_altid']=$row_kategori->menu_altid;
                $i++;

            }
                echo  SinirsizKategoriListele($kategori_list);
?>
Önceki Mailchimp Toplu Mail Servisi Kullanımı Ücretsiz
Sonraki Email Takip Sistemi Raporlama Yapılması

Yazar hakkında

keykubad
keykubad 205 Gönderiler

2012 yılında yeni kimliği ve yeni bilgilerle sizlere teknoloji,web programlama,tasarim,güvenlik,internet ve programlar hakkında detaylı bilgiler vermek amaçlı kurulmuş kişisel web sayfamdır.

Yazara ait tüm yazılar

Diğer yazılarımız

PHP ve MYSQL 4 Yorum

PHP CURL Multi Kullanımı ve Detayları Thread Yapımı

Merhaba arkadaslar bu dökümanımda sizlere curl’ün daha hızlı calışması yani bir işlemi birden fazla kaynak kullanarak yapmasını açıklayacağım. Öncelikle kullanacagımız curl komutlarını yazalım ve açıklayalım. curl_multi_init()                     :   Çok sayıda cURL

PHP ve MYSQL 0 Yorum

Linux Server Mysql Optimize Etmek

Linux mysql açısından çeşitli sorgular nedeniyle yavaşlama yaşayabilir özellikle wordpress gibi çok fazla sorguyla çalışan scriptler sunucuda yüklüyse bir süre sonra load değerleri tavan yapar.İşte size vereceğim bu yazılım sayesinde

PHP ve MYSQL 0 Yorum

Php İle iki tarih arası günleri sıralamak ve belirli bir günü sorgulamak

Merhaba bir projemde kullandığım ve çok işime yarayan basit olarak yazdığım bir fonksiyon ile iki tarih arasında kalan tüm günleri sıralama ve çıkan sonuclardan post ettiğiniz yada mysql’den çektiğiniz bir

0 Yorum

Herhangi bir yorum yapılmamış!

İlk yazan olabilirsin bu yazıyı yorumlamak istermisin?

Cevap bırakın

This site uses Akismet to reduce spam. Learn how your comment data is processed.