我无法将所有子菜单项都显示在http://www.mattmaclennan.co.uk/a2的“新摩托车”部分中。例如,冒险应该有三个选择,而不是一个。这是我使用的代码。
<?
$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表:
bike types table http://www.mattmaclennan.co.uk/a2/images/bikeTypesTable.jpg
自行车桌:
bikes table http://www.mattmaclennan.co.uk/a2/images/bikesTable.jpg
最佳答案
尝试这个:
从bikeTypes左加入自行车中选择SELECT bikeTypes.id,bikeTypes.name,bikes.name,bikes.id
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的位置即可。
关于php - MySQL查询中只有一个选项未显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13208938/