php - 在php mysql中显示类别和子类别

标签 php mysql

无法在 php mysql 中获取类别和子类别。

在这里我得到了所有类别(猫和子猫):

function get_categories() {
    $conn = db_connect();
    $query = "select * from categories";
    $result = $conn->query($query);
    if(!$result) {
        return false;
    }else {
        $result = db_result_to_array($result);
        return $result;
    }
}

在这里我得到了子猫:

function get_child_cats($parent_id) {
    $conn = db_connect();

    $query = "select * from categories where parent_id = '".$parent_id."'";

    $result = $conn->query($query);

    if(!$result) {
        return false;
    }else {
        $result = db_result_to_array($result);
        return $result;
    }

}

db_result_to_array() 函数在这里:

    function db_result_to_array($result) {
    $res_array = array();
    for($count = 0; $row = $result->fetch_assoc(); $count++) {
        $res_array[$count] = $row;
    }
    return $res_array;
}

数据库由cat_id、cat_name、parent_id组成

在这里我试图显示猫和子猫:

    if(is_array($categories)) {
    echo "<ul>";
    foreach($categories as $row) {

        if(!$row['parent_id']) {
            $childs = get_child_cats($parent_id);
            echo "<li>".$row['cat_name'];
            if($row['parent_id']) {
                echo "<ul>";
                foreach($childs as $row) {
                    echo "<li>".$row['cat_name']."</li>";
                }
                echo "</ul>";
            }
            echo "</li>";
        }

    }
    echo "</ul>";
}

但是,我只得到没有任何子猫的猫。

最佳答案

您编写了错误的逻辑,认为您的第一个条件是 if(!$row['parent_id']) { 然后在其中添加条件 if($row['parent_id']) ']) {.因此,如果“假”条件满足并且光标进入“if”内部,那么如何针对相同的参数和条件执行“真”逻辑

我已在下面尝试使您的逻辑正确:

foreach($categories as $row) {
    if(!$row['parent_id']) {
        echo "<li>".$row['cat_name'];
        $childs = get_child_cats($parent_id);

    }
    else {
        echo "<ul>";
        foreach($childs as $row) {
            echo "<li>".$row['cat_name']."</li>";
         }
       echo "</ul>";
    }
    echo "</li>";
}

希望它对您有用!

关于php - 在php mysql中显示类别和子类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37670811/

相关文章:

php - Symfony2 Doctrine 查询生成器作为 FROM 子句中的子查询

PHP: stmt->execute() 失败,但错误为空

mysql - 从 Access VBA 中的查询创建表

java - Spring MVC,用IF语句将数据发送到MySQL

php - 需要使用 jQuery 显示包含数据库信息的数组元素

php - 是否可以计算在我的服务器上查看图像或 flash 文件的次数

更新 EasyPHP 后 PHPMyAdmin 错误

php - 从 MySQL 数据库列中选择最大数字并填充 0?

php - 在网页中显示来自 mysql 的两个数据库时出现问题

mysql - MySQL 中所有行的计数总和 (*)