0

最初の選択ボックスのみをエコーできますが、サブカテゴリはエコーできません。コードの構文エラーをチェックしましたが、何も見つかりませんでした。ロジックが間違っていると思います。サブカテゴリの選択ボックスが表示されないのはなぜですか?

   <?php 

    $dbh = new PDO("mysql:host=" . $host . ";dbname=" . $db, $user, $pass);

    if(isset($_GET["category"]) && is_numeric($_GET["category"]))
    {
        $category = $_GET["category"];
    }


    ?>


    <form name="theForm" method="get">

        <!-- Category SELECTION -->

   <select name="category" size="6" onChange="autoSubmit();">
                <?php
        $categories = $dbh->query('SELECT * FROM category ORDER BY c_id');

        while ($row = $categories->fetch()) {
        echo '<option value="' . $row['c_id'] . '"';
        if ($row['c_id'] == $category) echo ' selected';
        echo '>' . htmlentities($row['category']);
      }
                ?>
   </select>

        <br><br>



    </form>
4

2 に答える 2

1

一重引用符を使用して文字列内で変数を使用しているため、クエリは0の結果を返す可能性があります。

$subcategories = $dbh->query('SELECT s_id, subcategory FROM subcategory Where c_id = $category');

クエリを二重引用符で囲むか、次のように値を連結します'... c_id = ' . $category

しかし、それよりもさらに優れているのは、パラメーター化されたクエリを使用して、代わりに値をバインドする方法を学ぶことです。

于 2012-05-26T23:51:44.967 に答える
1

まず、なぜ2つのDBテーブルがあるのですか?1つはカテゴリ用、もう1つはサブカテゴリ用ですか?そして、サブカテゴリに別のサブカテゴリがある場合はどうなりますか?次に、別のテーブルを作成しますsubsubcategoryか?

より良いアプローチは、列、、などを含むテーブルを1つだけ持つことです。categoriesここidで、メインカテゴリの列にが含まれている場合、サブカテゴリの場合、列には親カテゴリのIDが含まれます。トラバーサルツリーまたは同様の方法を実装する場合は、さらに良いでしょう。parenttitleparent0parent

あなたのコードに間違いはありませんが、おそらく値が$_GET["subcategory"]含まれていないか、数値が含まれていないため、$subcategory設定されていません...

デバッグしてみましたか?

于 2012-05-26T23:55:36.613 に答える