显示CMS中的菜单名称

时间:2013-02-07 16:09:30

标签: php

我一直在尝试显示我自己创建的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';?>

1 个答案:

答案 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)通过可疑块)。