v2.5.2
Giriş yap

Php Sınırsız Kategori Menü Düzeni

aydinkeskin
1,572 defa görüntülendi

arkadaşlar sadece bir tane olay ı çözemedim bir türlü

<?php
					$result = $db->query("select * from menu",PDO::FETCH_ASSOC)->fetchAll(); 
					 
					//iki boyutlu kategori ve üst kategori dizisini tanımla
					$category = array(
						'categories' => array(),
						'parent_cats' => array()
					);
					 
			 
					foreach($result as $row){
						$category['categories'][$row['id']] = $row;
						$category['parent_cats'][$row['ustid']][] = $row['id'];
					}
					echo buildCategory(0, $category);
?>

burda header.php de kullanıyorum.

<?php
function buildCategory($parent, $category) {
    $html = "";
    if (isset($category['parent_cats'][$parent])) { 
        foreach ($category['parent_cats'][$parent] as $cat_id) {
            if (!isset($category['parent_cats'][$cat_id])) {
 				$html .= "<li><a href=". $category['categories'][$cat_id]['link'].">".$category['categories'][$cat_id]['menu']." </a></li>n";
            }
            if (isset($category['parent_cats'][$cat_id])) {
			//	if (  $category['categories'][$cat_id]['ustid'] > 0 ) { 
					$html .= "<li><a href=". $category['categories'][$cat_id]['link'].">".$category['categories'][$cat_id]['menu']." <span class='fa fa-caret-down m-0'></span></a>n <ul class='sub-menu'>n";
				}else{
					$html .= "<li><a href=". $category['categories'][$cat_id]['link'].">".$category['categories'][$cat_id]['menu']." <i class='fa fa-angle-right float-right mt-1 d-none d-lg-block'></i></a>n <ul class='sub-menu'>n";

				}
               
			   $html .= buildCategory($cat_id, $category);
                $html .= "</ul></li> n";
            }
        } 
    }
    return $html;
}

?>

buda fonksiyon tarafı // ile işaretlediğim sorgu ya ne yazmam gerekiyor da
ona göre ilk menü fa-down çocuklarında çocuk varsa fa-arrow-right gelsin.

deli etti iyice çıkamadım işin içinden

id si varsa üstid ye eşit mi
vb türevlerini bir farklı şekilde denedim fakat bir türlü ordaki koşulu düzenleyemedim.

sql yapısı

id ustid menu link

Cevap yaz
Cevaplar (9)
aydinkeskin
1413 gün önce

soru sorarken yazdım ya :)

<?php
					$result = $db->query("select * from menu",PDO::FETCH_ASSOC)->fetchAll(); 
					 
					//iki boyutlu kategori ve üst kategori dizisini tanımla
					$category = array(
						'categories' => array(),
						'parent_cats' => array()
					);
					 
			 
					foreach($result as $row){
						$category['categories'][$row['id']] = $row;
						$category['parent_cats'][$row['ustid']][] = $row['id'];
					}
					echo buildCategory(0, $category);
?>
PHP
burda header.php de kullanıyorum.

<?php
function buildCategory($parent, $category) {
    $html = "";
    if (isset($category['parent_cats'][$parent])) { 
        foreach ($category['parent_cats'][$parent] as $cat_id) {
            if (!isset($category['parent_cats'][$cat_id])) {
 				$html .= "<li><a href=". $category['categories'][$cat_id]['link'].">".$category['categories'][$cat_id]['menu']." </a></li>n";
            }
            if (isset($category['parent_cats'][$cat_id])) {
			//	if (  $category['categories'][$cat_id]['ustid'] > 0 ) { 
					$html .= "<li><a href=". $category['categories'][$cat_id]['link'].">".$category['categories'][$cat_id]['menu']." <span class='fa fa-caret-down m-0'></span></a>n <ul class='sub-menu'>n";
				}else{
					$html .= "<li><a href=". $category['categories'][$cat_id]['link'].">".$category['categories'][$cat_id]['menu']." <i class='fa fa-angle-right float-right mt-1 d-none d-lg-block'></i></a>n <ul class='sub-menu'>n";

				}
               
			   $html .= buildCategory($cat_id, $category);
                $html .= "</ul></li> n";
            }
        } 
    }
    return $html;
}

?>

qplot
1414 gün önce

sql kodunu benmı goremıyorum :)

sımdı tek tek sql kodumu yazayım

aydinkeskin
1414 gün önce

yukarda paylaştım ya :)

qplot
1415 gün önce

sql kodlarınıda paylas deneyeyım

aydinkeskin
1415 gün önce

:)

@qplot benim sorunum kategori listelenmesi veya herhangi bir hata olması değil

kategoriler felan zaten düzgün istediğim gibi listeleniyor.

sadece listelenirken alt kategorinin alt kategorisi

hizmet kullanması gereken icon fa fa down
--alt kategori kullanması gereken icon fa fa right
------alt kategori alt varsa kullanması gereken icon fa fa right

burda "hizmet deki icoda sorun yok
alt kategornin alt kategorisi yoksa ondada icon çıkmıyor güzel
ama lat kategorinin alt kategorisi varsa fa fa right çıkmıyor.
down olan çıkıyor :)

oldum olası sevmem bu sınırsız kategori işini son kullanıcı kullanmasını genelde beceremez zaten :)

qplot
1415 gün önce
m100
1415 gün önce

print r ile array yapını atabilir misin bi yardımcı olabileceğimi düşünüyorum.

aydinkeskin
1416 gün önce

onlarıda denedim kardeşim çözmedi işimi malesef.

m100
1416 gün önce

burada yanlış görmediysem iç içe array yapısı kullanıyorsun istersen şöyle yapabilirsin

Count($arrayismi);

bu fonksiyon array içindeki indexlerin sayısını gösterir if kontrolünde 0 dan büyükse yaparsan halledebiliceğini düşünüyorum