php kategorileme Mantığı [YARDIM].
merhaba Arkadaşlar ,
php kategorileme sisitemi yapamya çalışıyorum yönetim panelini halletim fakat verileri sayfaya çekerken problem yaşıyorum..
ezsql sınıfı
Görmüş olduğunuz gibi kodum yukarıda
Kategori Tablom =
id - kategori_adi - ust_parrent -sira -durum -seo - sayfa
Veriyi Çekerken Sirasini ASC Olarak çekmesi gerekiyor üst parrenti 0 olanlar birde durumu 1 olanları çekmesi gerekiyor 3 tane koşul fakat olmadı.. ve alt kategori mantını anlamadım bununla ilgili bilgilendirirseniz sevinirim
Php
konu no suna katagori id sini yazdır cekerkende konu nosuna göre cek
örnek katagori id 5
konu no 5
katagorileri cektiginde konu nosu 5 olanları
listelersin kolay gelsin
Php
Teşekkür ederim fakat sanırım anlatmak istediğimi anlamaıdnız
Alt kategori ve üst kategori aynı tabloda
id - kategori_adi - ust_parrent -sira -durum -seo - sayfa
ust_parrent = 0 olunca normal kategori
ust_parrent = altına girceği kateogrinin id alınca alt kategori oluyor
ust_parrent 0 olanları çekmesse alt ketegori normal kategori olarak görünüyor
------2
sira = sira elle giriliyor yönetim panelinde 1,2,3,4,5,6 diye bunu ASC olarak çekmessem ANASAYFA HAKKIMDA REFERANSLAR VS karışık olarak geliyor
3--- durum = 1 olunca menu görünecek 0 olunca görünmeyecek gözükmesini istemediğim menülerde görünecek
4 - Sayfa no ile nasıl bir bağlantı kura bilirim anlmadım sadece tıklantığında sayfa.php?sayfa_id= sayfanın id alacak
Php
örnek
konular.php
$bilgi= mysql_query("SELECT * FROM katagori WHERE id'$id'");
while($karagori_cek= mysql_fetch_array($bilgi))
{
$konuno=$karagori_cek[id];
$k_bilgi= mysql_query("SELECT * FROM konular ORDER BY konuno'$konuno' ASC");
while($konu_cek= mysql_fetch_array($k_bilgi))
{
echo $konu_cek[konubaslik];
} }
Php
iç içe iki döngü ile MYSQL çağırmak hızı düşürür. onun yerine SQL JOIN kullanınız.
Php
$tum_kategoriler =array();
$MenuSorgu = $db -> get_results("SELECT * FROM kategoriler");
foreach($MenuSorgu as $Katman){
$tum_kategoriler[$Katman->id]['id'] = $Katman->id;
$tum_kategoriler[$Katman->id]['kategori_adi'] = $Katman->kategori_adi;
$tum_kategoriler[$Katman->id]['ust_parrent'] = $Katman->ust_parrent;
}
function KategoriBul($kategoriler){
$dizi=array();
foreach($kategoriler as $kategori){
if($kategori['ust_parrent'] == 0)$dizi[] =$kategori;
}
return $dizi;
}
function altKategorileriBul($ustKat,$kategoriler,$tekrar = 2)
{
// Bir dizi oluşturuyoruz.
$dizi = array();
// Tüm kategorileri döngüye sokuyoruz.
foreach($kategoriler as $kategori)
{
// Belirtilen kategorilerin alt kategorilerini alıyoruz ve diziye ekliyoruz.
if($kategori['ust_parrent'] == $ustKat)
{
$dizi[] = $kategori;
}
}
if(count($dizi) > 0)
{
foreach($dizi as $kat)
{
?>
<?php
echo ''.str_repeat(' ',$tekrar).' '.$kat['kategori_adi'].'';
altKategorileriBul($kat['id'],$kategoriler,$tekrar+3);
}
}
}
$anaKategoriler = KategoriBul($tum_kategoriler);
örnek bir kod buldum biraz oynadım işimi gördü fakat durumu 0 olan veriyi çekmeme ve siralamayi ekliyemedim
Php
bu tablonun biri sanırım:
id - kategori_adi - ust_parrent -sira -durum -seo - sayfa
kategori tablosunu da yazarsan SQL kodunu vereyim.
Php
alt kategorilerde Aynı Tabloda Alt kategoriyi Altına girceği Kategorinin id alıyor buda ust_parrent kayıt oluyor
Örnek
id - kategori_adi - ust_parrent -sira -durum -seo - sayfa
1 HAKKIMDA 0 1 1 hakkimdasayfasi
2 Biyografi 1 1 1 biyografisayfasi
fakat ikinci bir tablo olşturmam gerekiyorsa oluştura bilirim
Yeni farkettim 3 level Kategori Açamıyorum
1
111111
11111111111
Olmuyor Vaktiniz varsa işimi görecek bir php kodu paylaşabilirseniz sevinirim
Php
kategori isimli bir tablo oluşturursan daha pratik olur. Özellikle ağaç yapısında kategori yapacaksan en pratik yolu budur.
makale tablosunda da INT bir alan açıp içine kategori_no olarak ekleme yaparsın.
--kategori--
ID - ismi - orderi - parrent