2011-04-07 5 views
3

while 루프를 사용하여이 메뉴를 생성하는 방법을 알아낼 수 없습니다.PHP 생성 UL LI, UL LI

paginas: 
    id 
    title 
    content 
    type 

이 때 유형 == 부모로부터 ID는 하위 메뉴해야한다 :

<ul id="nav"> 
<li><a href="#">Hoofdmenu 1</a> 
<ul class="sub"> 
     <li><a href="#">Submenu 1.1</a></li> 
     <li><a href="#">Submenu 1.2</a></li> 
     <li><a href="#">Submenu 1.3</a></li> 
     <li><a href="#">Submenu 1.4</a></li> 
    </ul> 
</li> 

<li><a href="#">Hoofdmenu 2</a> 
    <ul class="sub"> 
     <li><a href="#">Submenu 2.1</a></li> 
     <li><a href="#">Submenu 2.2</a></li> 
     <li><a href="#">Submenu 2.3</a></li> 
     <li><a href="#">Submenu 2.4</a></li> 
    </ul> 
</li> 
</ul> 

내 DBTABLE은 다음과 같습니다

내 코드의 예입니다. 이 예제에서이 예제가 작동합니다. 이제 동적으로 만들어야합니다. 뇌가 작동하지 않습니다.

도움 주셔서 감사합니다.

사용 된 코드는 DB에서 데이터를 얻을 수 있습니다 :

<ul id="nav"> 
<?php 
include_once("ond/inc/php/connect.php"); 
$query = "SELECT * FROM paginas WHERE type = '0'"; 
$result = mysql_query($query); 
while($row = mysql_fetch_object($result)){ 

echo '<li><a href="?ond='.$row->titel.'">'.$row->titel.'</a>';} 
echo '<ul class="sub">'; 

$query2 = "SELECT * FROM paginas WHERE type = '".$row->id."'"; 
$result2 = mysql_query($query2);  
while($row2 = mysql_fetch_object($result2)) 
{ 
    echo '<li><a href="?ond='.$row2->titel.'">'.$row2->titel.'</a></li>'; 
} 
echo '</ul>'; 
echo '</li>'; 

?> 
</ul> 
+2

뇌가 작동하지 않습니까? 너는 너의 자신의 농산물을 다시 소비하고 있니! :) 어쨌든, 오신 것을 환영합니다. 더 많은 정보가 필요합니다 : 어떤 데이터베이스 라이브러리를 사용하고 있습니까? 어떤 코드를 데이터베이스에 연결하고 레코드를 가져와야합니까? 그 코드를 게시하면 사람들이 어떻게하는지 알려줄 수 있습니다. 아직 아무것도 없다면 먼저 PHP 데이터베이스 프로그래밍 튜토리얼을 살펴보고 걸린 부분에 대해 질문하십시오. –

+3

어쨌든 나는 mysql 데이터베이스를 사용하고있다. 내 PHP는 괜찮아. 내 두뇌는 오늘 (알코올, marihuana) – Jordy

+1

@ Ganjafarmer 잘 작동하지 않습니다. 당신은 아직 아무것도 없다면, 당신은 기본적인 데이터베이스 튜토리얼을 시작해야합니다. [this one] (http://www.phpro.org/tutorials/Introduction-to-PHP-PDO.html). 구체적인 질문이 없으면 나는 "나의 코드를 적어 라"라는 사명과 목적이 아닌 여기에서 더 많은 것을 볼 수 없다. –

답변

1

다음 라인 솔루션을했던 당신의 필요에 따라 변경할 수 있습니다

<ul id="nav"> 
<?php 
include_once("ond/inc/php/connect.php"); 
$query = "SELECT * FROM paginas WHERE type = '0'"; 
$result = mysql_query($query); 
while($row = mysql_fetch_object($result)){ 

echo '<li><a href="?ond='.$row->titel.'">'.$row->titel.'</a>'; 

$query2 = "SELECT * FROM paginas WHERE type = '".$row->id."'"; 
$result2 = mysql_query($query2);  
echo '<ul class="sub">'; 
while($row2 = mysql_fetch_object($result2)) 
{ 
    echo '<li><a href="?ond='.$row2->titel.'">'.$row2->titel.'</a></li>'; 


} 
    echo '</ul>'; 
echo '</li>';} 



?> 
</ul> 
1

나는 같은 것을 할 것입니다 :

먼저, 각 항목에 대해 그것을 통해 배열 및 루프와 같은에서 데이터를 잡아. 이 사용되는 예제 PARENT_ID 열 및 UL-리 목록이 있습니다 references- 빌드에

?><ul id="nav"><?php 
foreach ($menuArray as $item) 
{ 
    ?><li><a href="#">$item['title']</a><?php 
    ?><ul class="sub"><?php 

    foreach ($item['subitems'] as $subItem) 
    { 
     <li><a href="#">$subItem</a></li> 
    } 

    ?></ul><?php 
    ?></li><?php 
} 
?></ul><?php 
0

: 메뉴를 만들기 위해 그것을 통해 다음

$menuArray = array(); 

if (empty($type)) // If the entry has no "type", then it's a parent 
{ 
    $menuArray[$type]['title'] = $title; 
} 
else // else, it's a child, so append it to the parent 
{ 
    $menuArray[$type]['subitems'][] = $title; 
} 

, $menuArray을 가진 루프 : 그럼 이런 식으로 뭔가를 실행 단 1 SQL 쿼리 및 출력을 렌더링 사용 recoursion을,이 코드는 단순히

 <?php 
/** 
    * Module for displaying data from items table 
    */ 
class App_Modules_Tree extends App_AbstractModule { 

    /** 
     * array for storing data 
     * 
     * @var array 
     */ 
    private $tree = array(); 
     /** 
     * html - output of current module 
     * 
     * @var string 
     */ 
     private $output = ''; 

     /** 
     * Retreives data from table items. 
     * 
     * @return void 
     */ 
     private function _getData() 
    { 
     $pdo = App_Registry::get('pdo'); 
     $levels = array(); 
     foreach ($pdo->query('SELECT * FROM items ORDER BY parent_id ASC',PDO::FETCH_OBJ) as $k=>$v){ 
        // references 
      $current = &$levels[ $v->id ] ; 
       $current['parent_id'] = $v->parent_id; 
       $current['name'] = $v->name; 
       if (0 == $v->parent_id){ 
       $this->tree[ $v->id ] = &$current; 
       } else { 
      $levels[$v->parent_id ]['children'][$v->id] = &$current; 
       } 
     } 
    } 

    /* 
    *App_AbstractModule::preRender overriding 
     * @return void 
    */ 
    protected function preRender() 
    { 
     $this->_getData(); 
     } 
     /** 
     * recursively build html output. 
     * 
     * @return string 
     */ 
    private function _render($arr) 
    { 
     $this->output.= '<ul>'; 
     foreach ($arr as $k=>$v) 
     { 
      $this->output.= '<li>'.$v['name'].'</li>'; 
      if(!empty($v['children'])){ 
       $this->_render($v['children']); 
      } 
     } 
     $this->output.= '</ul>'; 
     return $this->output; 
    } 
    /* 
    *App_AbstractModule::render overriding 
     * @return string 
    */ 
    protected function render() 
    { 
      return $this->_render($this->tree); 
    } 

}