PHP

PHP Sınırsız Kategori Oluşturma

Kategori alt kategori ağacı görünümü, üst ve alt kategorileri listelemek için kullanıcı dostu bir yol sağlar. Kategori ve alt kategorileri bir ağaç yapısıyla kolayca ayrılır. Kategoriler ağacı görünümünün her zaman sonsuz düzeyde kategori ve alt kategori görüntülemesi önerilir.

Bu eğitimde, PHP ve MySQL kullanarak dinamik kategori alt kategori ağacının nasıl oluşturulacağını göstereceğiz. Özyinelemeli kategori ağacı, bir açılan menüde n düzey kategorilerini listelemek için çok kullanışlıdır. Örnek kod, PHP’de n düzeyinde kategori alt kategori açılır listesi oluşturmanıza yardımcı olur. Dinamik kategori verileri MySQL veritabanından alınır ve bir üst-alt kategori ağacı biçiminde listelenir.

MySQL Tablosu Oluşturma

Önce MySQL veritabanında bir kategori tablosu oluşturun, çünkü veritabanı tablosundan çok düzeyli iç içe kategori oluşturmak istiyoruz.

Kategori tablosunun yapısını nasıl yarattığımıza dikkat edin. Bu kategori tablosunda, bu alt öğe için üst kategoriyi tanımlayan üst kategori kimliği bulunur.

Bu üst kategori kimliği için 0 dışında bir değer yoksa, bu kategorinin en üst düzey kategori olduğunu varsayacağız.

Tabloda aşağıdaki beş sütun var
category_id – otomatik artırılmış pozitif int değeri, birincil anahtar da
category_name – görüntülenebilir kategorinin adı veya düzeyi, benzersiz anahtar
category_link – bu kategori için url
parent_id – bu kategorinin ebeveynidir. Kök kategorisi için parent_id 0’dır.
sort_order – sıra numarası

Test Verileri

Yukarıdaki tabloyu oluşturduk, şimdi tamamlanmış uygulamayı test etmek için içine bazı verilere ihtiyacımız var. Hadi içine biraz veri koyalım:

Tablodan Veri Alma

Şimdi aşağıdaki sorguyu kullanarak sonucu getirin. PHP kullanarak sonsuz çok düzeyli iç içe kategorimizi oluşturmak için category_id, category_name, category_link, parent_id ve sort_order sütunlarını getiriyoruz.

DB Bağlantısı

Veritabanı bağlantısını oluşturmak için db_config.php adında bir dosya oluşturup bağlantısı ifadelerini yazıyoruz.

 

Ebeveyn-Çocuk Hiyerarşisi Oluşturma

Aşağıdaki mantık, sonuçları kategori tablosundan alır ve sonuçları çok boyutlu bir diziye koyar.

$category dizisi diğer iki diziyi içerir, kategoriler kategori tablosu sorgusundan her sonucu tutar ve parent_cats dizisi alt öğeleri olan tüm kategori kimliklerinin bir listesini tutar.

Sonra sql sonuçlarını çalıştırmak ve dizilere satır atamak için while deyimini kullanıyoruz.

parent_cats dizisinde satır üst kimliği zaten varsa, listelenen her üst kimliğin yalnızca biri olacak şekilde üzerine yazılır.

Şimdi sonsuz çok düzeyli iç içe kategori için nihai sonuçları görüntüleyecek kategori ve alt kategori işlevini oluşturun.

Aşağıdaki işlevde, ana kategori kimliğinin 0 değerine sahip olduğunu ve üst düzey kategori olduğunu ve diğer tüm kategorilerin bu ana kategorinin altına girdiğini varsayıyoruz.

Burada sonsuz çok seviyeli iç içe kategori oluşturmak için özyinelemeli işlevi kullanıyoruz. Mantık, herhangi bir alt kategori olup olmadığını kontrol eder, sonra işlevi özyinelemeli olarak çağırır, aksi takdirde üst öğenin altına kategoriyi yazabilir veya üst kategori olarak yazabilirsiniz.

Yukarıdaki işlevle işiniz bittiğinde, yukarıdaki işlevi kullanmak istersiniz. Bu nedenle, sonsuz çok düzeyli kategoriyi görüntülemek istediğiniz yerde (çoğunlukla menü alanında) aşağıdaki kodu kullanın.

Kullanım Ayrıntısı

Aşağıdaki örneği kullanarak sonucu görüntüleyin:

 

Ekran Çıktısı:

PHP Sonsuz Menü Oluşturma

 

 

4 Yorum

Yorum yapmak için tıklayın

  • Merhaba sayfada paylaştığınız gibi yaptım, içeriğini değiştirdim. Fakat mysql hatası alıyorum.

    $result = mysqli_query(“SELECT bu satırda ve
    while ($row = $result->fetch_array(MYSQLI_ASSOC)) { bu satırlarda

    çalışan örnek dosya paylaşmanız mümkün müdür acaba?

    • $result = mysqli_query(buraya sql bağlatısı vereceksin,“SELECT bu satırda ve
      while ($row = $result->fetch_array(MYSQLI_ASSOC)) {

      Doğru şekli:
      $result = mysqli_query($sql, “SELECT bu satırda ve
      while ($row = $result->fetch_array(MYSQLI_ASSOC)) {

  • array(),
    ‘parent_cats’ => array()
    );

    //kategori tablosundan diziyi oluştur.
    while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
    $category[‘categories’][$row[‘category_id’]] = $row;
    $category[‘parent_cats’][$row[‘parent_id’]][] = $row[‘category_id’];
    }

    bunu dene