尝试使用分类功能收集所有数据并使用 Ajax JSON 发送

我有一个包含 category_id 、 name、 parent_id 和 sort_order 的多级分类表。我想选择所有类别并在树视图中显示它们。当使用它而不用 JSON 发送时,它可以工作,但是当用 JSON 发送它时,只显示父类别而不显示子类别。


我的代码是:


function categoryTree($parent_id = 0, $sub_mark = ''){

    global $connection;

    $query = 'SELECT * FROM ws_categories WHERE parent_id = :parent_id ORDER BY sort_order ASC, name ASC';

    $statement = $connection->prepare($query);

    $statement->execute(['parent_id' => $parent_id]);

    $filtered_rows = $statement->rowCount();

        $array = array();

        while ($row = $statement->fetch()) {

                $sub_array = array();

                $sub_array[] = $sub_mark.$row['name'];

                $sub_array[] = '<button type="button" name="update" id="'.$row["category_id"].'" class="btn btn-info btn-sm update"><span class="glyphicon glyphicon-pencil"></span></button>';

                categoryTree($row['category_id'], $sub_mark.'---');

                $array[] = $sub_array;

        }

        return $array;

}


$data = categoryTree();


$output = array(

    "draw"              =>  intval($_POST["draw"]),

    "recordsTotal"      =>  $filtered_rows,

    "recordsFiltered"   =>  get_total_all_records(),

    "data"              =>  $data

);

echo json_encode($output);

让它在没有 JSON 的情况下工作并查看:


Cat1

Cat2

---SubCat1

------SubSubCat1

Cat3

但是当与上面的代码一起使用时只显示:


Cat1

Cat2

Cat3

我认为categoryTree($row['category_id'], $sub_mark.'---');在 WHILE 循环中不起作用。


泛舟湖上清波郎朗
浏览 150回答 1
1回答

至尊宝的传说

您需要将递归函数的结果与当前的结果合并。$sub_array = array();$sub_array[] = $sub_mark.$row['name'];$sub_array[] = '<button type="button" name="update" id="'.$row["category_id"].'" class="btn btn-info btn-sm update"><span class="glyphicon glyphicon-pencil"></span></button>';$array[] = $sub_array;$array = array_merge($array, categoryTree($row['category_id'], $sub_mark.'---'));
打开App,查看更多内容
随时随地看视频慕课网APP