2010-05-18 51 views
5

我需要顯示我的類別的樹狀視圖,保存在我的mysql數據庫中。如何從MySQL和PHP和jquery製作樹視圖

數據庫表:

:貓:

:ID,姓名,父 問題是在PHP部分:

//function to build tree menu from db table test1 
function tree_set($index) 
{ 
    global $menu; 
    $q=mysql_query("select * from cats where parent='$index'"); 
    if(!mysql_num_rows($q)) 
     return; 
    $menu .= '<ul>'."\n"; 
    while($arr=mysql_fetch_assoc($q)) 
    { 
     $menu .= '<li>'; 
     $menu .= '<span class="file">'.$arr['name'].'</span>';//you can add another output there 
     $menu .=tree_set("".$arr['id'].""); 
     $menu .= '</li>'."\n"; 
    } 

    $menu.= '</ul>'."\n"; 
return $menu; 

} 



//variable $menu must be defined before the function call 
$menu = ' 
<link rel="stylesheet" href="modules/Topics/includes/jquery.treeview.css" /> 
<script src="modules/Topics/includes/lib/jquery.cookie.js" type="text/javascript"></script> 
<script src="modules/Topics/includes/jquery.treeview.js" type="text/javascript"></script> 
<script type="text/javascript" src="modules/Topics/includes/demo/demo.js"></script> 
<ul id="browser" class="filetree">'."\n"; 
$menu .= tree_set(0); 
$menu .= '</ul>'; 
echo $menu; 

我甚至在這個論壇問: http://forums.tizag.com/showthread.php?p=60649

問題是在我的代碼,我提到的一部分的PHP。我不能顯示子菜單,我的意思是,我真的不知道如何顯示子菜單

有沒有任何機會的親PHP編碼器幫助我在這裏?

+1

什麼又是你的問題,意見?你只是粘貼了一些代碼,但並沒有說完全是你的問題......我希望你不希望我們下載你提到的腳本,*瞭解你的問題*,然後免費爲你工作...... – Seb 2010-05-18 13:37:18

回答

3

它看起來像你發送重複的數據到你的菜單變量,這不需要在那裏。

我會改變你的函數來做到這一點:

function tree_set($index) 
{ 
    //global $menu; Remove this. 
    $q=mysql_query("select * from cats where parent='$index'"); 
    if(mysql_num_rows($q) === 0) 
    { 
     return; 
    } 

    // User $tree instead of the $menu global as this way there shouldn't be any data duplication 
    $tree = $index > 0 ? '<ul>' : ''; // If we are on index 0 then we don't need the enclosing ul 
    while($arr=mysql_fetch_assoc($q)) 
    { 
     $subFileCount=mysql_query("select * from cats where parent='{$arr['id']}'"); 
     if(mysql_num_rows($subFileCount) > 0) 
     { 
      $class = 'folder'; 
     } 
     else 
     { 
      $class = 'file'; 
     } 

     $tree .= '<li>'; 
     $tree .= '<span class="'.$class.'">'.$arr['name'].'</span>'; 
     $tree .=tree_set("".$arr['id'].""); 
     $tree .= '</li>'."\n"; 
    } 
    $tree .= $index > 0 ? '</ul>' : ''; // If we are on index 0 then we don't need the enclosing ul 

    return $tree; 
} 

//variable $menu must be defined before the function call 
$menu = '....<ul id="browser" class="filetree">'."\n"; 
$menu .= tree_set(0); 
$menu .= '</ul>'; 
echo $menu; 

更新基於問題

+0

你能展示一個你正在生成的html的例子嗎? – Nalum 2010-05-18 14:43:53

+0

:D謝謝你的sloution是完全正確的,但目前的問題是,這個腳本將添加23個查詢到頁面的總查詢,只是concider我有10行在表中。如果某人有40行 那麼上帝保佑他!有沒有辦法解決這個問題!? – 2010-05-18 18:06:58

+0

您可以查詢表並獲取在數組中設置的所有行,然後遍歷數組以創建所需的html。 – Nalum 2010-05-18 19:22:30