Php 始终在父页面和子页面上显示子页面

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)

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

所有页面在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) 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,我不确定我是否完全理解您的问题/要求您上一篇文章中的表结构正是我想要实现的。我的目标是使用
    创建垂直页面菜单。当用户单击父菜单项时,他们将进入另一个页面,其中将显示所选页面的内容。任何子页面都将在菜单中的相关专利下方显示为子页面的
  • 。仅当选择了父页面或属于父页面的子页面时,子页面才需要可见。我猜我需要检查用户是否位于父页面的父页面或子页面中,以便显示任何相关子页面。您明白我现在正在尝试做什么吗?