• Bu site çerezler kullanır. Bu siteyi kullanmaya devam ederek çerez kullanımımızı kabul etmiş olursunuz. Daha fazla bilgi edin.

Php li>ul yapısı ile açılır menü

Konuyu Okuyan Kişiler (0)

LadyArch3r

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
113
Beğeniler
0
#1
PHP:
// KATEGORİ FUNCTION 
                function sinirsiz_kategori($parent) 
                {	
                $sql = mysql_query("SELECT * FROM sayfalar where sayfa_durum='1' ORDER BY sayfa_id asc");	
                while($row = mysql_fetch_array($sql)) 
                { 
                $diziler[$row['sayfa_id']] = array('sayfa_adi' => $row['sayfa_adi'],'sayfa_ustid' => $row['sayfa_ustid'], 'sayfa_sefadi' => $row['sayfa_sefadi'], 'sayfa_id' => $row['sayfa_id']);	
                }	
                $has_childs = false;	
                foreach($diziler as $key => $value) 
                {	
                if ($value['sayfa_ustid'] == $parent) 
                { if ($has_childs === false)
                {	 $has_childs = true;	
                echo "\t<ul class='sf-menu'>";	 }	
                echo "<li class='current'><a href='$sayfa_url/ted/".$value['sayfa_sefadi']."-".$value['sayfa_id'].".html'>".$value['sayfa_adi']."</a>"; sinirsiz_kategori($key);	
                echo "</li>\n";	 }	}	
                if ($has_childs === true) 
                echo "</ul>";}
                // KATEGORI FUNCTION BITIMI

                sinirsiz_kategori(0)
Menüleri listeletirken ul ile başlıyor ben li ile başlatıp eğer var ise altına ul açtırmak istiyorum.

Kod yapım

PHP:
 <ul>
    
        <li><a href=""></a>
        
            <ul>
            
                <li><a href=""></a></li>
                <li><a href=""></a></li>
                <li><a href=""></a></li>
                <li><a href=""></a></li>
            
            </ul>
            
        
        </li>
        <li><a href=""></a></li>
        <li><a href=""></a></li>
    
    
    </ul>
Ben kodu ul 'un içinde çalıştıracağım.
 

NaMLu

webmaster.tc
Katılım
8 Ağu 2012
Mesajlar
171
Beğeniler
0
Konum
404 - Not Found
#2
http://www.webmaster.tc/php/php-ile-tek-sorguda-sinirsiz-alt-kategori-mantigi-754.html

Bu konuda bir tanesini editleyerek istediğine ulaşabilirsin. Hem de bu kadar sorguya gerek kalmadan :)

Ben bir editleme yaptım ama senin istediğine ne kadar yaklaştım bilemiyorum.

PHP:
 <?php  
/** 
 * Sınırsız kategori fonksiyonu 
 * 
 * @author Hakan KAYA
 * Emeğe saygı ... 
 */ 

header('Content-Type:Text/html; charset=utf8 '); 

// Dbden aldığınız menü veya sayfalar. 
$sayfalar = array( 
            array( 
                'id' =>1 ,  
                'menu' => 'Anasayfa', 
                'ebeveyn' => 0 
            ) 
            , 
            array( 
                'id' =>2 ,  
                'menu' => 'Hakkımızda', 
                'ebeveyn' => 0 
            ) 
            , 
            array( 
                'id' =>3 ,  
                'menu' => 'İletişim', 
                'ebeveyn' => 0 
            ) 
            , 
            array( 
                'id' =>4 ,  
                'menu' => 'Biz Kimiz', 
                'ebeveyn' => 2 
            ) 
            , 
            array( 
                'id' =>5 ,  
                'menu' => 'Misyonumuz', 
                'ebeveyn' => 4 
            ) 
            , 
            array( 
                'id' =>6 ,  
                'menu' => 'Vizyonumuz', 
                'ebeveyn' => 4 
            ) 
); 




// Fonksyionumuz 
function sayfa_nested($sayfalar , $ebeveyn = 0  , $kademe_pixel = 5 ,  $i = 0  ,  $menuler = NULL , $nested = FALSE ) 
{ 

   // Sayfalar Boşşa boş döndür. 
   if(empty($sayfalar)) 
        return; 
         
         
    // Eğer fonksiyon içinden çağırılmıyorsa 
    if (!$nested) 
    { 
        // Sayfaları ebeveyn idsi ile yeni dizi oluştur 
        foreach($sayfalar as $row): 
            $items[$row['ebeveyn']][] = $row; 
        endforeach; 
    } 
    else 
    { 
        // Nested ise gelen sayfaları al 
        $items  = $sayfalar; 
    } 

    // Gelen sayfaları aç 
    foreach($items[$ebeveyn] as $sayfa) 
    { 
        // Boşluk hesapla 
        $bosluk = str_repeat(' ',($i*$kademe_pixel)); 
         
        // Menuleri değişkene aktar 
        $menuler    .= '<li>'.$sayfa['id'].' - '.$sayfa['menu'].PHP_EOL; 
         
        // Açılan menude bir alt sayfa var ise nested çağır 
        if (isset($items[$sayfa['id']]))
        {
            $menuler .= '<ul>'.PHP_EOL; 
            $menuler = sayfa_nested($items , $sayfa['id']  , $kademe_pixel , ($i+1) , $menuler , TRUE); 
            $menuler .= '</ul>'.PHP_EOL; 
        }
        
        $menuler    .= '</li>'.PHP_EOL; 
    } 

    // Oluşan menüleri return et 
    return $menuler; 
} 


