0

私はこれに少し混乱しました。ページ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;
}
4

1 に答える 1

1

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>。私もそれを修正しました。

于 2012-08-12T10:13:49.387 に答える