我只能回显第一个选择框而不是子类别。我检查了代码中的语法错误,但没有找到。我猜测逻辑是不正确的。谁能告诉我为什么不显示子类别选择框?
<?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>
答案 0 :(得分:1)
由于您使用单引号在字符串中使用变量,因此您的查询很可能返回0结果。
$subcategories = $dbh->query('SELECT s_id, subcategory FROM subcategory Where c_id = $category');
在查询周围使用双引号,或者连接像'... c_id = ' . $category
但更好的是,学习如何使用参数化查询并绑定值。
答案 1 :(得分:1)
首先,为什么你有两个数据库表?一个用于类别,一个用于子类别?什么时候子类别会有另一个子类别?然后你会创建另一个表subsubcategory
???
更好的方法是只有一个表categories
,其中包含id
,parent
,title
等列,其中如果主要类别为parent
列包含0
,当子类别parent
列包含父类别的ID时。实现遍历树或类似方法时更好。
我的代码中没有显示错误,但可能$_GET["subcategory"]
不包含值或没有数值,因此$subcategory
未设置...
您是否尝试过调试?