【问题标题】:Display categories and subcategories in php mysql在 php mysql 中显示类别和子类别
【发布时间】:2016-06-07 04:58:19
【问题描述】:

无法在 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']) { 和下面的三行,不更改 row: if($row['parent_id']) - 这不可能是真的。

标签: php mysql


【解决方案1】:

你写错了逻辑,认为你的第一个条件是if(!$row['parent_id']) {,然后在里面添加条件if($row['parent_id']) {。因此,如果“false”条件满足并且光标进入“if”内部,那么如何为相同的参数和条件执行“true”的逻辑

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

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>";
}

希望它对你有用!

【讨论】:

    猜你喜欢
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2016-10-12
    • 2011-06-05
    • 1970-01-01
    • 2010-11-22
    相关资源
    最近更新 更多