PHP:通过回显变量的类别和子类别

时间:2012-05-26 23:47:35

标签: php

我只能回显第一个选择框而不是子类别。我检查了代码中的语法错误,但没有找到。我猜测逻辑是不正确的。谁能告诉我为什么不显示子类别选择框?

   <?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>

2 个答案:

答案 0 :(得分:1)

由于您使用单引号在字符串中使用变量,因此您的查询很可能返回0结果。

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

在查询周围使用双引号,或者连接像'... c_id = ' . $category

这样的值

但更好的是,学习如何使用参数化查询并绑定值。

答案 1 :(得分:1)

首先,为什么你有两个数据库表?一个用于类别,一个用于子类别?什么时候子类别会有另一个子类别?然后你会创建另一个表subsubcategory ???

更好的方法是只有一个表categories,其中包含idparenttitle等列,其中如果主要类别为parent列包含0,当子类别parent列包含父类别的ID时。实现遍历树或类似方法时更好。

我的代码中没有显示错误,但可能$_GET["subcategory"]不包含值或没有数值,因此$subcategory未设置...

您是否尝试过调试?