0

私はPHPとmySQLの初心者です。データベースを介してナビゲーションを作成しています。2つのテーブルを設定しています。1つはメインのナビゲーションアイテムで、もう1つはサブのナビゲーションアイテムです。それらはによって接続されていsubject_idます。私はそれらを表示するためにループを使用しています。最初のテーブルが表示され、2番目のテーブルには情報があるべき場所のスペースが残りますが、表示されません。SQL設定にあるはずだと思いますが、わかりません。これが私のコードです(データベースが接続されていることはわかっています):

    <?php require_once("includes/connection.php") ?>
    <?php require_once("includes/functions.php") ?>
    <?php include("includes/headder.php") ?>
    <table id="structure">
    <tr>
    <td id="navigation">
        <ul class="subjects">
    <?php
        $subject_set = mysql_query("SELECT * FROM subjects", $connection);
        if(!$subject_set){
            die("database query failed: " . mysql_error());
        }

        while ($subject = mysql_fetch_array($subject_set)) {
            echo "<li>" . $subject["menu_name"] . "</li>";



        $page_set = mysql_query("SELECT * FROM pages WHERE subject_id =    {$subject["id"]}", $connection);
        if(!$page_set){
            die("database query failed: " . mysql_error());
        }


        echo "<ul class=\"pages\">";
        while ($page = mysql_fetch_array($page_set)) {
            echo "<li>" . $page["menu_name"] . "</li>";
        }
        echo "</ul>";
        }
    ?>
    </ul>

    </td>
    <td id="page">
        <h2>Content Area</h2>

    </td>
    </tr>
    </table>
    <?php include("includes/footer.php") ?>
4

1 に答える 1

0

空白はデータのあるべき場所を示しているとおっしゃっていたので、実際に行が見つかったようです。したがって、selectステートメントは問題ないはずです。これは、インデックス「menu_name」が$pageレコードに見つからないことを意味している可能性があります。

「menu_name」が実際にページテーブルの列であることを確認してください。

$ pageレコードにある有効な列をテストするには、while$pageループ内で次を使用できます。

var_dump($page);

サブジェクトIDが整数の場合、where句に一重引用符は必要ありません。ただし、subject_idに整数以外の文字が含まれている場合、selectステートメントは次のようになります。

$page_set = mysql_query("SELECT * FROM pages WHERE subject_id =  '{$subject["id"]}'", $connection);
于 2013-01-04T18:14:13.110 に答える