将数据库提取到树中

时间:2014-01-21 15:13:17

标签: php mysql tree fetch

我有一个像这样的数据库用于餐馆自动化系统,我正在编码以获得php和mysql的经验。

productcat  |  productname  |  productdesc  |  price  |
-------------------------------------------------------
Drink       |  Coke         | Ice cold coke |  3
Drink       |  Sprite       |Ice cold sprite|  3
Food        |  Kebab        |Delicious kebab|  10
Food        |  Rice         | Delicious rice|  5

我想将它们提取到按类别划分的树中。

$data = mysql_query("SELECT * FROM $restadi") 
or die(mysql_error()); 

//urunler kategorilerinin altina yerlestiriliyor
echo '<div id="menu">';
echo '<ul>';
while($db = mysql_fetch_array( $data )) 
{ 
echo '<li class="kategori"><a href="#">'.$db['productcat'].'</a></li>';
echo '<ul class="urun"><li><a href="#">'.$db['productname'].'</a></li></ul>';
}
echo '</ul>';
echo '</div>'

很明显,这并不是我想要的方式。我怎样才能达到我想要的目标?

提前致谢并抱歉我的草率英语。

1 个答案:

答案 0 :(得分:1)

如果你不想在PHP中使用结果生成树,可以试试这个:

$data = mysql_query("SELECT * FROM $restadi ORDER BY productcat");

//urunler kategorilerinin altina yerlestiriliyor
echo '<div id="menu">';
echo '<ul>';
$lastCategory = "";
while($db = mysql_fetch_array( $data )) 
{ 

    if ($lastCategory != $db['productcat']) {
        // close opened ul of subitems (skip first false positive change of category)
        if (!empty($lastCategory)) {
            echo '</ul>';
        }
        echo '<li class="kategori"><a href="#">'.$db['productcat'].'</a></li><ul class="urun">';
        $lastCategory = $db['productcat'];
    }
    echo '<li><a href="#">'.$db['productname'].'</a></li>';
}
// if there was at least one product, close last product list
if (!empty($lastCategory)) {
   echo '</ul>';
}
echo '</ul>';
echo '</div>';