0

我无法在http://www.mattmaclennan.co.uk/a2的“新摩托车”部分显示所有子菜单项。例如,Adventure 应该有三个选项,而不是一个。这是我使用的代码。

<?
$output = mysqli_query("SELECT * FROM bikes, bikeTypes WHERE bikes.model_id = bikeTypes.model_id GROUP BY bikeTypes.model_id");
while($row = mysqli_fetch_array($output))
 {
   echo "<li><a href='test.php?id=" . $row['model_id'] . "'>".$row['model'].'</a><ul>';
   echo "<li><a href='details.php?id=" . $row['bike_id'] . "'>" . $row['bikeName'] . "</a></li>";
   echo '</ul>';   
   echo '</li>';
 }
//var_dump($result);
?>

有什么想法吗?谢谢!

编辑:这是来自 phpMyAdmin 的两个表的结构:

bikeTypes 表: 自行车类型表 http://www.mattmaclennan.co.uk/a2/images/bikeTypesTable.jpg

自行车桌: 自行车桌 http://www.mattmaclennan.co.uk/a2/images/bikesTable.jpg

4

1 回答 1

2

试试这个:

SELECT bikeTypes.id,bikeTypes.name,bikes.name,bikes.id FROM bikeTypes LEFT JOIN bikes ON bikes.model_id = bikeTypes.model_id

如果你看到我写的查询中有一个。你在做什么被数据库引擎LEFT JOIN视为一个。INNER JOIN

但你需要的是

 $output = mysqli_query("SELECT * FROM bikeTypes");
    while($row = mysqli_fetch_array($output))
     {

       echo "<li><a href='test.php?id=" . $row['model_id'] . "'>".$row['model'].'</a><ul>';
       $subcat = mysqli_query("SELECT * FROM bikes WHERE model_id = $row['model_id']");

       while($rowSub = mysqli_fetch_array($subcat)){    
       echo "<li><a href='details.php?id=" . $rowSub['bike_id'] . "'>" . $rowSub['bikeName'] . "</a></li>";
       }
       echo '</ul>';   
       echo '</li>';

 }

看看你想在哪里关闭 ul 和 li。

于 2012-11-03T12:07:41.107 回答