【问题标题】:php/mysql dynamic menuphp/mysql 动态菜单
【发布时间】:2014-03-26 00:25:41
【问题描述】:

我有一个现有的下拉菜单,我正在尝试将其转换为 PHP/MySQL 以允许客户端编辑菜单项。这是结构:

首页-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'];
}

它只显示具有子元素的项目,而不显示没有子元素的父项目。有任何想法吗?我猜问题出在查询 where 子句上,但我不知道如何获取我需要的东西。谢谢。

【问题讨论】:

    标签: php mysql drop-down-menu


    【解决方案1】:

    你必须使用LEFT JOIN来获取没有孩子的物品,试试

    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;
    

    【讨论】:

      【解决方案2】:

      您的查询仅抓取项目where 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
      

      使用LEFT JOIN 将告诉您的查询拉取所有主链接,无论它们是否有子链接,但只拉取有父链接的子链接。

      【讨论】:

      • 完美运行。谢谢大家。
      猜你喜欢
      • 1970-01-01
      • 2012-01-20
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      • 2019-07-10
      • 2013-06-27
      • 2017-09-24
      • 2015-06-30
      相关资源
      最近更新 更多