我一直在尝试显示我自己创建的CMS数据库中的菜单名称,我显示它完美但有一个非常奇怪的错误,我花了很多时间来发现解决方案,但我不能。
问题是我想在第50行显示菜单名称为H1,因此每当您点击菜单名称时,它也会显示为H1标题。
菜单名称显示正确,但子菜单(页面)显示N而不是页面名称,我不知道N来自哪里。
注意:数据库连接或检索数据没有问题。
这是我的内容页面代码:
<?php include("includes/header.php"); ?>
<?php require_once 'includes/db_connection.php'; ?>
<?php require_once 'includes/b_functions.php'; ?>
<?php require_once 'includes/cms_constants.php'; ?>
<?php db_connect();?>
<?php
if (isset ( $_GET ['subj'] )) {
$sel_subject = get_subject_by_id ( $_GET ['subj'] );
$sel_page = "NULL";
} elseif (isset ( $_GET ['pages'] )) {
$sel_subject = false;
$sel_page = get_page_by_id ( $_GET ['pages'] );
} else {
$sel_subject = "NULL";
$sel_page = "NULL";
}
?>
<table id="structure">
<tr>
<td id="navigation">
<ul class="subjects">
<?php
$subject_set = get_all_subjects();
while ($subject = mysql_fetch_array($subject_set)) {
echo "<li";
if ($subject["id"] == $sel_subject["id"]) { echo " class=\"selected\""; }
echo "><a href=\"contents.php?subj=" . urlencode($subject["id"]) .
"\">{$subject["menu_name"]}</a></li>";
$page_set = get_pages_for_subject($subject["id"]);
echo "<ul class=\"pages\">";
while ($page = mysql_fetch_array($page_set)) {
echo "<li";
if ($page["id"] == $sel_page["id"]) { echo " class=\"selected\""; }
echo "><a href=\"contents.php?pages=" . urlencode($page["id"]) .
"\">{$page["menu_name"]}</a></li>";
}
echo "</ul>";
}
?>
</ul>
</td>
<td id="page">
<?php if (!is_null($sel_subject)) { // subject selected ?>
<h2><?php echo $sel_subject['menu_name']; ?></h2>
<?php } elseif (!is_null($sel_page)) { // page selected ?>
<h2><?php echo $sel_page['menu_name']; ?></h2>
<div class="page-content">
<?php echo $sel_page['content']; ?>
</div>
<?php } else { // nothing selected ?>
<h2>Select a subject or page to edit</h2>
<?php } ?> </td>
</tr>
</table>
<?php require_once 'includes/footer.php';?>
答案 0 :(得分:0)
你的'N'来自“NULL”字符串。我相信你的意思是用实际的NULL而不是字符串来设置你的变量。像:
$var = NULL;
相反:
$var = "NULL";
当您将一个设置为“NULL”的变量作为数组访问时,您将获得“N”(因为该字符串被视为一个数组)。例如;
$var = "NULL";
echo $var[0]; // 'N'
此外,如果在字符串上测试NULL,它将返回false(该变量为非null);
$var = "NULL";
if($var) {
echo "var is: " . $var;
}
else {
echo "var is NULL!";
}
以上应输出“var is:NULL”。
我是根据经验说的(当我开始编写PHP时我这样做了)。但是,问题的根源可能并不止于此,因为您的变量应该在后续条件中设置。我会通过你的while语句,if语句并确保你的变量被正确设置。 (var_dump($ var)或print_r($ var)通过可疑块)。