【发布时间】:2017-04-30 02:19:09
【问题描述】:
正如我试图在标题中描述的那样,我在从 MYSQL 数据库中选择行时遇到了问题,具体取决于同一页面上另一个下拉列表的 ID。我现在才使用mysql和php两个月左右,需要帮助。
我有一个包含以下标题的类别表。
|标识 |姓名 | parent_id|
有父类,parent_id 为 0。子类以父类的 id 作为其 parent_id,最大深度为 1 个子类。例如:
软件开发是 id = 18 和 parent_id = 0 的父类别。PHP 开发人员是 id = 30 和 parent_id = 18 的子类别。
我有一个下拉列表,我可以在其中选择我工作的类别,如下所示:
$p_query = "SELECT * FROM categories WHERE parent_id = 0 ORDER by id ASC";
$p_result = mysqli_query($con, $p_query) or die(mysqli_error($con));
$categories ='';
while($p_row = mysqli_fetch_assoc($p_result))
{
$categories .='<option class="option" value="p::'.$p_row['id'].'">' .$p_row['category_name'].'</option>';
}
<select name="categories[]" class="categories form-control" id="categories" style="width:100%" multiple>
<?php echo $categories;?>
</select>
这是有效的,没问题。但是,当我尝试获取第二个下拉列表以显示将其 parent_id 作为任何选定父类别的 id 的可能类别时,我会检索一个带有“未找到搜索结果”的下拉列表。下面的代码是我正在使用的:
$subcategories ='';
while($p_row = mysqli_fetch_assoc($p_result))
{
$c_query = "SELECT * FROM categories WHERE parent_id = ".$categories['id']." ORDER by id ASC";
$c_result = mysqli_query($con, $c_query) or die(mysqli_error($con));
while($c_row = mysqli_fetch_assoc($c_result))
{
$subcategories .='<option class="option" value="c::'.$c_row['id'].'">' .$c_row['category_name'].'</option>';
}
}
<select name="subcategories[]" class="categories form-control" id="subcategories" style="width:100%" multiple>
<?php echo $subcategories ?>
</select>
有什么我遗漏的吗?作为 PHP 和 MYSQL 的相对初学者,我将非常感谢任何帮助或建议。
【问题讨论】:
-
这个问题应该已经解决了。
-
var_dump()、print_r()和echo是你的朋友。在不同的地方试用它们以进行调试。所以首先检查你的$p_result,然后检查$c_query等等......
标签: php html mysql drop-down-menu