我不知道我將如何使用PHP MySQL的&顯示我的分層數據創建我的類別和無盡的子類別分類任何子依種類?PHP和MySQL如何顯示從數據庫
我的PHP & MySQL的代碼應該怎麼看起來像將幫助了很多一個簡單的例子。
MySQL表類別結構
id parent_id category
1 0 a & w
2 0 b & f
3 1 c & sometimes y
4 1 d
我不知道我將如何使用PHP MySQL的&顯示我的分層數據創建我的類別和無盡的子類別分類任何子依種類?PHP和MySQL如何顯示從數據庫
我的PHP & MySQL的代碼應該怎麼看起來像將幫助了很多一個簡單的例子。
MySQL表類別結構
id parent_id category
1 0 a & w
2 0 b & f
3 1 c & sometimes y
4 1 d
當然,這是可能的。此代碼將呈現一個<ul> <li>
分層樹,無論層數的
<?php
//Connect to mysql server
$cn = mysql_pconnect("server", "username", "password");
mysql_select_db("database_name");
$rs = mysql_query("SELECT id, parent_id, category FROM categories", $cn);
$childrenTree = array(); //Will store an array of children for each parent
$categoryNames = array(); //Will store category name for each id
//We fill $childrenTree and $categoryNames from database
while($row = mysql_fetch_array($rs)){
list($id, $parent_id, $category) = $row;
$categoryNames[(string)$id] = $category;
$parent_id = (string)$parent_id;
if(!array_key_exists($parent_id, $childrenTree))
$childrenTree[$parent_id] = array();
$childrenTree[$parent_id][] = (string)$id;
}
//Main recursive function. I'll asume '0' id is the root node
function renderTree($parent = "0"){
global $categoryNames;
global $childrenTree;
if($parent != "0") echo "<li> ", $categoryNames[$parent], "\n";
$children = $childrenTree[$parent];
if(count($children) > 0){ //If node has children
echo "<ul>\n";
foreach($children as $child)
renderTree($child);
echo "</ul>\n";
}
if($parent != "0") echo "</li>\n";
}
renderTree(); //This renders the hierarchical tree
?>
爲您的例子產生的HTML將是:
<ul>
<li> a & w
<ul>
<li> c & sometimes y </li>
<li> d </li>
</ul>
</li>
<li> b & f </li>
</ul>
這將在這樣的瀏覽器渲染:
我再說一遍,這適用於任何級別的嵌套。 希望這有助於。
怎麼會來幫助我的人,我已經有我的表結構。 – html5 2011-04-29 05:04:16
MySQL沒有分層支持;檢查你的桌子,以確保你能得到你想要的東西。 – 2011-04-29 05:05:44
我一直在尋找如何使用PHP輸出代碼。 – html5 2011-04-29 05:07:16