Php 始终在父页面和子页面上显示子页面
我的代码有问题。无论查看的是父页面还是子页面,显示父页面所有子页面的最佳方式是什么?如果选择了不同的父级,则应隐藏以前选择的父级的子页面 所有页面在URL中都有一个id值,可使用$\u GET['id']使用 我的MYSQL数据库看起来像这样Php 始终在父页面和子页面上显示子页面,php,mysql,Php,Mysql,我的代码有问题。无论查看的是父页面还是子页面,显示父页面所有子页面的最佳方式是什么?如果选择了不同的父级,则应隐藏以前选择的父级的子页面 所有页面在URL中都有一个id值,可使用$\u GET['id']使用 我的MYSQL数据库看起来像这样 CREATE TABLE IF NOT EXISTS `pages` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `parent` int(11)
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 />';
}
}
$gParents=mysql\u查询('SELECT*FROM db.pages WHERE parent=0');
而($parents=mysql\u fetch\u assoc($gParents))
{
回声“
”;
$qChilds=mysql\u query('SELECT*FROM db.pages,其中parent='.$parents['id'.'和parent='.$\u GET['id']);
while($childs=mysql\u fetch\u assoc($qChilds))
{
回声“
”;
}
}
也许我可以试着用一个例子来理解你的问题。考虑一下,您的表有以下记录:
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”的所有子类别。对吧?
此外,如果有人单击子类别,它仍应显示与有人单击父页面时相同的结果
如果我对您的需求的理解是正确的,您可以通过在子链接中传递父id而不是子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 />';
}
}
$gParents=mysql\u查询('SELECT*FROM db.pages WHERE parent=0');
而($parents=mysql\u fetch\u assoc($gParents))
{
回声“
”;
$qChilds=mysql\u query('SELECT*FROM db.pages,其中parent='.$parents['id'.'和parent='.$\u GET['id']);
while($childs=mysql\u fetch\u assoc($qChilds))
{
回声“
”;
}
}
作为旁注,如果它不是绝对必需的,也许不提供任何关于子类别的链接是有意义的
希望以上帮助 谢谢你的回复。但是,这不太管用,因为我需要在用户单击子页面后显示子页面(另一个字段)的内容。当前,他们将看到父页面的内容,子页面链接将导航到父页面。子页面仍然需要显示在父页面和子页面上,同时也显示所选页面的内容@user2443394,我不确定我是否完全理解您的问题/要求您上一篇文章中的表结构正是我想要实现的。我的目标是使用
- 创建垂直页面菜单。当用户单击父菜单项时,他们将进入另一个页面,其中将显示所选页面的内容。任何子页面都将在菜单中的相关专利下方显示为子页面的
- 。仅当选择了父页面或属于父页面的子页面时,子页面才需要可见。我猜我需要检查用户是否位于父页面的父页面或子页面中,以便显示任何相关子页面。您明白我现在正在尝试做什么吗?