Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php/mysql动态菜单_Php_Mysql_Drop Down Menu - Fatal编程技术网

php/mysql动态菜单

php/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

我有一个现有的下拉菜单,我正试图将其转换为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 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

使用
左连接
将告诉您的查询,无论是否有婴儿链接,都要拉取所有主链接,但只拉取有父链接的婴儿链接。

效果很好。谢谢大家。