gpt4 book ai didi

php - 始终在父页面和子页面上显示子页面 PHP MySQL

转载 作者:行者123 更新时间:2023-11-30 01:32:50 24 4
gpt4 key购买 nike

我的代码有问题。无论您是否正在查看父页面或子页面,显示父页面的所有子页面的最佳方式是什么?如果选择了不同的父级,则应隐藏先前选择的父级的子页面。

所有页面的 URL 中都有一个可使用 $_GET['id'] 获取的 ID。

我的 MYSQL 数据库看起来像这样。

CREATE TABLE IF NOT EXISTS `pages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`parent` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8;

使用我目前的代码,如果您在父页面上,子页面就会显示,但是一旦您跳转到任何子页面,子页面就会消失。

$gParents = mysql_query('SELECT * FROM db.pages WHERE parent = 0');

while($parents = mysql_fetch_assoc($gParents))
{
echo '<a href="?id='.$parents['id'].'">'.$parents['title'].'</a><br />';

$qChilds = mysql_query('SELECT * FROM db.pages WHERE parent = '.$parents['id'].' AND parent = '.$_GET['id']);

while($childs = mysql_fetch_assoc($qChilds))
{
echo '<a href="?id='.$childs['id'].'">'.$childs['title'].'</a><br />';
}
}

最佳答案

也许我可以尝试用一个例子来理解你的问题。考虑一下,您的表有以下记录:

id title parent
1 a 0
2 b 0
3 c 0
4 a1 1
5 a2 1
6 b1 2
7 c1 3
8 c2 3
9 c3 3

上面的代码将在第一次运行时生成如下输出,即所有父类别及其子类别的列表:

a
a1
a2
b
b1
c
c1
c2
c3

您的要求是,如果有人点击父类别(例如“a”),则应仅显示 a 的子类别并隐藏“b”和“c”的所有子类别。对吗?

此外,如果有人点击子类别,它仍应显示与点击父页面相同的结果。

如果我对您的要求的理解是正确的,您可以通过在子链接中传递parent-id而不是child-id来修复您的代码,如下所示:

$gParents = mysql_query('SELECT * FROM db.pages WHERE parent = 0');
while($parents = mysql_fetch_assoc($gParents))
{
echo '<a href="?id='.$parents['id'].'">'.$parents['title'].'</a><br />';

$qChilds = mysql_query('SELECT * FROM db.pages WHERE parent = '.$parents['id'].' AND parent = '.$_GET['id']);

while($childs = mysql_fetch_assoc($qChilds))
{
echo '<a href="?id='.$parents['id'].'">'.$childs['title'].'</a><br />';
}
}

作为旁注,如果不是绝对需要,也许不提供子类别的任何链接是有意义的?

希望以上内容对您有所帮助!

关于php - 始终在父页面和子页面上显示子页面 PHP MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17251436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com