来自mysql中页面ID的活动菜单

时间:2012-08-12 10:03:41

标签: php mysql css menu

我让自己对此感到困惑。我正在尝试根据页面ID激活我的菜单。目前我可以拉出菜单并显示它们,但我无法在菜单上激活当前页面。

这是我的数据库设置:

CREATE TABLE IF NOT EXISTS `pages` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `pagetitle` varchar(255) NOT NULL,
  `linklabel` varchar(255) NOT NULL,
  `pagebody` text NOT NULL,
  `pageorder` int(11) NOT NULL,
  `showing` enum('0','1') NOT NULL DEFAULT '1', 
  `keywords` varchar(255) NOT NULL,
  `descriptions` varchar(255) NOT NULL,
  `creationdate` datetime NOT NULL,
  `lastmodified` datetime NOT NULL,
  `extra` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;

此处是我的菜单显示:

// Build Main Navigation menu and gather page data here
$sqlCommand = "SELECT id, linklabel FROM pages WHERE showing='1' ORDER BY id ASC";

$query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());

$menuDisplay = '';

while ($row = mysqli_fetch_array($query))
{
    $pid = $row["id"];

    $linklabel = $row["linklabel"];

    $menuDisplay .= '<ul><li><a href="index.php?pid='.$pid.'">'.$linklabel.'</a></li></ul>';
}

mysqli_free_result($query);

在页面正文中,我只是像这样回显$ menuDisplay

<div id="nav"><?php echo $menuDisplay ?></div><!--ends nav-->

我的css没有做太多,但到目前为止这是设置:

/*NAVIGATION*/

#nav ul {
    list-style: none;
    margin: 0px;
    padding: 0px;
}

#nav li {
    border-bottom: 1px solid #bbb;
}

#nav li a:link, #nav li a:visited {
    display: block;
    padding: 5px 5px 5px 12px;
    background-color: #ddd;
    color: #555;
    text-decoration: none;
}

#nav li a:active, #nav li a:hover {
    background-color: #444;
    color: #fff;
}

1 个答案:

答案 0 :(得分:0)

你应该能够在PHP中做这样的事情:

// Build Main Navigation menu and gather page data here
$sqlCommand = "SELECT id, linklabel FROM pages WHERE showing='1' ORDER BY id ASC";
$query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());
$menuDisplay = '<ul>';
while ($row = mysqli_fetch_array($query)) {
  $pid = $row["id"];
  $linklabel = $row["linklabel"];
  $menuDisplay .= '<li' . ($pid == $_GET["pid"] ? ' class="selected"' : '') . '><a href="index.php?pid=' . $pid . '">' . $linklabel . '</a></li>';
}
mysqli_free_result($query);
$menuDisplay .= '</ul>';

这会将class="selected"添加到当前页面的<li>。另外,请勿将每个<li>放在自己的<ul>中。我也解决了这个问题。