echo sayfa_nested($sayfalar);
Çıktı:

1 - Anasayfa
2 - Hakkımızda
  • 4 - Biz Kimiz
    • 5 - Misyonumuz
    • 6 - Vizyonumuz
3 - İletişim
 

LadyArch3r

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
113
Beğeniler
0
#5
http://www.webmaster.tc/php/php-ile-tek-sorguda-sinirsiz-alt-kategori-mantigi-754.html

Bu konuda bir tanesini editleyerek istediğine ulaşabilirsin. Hem de bu kadar sorguya gerek kalmadan :)

Ben bir editleme yaptım ama senin istediğine ne kadar yaklaştım bilemiyorum.

PHP:
 <?php  
/** 
 * Sınırsız kategori fonksiyonu 
 * 
 * @author Hakan KAYA
 * Emeğe saygı ... 
 */ 

header('Content-Type:Text/html; charset=utf8 '); 

// Dbden aldığınız menü veya sayfalar. 
$sayfalar = array( 
            array( 
                'id' =>1 ,  
                'menu' => 'Anasayfa', 
                'ebeveyn' => 0 
            ) 
            , 
            array( 
                'id' =>2 ,  
                'menu' => 'Hakkımızda', 
                'ebeveyn' => 0 
            ) 
            , 
            array( 
                'id' =>3 ,  
                'menu' => 'İletişim', 
                'ebeveyn' => 0 
            ) 
            , 
            array( 
                'id' =>4 ,  
                'menu' => 'Biz Kimiz', 
                'ebeveyn' => 2 
            ) 
            , 
            array( 
                'id' =>5 ,  
                'menu' => 'Misyonumuz', 
                'ebeveyn' => 4 
            ) 
            , 
            array( 
                'id' =>6 ,  
                'menu' => 'Vizyonumuz', 
                'ebeveyn' => 4 
            ) 
); 




// Fonksyionumuz 
function sayfa_nested($sayfalar , $ebeveyn = 0  , $kademe_pixel = 5 ,  $i = 0  ,  $menuler = NULL , $nested = FALSE ) 
{ 

   // Sayfalar Boşşa boş döndür. 
   if(empty($sayfalar)) 
        return; 
         
         
    // Eğer fonksiyon içinden çağırılmıyorsa 
    if (!$nested) 
    { 
        // Sayfaları ebeveyn idsi ile yeni dizi oluştur 
        foreach($sayfalar as $row): 
            $items[$row['ebeveyn']][] = $row; 
        endforeach; 
    } 
    else 
    { 
        // Nested ise gelen sayfaları al 
        $items  = $sayfalar; 
    } 

    // Gelen sayfaları aç 
    foreach($items[$ebeveyn] as $sayfa) 
    { 
        // Boşluk hesapla 
        $bosluk = str_repeat(' ',($i*$kademe_pixel)); 
         
        // Menuleri değişkene aktar 
        $menuler    .= '<li>'.$sayfa['id'].' - '.$sayfa['menu'].PHP_EOL; 
         
        // Açılan menude bir alt sayfa var ise nested çağır 
        if (isset($items[$sayfa['id']]))
        {
            $menuler .= '<ul>'.PHP_EOL; 
            $menuler = sayfa_nested($items , $sayfa['id']  , $kademe_pixel , ($i+1) , $menuler , TRUE); 
            $menuler .= '</ul>'.PHP_EOL; 
        }
        
        $menuler    .= '</li>'.PHP_EOL; 
    } 

    // Oluşan menüleri return et 
    return $menuler; 
} 


echo sayfa_nested($sayfalar);
Çıktı:

1 - Anasayfa
2 - Hakkımızda
  • 4 - Biz Kimiz
    • 5 - Misyonumuz
    • 6 - Vizyonumuz
3 - İletişim
İstediğimi karşılıyor ama direk veritabanından çekilmiş sade hali yokmudur buda ilginç olmuş.
 

LadyArch3r

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
113
Beğeniler
0
#8