Php ile Sonsuz Kategori Uygulaması

Programlama ile uğraşanlar bilirler, bu işe yeni başladığınız sıralarda ilk önce normal yolla kategorilendirme yaparsınız. Sonrasında alt kategorilere de ihtiyaç duyarsınız. Hatta daha da gelişmeye devam edince sınısız, sonsuz kategori veya menü uygulamaları yapmak isterseniz. İşte tam burada genelde çok sıkıntılar yaşanıyor. Sizler için hazırlanan sorununuza çözüm olacak kodları paylaşmaya karar verdik. Artık kolayca sonsuz menü veya sınırsız menü veya alt kategori uygulamaları yazabilirsiniz.

Örnek olarak bir kategori sistemi;

  • menü
    • ilk menü
      • ikinci ilk menü
  • menücük
    • ilk menü
  • menütik
    • ilk menü tik

Yukarıdaki gibi menüleri oluşturabileceğiz artık kodlarımızla. İşte kodlarımız…
SQL Kodlarımız, yani menülerin veya kategorilerin olduğu tablomuz.

CREATE TABLE IF NOT EXISTS `kategoriler` (
  `kategori_no` INT(11) NOT NULL AUTO_INCREMENT,
  `kategori_adi` VARCHAR(500) NOT NULL,
  `kategori_url` VARCHAR(500) NOT NULL,
  `kategori_alt` VARCHAR(500) NOT NULL,
  `kategori_aciklama` text NOT NULL,
  `kategori_resim` VARCHAR(500) NOT NULL,
  PRIMARY KEY (`kategori_no`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;
 
--
-- Tablo döküm verisi `kategoriler`
--
 
INSERT INTO `kategoriler` (`kategori_no`, `kategori_adi`, `kategori_url`, `kategori_alt`, `kategori_aciklama`, `kategori_resim`) VALUES
(1, 'İLK KAT', '', '', '', ''),
(2, 'İLKİN ALTI', '', '1', '', ''),
(3, 'İLKİN ALTI2', '', '1', '', ''),
(4, 'ALTIN ALTI 1', '', '2', '', ''),
(5, 'ALTIN ALTI 2', '', '2', '', ''),
(6, 'DENEME 1', 'dddddd', '', 'dddddddddddddddd', 'ddddddddddd'),
(7, 'DENEME 2', '', '', '', ''),
(8, 'ZENEME', '', '', '', ''),
(9, 'ALTIN ALTI 3', '', '2', '', '');

Fonksiyonumuz

function kategori_listele($parent){
$toplamveri = NULL;
$has_childs = false;
//this prevents printing 'ul' if we don't have subcategories for this category
global $menu_array_kategori_a;
//use global array variable instead of a local variable to lower stack memory requierment
foreach($menu_array_kategori_a as $key => $value)
{
if ($value['kategori_alt'] == $parent)
{
//if this is the first child print '<ul>'
if ($has_childs === false)
{
//don't print '<ul>' multiple times
$has_childs = true;
$toplamveri .= '<ul>';
}
$toplamveri .= '<li>' . $value['kategori_adi'] . '<div><a href="/yonetim/index.php?yonet=kategoriler&form=duzenle&no='.$key.'">DÜZENLE</a> <a href="/yonetim/index.php?yonet=kategoriler&islem=sil&no='.$key.'">SİL</a></div>';
$toplamveri .= kategori_listele($key);
//call function again to generate nested list for subcategories belonging to this category
$toplamveri .= '</li>';
}
}
if ($has_childs === true){ $toplamveri .= '</ul>';}
 
return $toplamveri;
}

Fonksiyonumuzun kullanım şekli

$query = mysql_query('SELECT * FROM kategoriler');
 
while ($row = mysql_fetch_assoc($query) ){
	$menu_array_kategori_a[$row['kategori_no']] = array(
	'kategori_adi' => $row['kategori_adi'],
	'kategori_alt' => $row['kategori_alt']
	);
}
 
echo '<div id="yonetim_kategori_listele">'.kategori_listele(0).'
<div class="temizle"></div>
</div>';

Kodlarımız bu şekilde olup sonsuz menümüz emrinize amadedir.

KategorilerPhp

“Php ile Sonsuz Kategori Uygulaması” için 2 cevap

  1. Mrb ben dreamweaverle bir kategorileme işlemi yaptım. Panelde bir sıkıntım yok yalnız sayfaya çekerken sorunum oldu.

    3 Tablom var.

    1 kategoriler
    1-1 kat_id
    1-2 kat_adi_tr
    1-3 kat_adi_en

    2 urunler
    2-1 urun_id
    2-2 urun_adi_tr
    2-3 urun_adi_en
    2-4 urun_kat (kategoriyi çekiyorum)
    2-5 aciklama_tr
    2-6 aciklama_en
    2-7 keywords_tr
    2-8 keywords_en

    3 resimler
    3-1 res_id
    3-2 resim_adi_tr
    3-3 resim_adi_en
    3-4 resim
    3-5 res_urun (ürünleri çekiyorum)

    sayfada şu şekilde sorunum var..

    [code]

    <?php
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
    {
    if (PHP_VERSION

    <a href="upload/” class=”group1″ title=””><img src="upload/” width=”173″ height=”130″ />

    Categories

    <a href="products.php?kat_id=”>

    resmi urunler tablosundan, urunleride kategori tablosundan çekiyorum.

    Bir yerde yaptığım bir hata var sezemedim. yardımcı olur musunuz?

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir