php - 使用 php 使用两个查询在文章页面上创建面包屑

标签 php mysql sql

我希望我的网站上有面包屑,如下所示:首页/类别/子类别/文章示例:https://jsfiddle.net/10kLs0rc/

表结构

类别:id --parentid -- title

文章:id -- 类别id -- 标题 -- 内容

*

将文章标题打印到面包屑中很容易。但我也想打印文章的类别。 (如果文章有子类别,甚至是子类别。正如您可以看到上面的示例。)

我想我需要带有双重查询的 php 代码,一个用于“类别”,另一个用于“文章”表。

*

编辑

我想要构建的页面名为“article.php”,用户将访问:“article.php?id=1”

我可以获取我想要的所有数据,但文章父类别除外。

这是我简单的代码,我想创建另一个查询来获取文章的父类别,但我陷入困境。

<?php
$id =   $_GET['id'];
$query = $handler->query("SELECT * FROM article WHERE id='$id'");
while($r = $query->fetch()) {
    echo "
  <h3>$r[title]</h3>

        <p>$r[content]</p>
    ";
    }

?>

最佳答案

这是您想要的查询:

select
    `a`.`title` as `art_title`, 
    `a`.`content` as `art_content`,
    `c1`.`title` as `cat_title`, 
    `c2`.`title` as `cat_title_parent`
from `article` as `a`
left join `categories` as `c1`
    on `c1`.`id` = `a`.`categoryid`
left join `categories` as `c2`
    on `c2`.`id` = `c1`.`parentid`
where `a`.`id`=2;

这是 [SQLFiddle sqlfiddle 上的 POC]

所以在你的 php 中:

while($r = $query->fetch()) {
    echo '<i>';
    if(isset($r['cat_title_parent']))
        echo '/'.$r['cat_title_parent'];

    if(isset($r['cat_title']))
        echo '/'.$r['cat_title'];

    echo '</i><br />';
    echo '<h3>'.$r['art_title'].'</h3>';
    echo '<p>'.$r['art_content'].'</p>;
}

关于php - 使用 php 使用两个查询在文章页面上创建面包屑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33849776/

相关文章:

php - 在 yii2 中验证 parent_id

javascript - 很棒的设置标签文本字段和隐藏字段值

mysql插入到其他表中出现的位置

Mysql 控制台备份导入在正确的目录和正确的密码下失败

mysql - SQL 返回字符串而不是表

我的数据库搜索和显示中出现 php 错误

php - 随机放置图像,不重叠

Python+django——使用css javascript 和图片的一些问题

php - MySQL - 根据一个字段中的搜索出现次数对行进行排序

sql - 在冗长的 UPDATE 期间进行 SELECT - 不同事务隔离级别的 SELECT 和 SELECT WITH (NOLOCK) 会发生什么?