php/mysql动态菜单
我有一个现有的下拉菜单,我正试图将其转换为PHP/MySQL,以允许客户端编辑菜单项。结构如下: Home index.phpphp/mysql动态菜单,php,mysql,drop-down-menu,Php,Mysql,Drop Down Menu,我有一个现有的下拉菜单,我正试图将其转换为PHP/MySQL,以允许客户端编辑菜单项。结构如下: Home index.php 关于我们-# -about.php -annualreport.php -awards.php 服务-# -services.php -loans.php 等等。我使用的查询是: select distinct mainlinks.id as daddyid, mainlinks.title as daddytitle, mainlinks.urlink as dadd
关于我们-#
-about.php
-annualreport.php
-awards.php
服务-#
-services.php
-loans.php
等等。我使用的查询是:
select distinct mainlinks.id as daddyid, mainlinks.title as daddytitle, mainlinks.urlink as daddyurl, babylinks.id as babyid, babylinks.title as babytitle, babylinks.urlink as babyurl from mainlinks, babylinks where mainlinks.id = babylinks.parentid order by mainlinks.listorder";
并显示结果,代码如下:
$result = mysql_query($query) or die(mysql_error());
// keep track of previous maincategory
$previous_maincategory = NULL;
while ($row = mysql_fetch_assoc($result))
{
// if maincategory has changed from previouscategory then display it
if ($previous_maincategory != $row['daddytitle'])
{
echo "<strong><h2>" . strtoupper($row['daddytitle']) . "</h2></strong>";
}
echo '<a onclick="return confirmSubmit()" class="inside" href="deletesubcategory.php?id=';
echo $row['babyid'];
echo '">';
echo $row['babytitle'];
echo "</a>";
echo "<br/>";
// record what the previous category was
$previous_maincategory = $row['daddytitle'];
}
$result=mysql\u query($query)或die(mysql\u error());
//跟踪以前的主要类别
$previous_maincegory=NULL;
while($row=mysql\u fetch\u assoc($result))
{
//如果maincategory已从以前的类别更改,则显示它
如果($previous_maincategory!=$row['daddytitle']))
{
echo“”.strtoupper($row['daddytitle'])。“”;
}
回声';
回声“
”;
//记录上一个类别是什么
$previous_maincategory=$row['daddytitle'];
}
它只显示具有子元素的项,而不显示没有子元素的父项。有什么想法吗?我猜问题在于查询where子句,但我不知道如何获取我需要的内容。谢谢。您必须使用
左联接
来获取没有子元素的项,试试看
select distinct mainlinks.id as daddyid, mainlinks.title as daddytitle, mainlinks.urlink as daddyurl, babylinks.id as babyid, babylinks.title as babytitle, babylinks.urlink as babyurl
from mainlinks
LEFT JOIN babylinks ON mainlinks.id = babylinks.parentid
order by mainlinks.listorder;
您的查询仅捕获mainlinks.id=babylinks.parentid中的项目
,这意味着它将忽略不存在该关系的项目
试试这个:
SELECT DISTINCT mainlinks.id as daddyid, mainlinks.title as daddytitle, mainlinks.urlink as daddyurl, babylinks.id as babyid, babylinks.title as babytitle, babylinks.urlink as babyurl FROM mainlinks LEFT JOIN babylinks ON mainlinks.id = babylinks.parentid ORDER BY mainlinks.listorder
使用左连接
将告诉您的查询,无论是否有婴儿链接,都要拉取所有主链接,但只拉取有父链接的婴儿链接。效果很好。谢谢大家。