根据类别列出子类 - 从mysql中提取

时间:2013-10-24 14:27:36

标签: php mysql

我按类别和子类别分隔了产品。 使用查询和while循环,我能够正确地回显列表中的所有类别。

$query = mysql_query("SELECT * FROM category WHERE `enabled`='1'");

while ($query_row = mysql_fetch_assoc($query)) {
echo '$query_row[catname]';
}

我想要完成的是在各自的类别名称下列出子类别名称:

$query = mysql_query("SELECT * FROM category WHERE `enabled`='1'");

while ($query_row = mysql_fetch_assoc($query)) {
echo '<h1>'.$query_row["catname"].'</h1>';

     $sql = mysql_query("SELECT * FROM subcategory WHERE `catid`='$query_row[catid]'");

     while ($row = mysql_fetch_assoc($sql)) {
     echo '$row["subcatname"]';
     }
}

我得到的是每个类别的列表(很棒) - 但在其下面是每个子类别的列表。我只需要与他们自己的类别一起的子类别。我应该在某个地方使用for循环吗?什么是最好的解决方案?

最终结果应为:

CARS
mazda
chevy
toyota

BIKES
yamaha
harley
suzuki
honda

BATTERIES
duracel
energizer

现在就是这样。我得到了

CARS
mazda
chevy
toyota
yamaha
harley
suzuki
honda
duracel
energizer

BIKES
mazda
chevy
toyota
yamaha
harley
suzuki
honda
duracel
energizer

BATTERIES
mazda
chevy
toyota
yamaha
harley
suzuki
honda
duracel
energizer

2 个答案:

答案 0 :(得分:0)

尝试更改

$sql = mysql_query("SELECT * FROM subcategory WHERE catid='$query_row[catid]'");

$sql = mysql_query("SELECT * FROM subcategory WHERE catid='" . $query_row["catid"] . "'");

答案 1 :(得分:0)

$query = mysql_query("SELECT * FROM category WHERE `enabled`='1'");

while ($query_row = mysql_fetch_assoc($query)) {
echo '<h1>'.$query_row["catname"].'</h1>';

     $sql1 = mysql_query("SELECT catid FROM subcategory WHERE `catname`='$query_row[catname]'");
     while($row1 = mysql_fetch_assoc($sql1)){

     $sql = mysql_query("SELECT * FROM subcategory WHERE `catid`='row1[catid]'");

     while ($row = mysql_fetch_assoc($sql)) {
     echo '$row["subcatname"]';
     }
     }
     } 

尝试这个。