Sınırsız Kategori CSS Menü

Örneğin basit bir E-Ticaret uygulaması geliştirdiniz ve buna sınırsız kategori entegre etmek istiyorsunuz.

Örneğin basit bir E-Ticaret uygulaması geliştirdiniz ve buna sınırsız kategori entegre etmek istiyorsunuz. Bu makalede Recursive Fonksiyon kullanarak sınırsız kategoriyi CSS menü haline dönüştürecek gerekli kodlamayı yapacağız.

Sınırsız kategori için veritabanı yapımızın şu şekilde olması gerekiyor.


== kategoriler alanı ==

-- id  --      -- parent --        -- baslik --

1                   0                 Bilgisayar

2                   0                 Giyim

3                   0                 Otomobil-Aksesuar

4                   0                 Elektronik

5                   1                 Donanım

6                   1                 Yazılım

7                   2                 Spor Giyim

8                   4                 DivX Player

9                   6                 Anti-Virüs Yazılımları


Görüldüğü gibi yukarıda bir kategori veritabanı yapısı bulunmakta. parent olarak isimlendirdiğimiz üst kategorinin hangi kategori olduğunu belirlemekte. Değer eğer 0 (sıfır) ise ana kategoridir. parent alanının 1 olması 1 numaralı ID' nin alt kategorisi olduğu anlamına gelir. Örneğin Donanım ve Yazılım 1 nolu ID olan Bilgisayar kategorisinin bir alt kategorisidir. 9 numaralı ID ise yani Antivirüs Yazılımları kategorisi Yazılım kategorisine aittir.

Şimdi bu yapıya ait gerekli fonksiyonumuzu yazıyoruz.


<?php 

function sinirsiz_kategori($parent) {



    
$sql mysql_query("SELECT * FROM kategoriler ORDER BY id DESC");



    while(
$row mysql_fetch_array($sql)) {

         
$diziler[$row['id']] = array('baslik' => $row['baslik'],'parent' => $row['parent']);

    }



    
$has_childs false;



    foreach(
$diziler as $key => $value)  {

            if (
$value['parent'] == $parent) {       



                    if (
$has_childs === false){

                            
$has_childs true;

                            echo 
"t<ul>";

                    }



                    echo 
"<li><a href="".$value['baslik'].".html">".$value['baslik']."</a>";

                    
sinirsiz_kategori($key);

                    echo 
"</li>n";

            }

    }



    if (
$has_childs === true) echo "</ul>";



}



?> ?>



Kullanım:

=sinirsiz_kategori(0)?>


Burada öncelik olarak yaptığımız kategorileri diziye aktarıp daha sonrasında döngüye sokarak koşul belirtip bize gerekli olan
  • gibi CSS kodlarını uygun şekilde yazmak oldu.

    Dikkat ederseniz fonksiyon içinde aynı fonksiyonu kullanarak Recursive Fonksiyon uyguladık. Bu sayede kategorilerinizi artık istediğiniz CSS Menü şablonlarında daha renkli hale getirebileceksiniz.

    Derste detaylara girmeyerek sadece mantığı anlatmaya çalıştım.
    Tüm arkadaşlara başarılar dilerim...
  • Etiketler;
Abdullah Tekin
PHP, Ajax ve JQuery'e son derece hakim bir programcı olarak bazı firma ve kuruluşlara aşağıdaki konular dahilinde freelance olarak hizmet veriyor: - Daima web standartlarını, SEO (Arama Motoru Optimizasyonu) ve güvenlik önlemlerini içeren projeler gerçekleştirmek, - Tasarımı yapılmış web sitelerini kusursuz bir şekilde web'e uyarlamak, - Özgün ve kodları kendisi tarafından yazılabilen PHP+Jquery+Ajax destekli modüller hazırlamak - Web stratejileri oluşturulması, - Web dahilinde sistemler kurmak, - Kontrol panelleri hazırlamak, - Hızlı, kullanılabilir, erişilir ve güvenliği üst düzeyde olabilecek web siteleri alt yapısını oluşturmak. İçerik Yönetim Sistemi (CMS), Haber Sistemi, E-Ticaret ve Okul Yönetim projelerini içine alan PHP konusundaki birikimlerini burada Sanalkurs.net üyelerine aktarıyor ve aynı zamanda Sanalkurs'un yazılım altyapısını şu an en üst düzeye taşımak için gece gündüz kodlarla boğuşuyor.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Güzel ve çok gerekli bir kod örneği. Özellikle bu sınırsız menülerin nasıl işlediğini öğrenmek isteyenler için çok önemli bir bilgi.
Bu işlemi asp ile nasıl yapabiliriz acaba?
Teşekkürler hocam :kirp:
Abdullah abi yücel ben.. php de hemen hemen bütün dersleri okudum.. ancak bir siteye nasıl entegre edicem. onu çözemedim. menüyü oluşturdum ama tıklayınca ortabölümde nasıl açılıyor onu daha çözemedim.. Asp ile adım adım site yapımı var ancak php de yok.. Senden ricam bu konuyada bi el atman olacak.. Şimdiye kadar vermiş olduğun bütün bilgiler için sana tşk ederim. Php yi anlama çok katkın oldu.. çalışmalarında başarılar dilerim..:hayret:
valla bende kaç zamandır bunu açılır kananırından yapmaya çalışıyorum ama bi türlü salıklı çalıştıramadık.. bide farklı mantıklar kullanmışız. SQL tablosu aynı fakat kodlarda ben farklı bir yol izlemiştim.. Müsait olduğunda bunu açılır kapanır menülüsününü yaparsanız çok makbule geçer :D
tam aradığım yapı teşekkürler hozem elleriniz dert görmesin
dersin kaynağı: http://www.codeassembly.com/How-to-display-infinite-depth-expandable-categories-using-php-and-javascript/
benim bir sorunum var bu function olayi kodu sadece oldugu yere cikartiyor yani [code]Fuction() kodu Biraz yazi site ile ilgili farkli kodlar sinirsiz_kategori(0);[/code] boyle birsey yapinca menuler sinirsiz_kategori yerinde cikmiyorda function sayfanin neresine koyulmussa orada cikiyor soyleki benim bu fonksiyonun sonucunu string olarak almam gerekki her yere koyayim acaba bunla ilgili bilgisi olan varmi soyle birsey yaptim function (0) { //Kodlar vs. //echo yerine $menu . = //kullandim sonundada return($menu);} yaptim fakat alt kategoriler icin diger bir donguyu yapamiyor sadece bana ana kategorileri veriyor donguyu devam ettiremiyorum :S bir yardimci olun lutfn simdiden tesekkurler...
Sınırsız kategori ile ilgili o kadar araştırdım, tek çalışan bu paylaşım. Teşekkür ediyorum.

Yukarı Git