1

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

1 回答 1

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))。

于 2013-02-07T16:15:19.653 回答