Tạo danh mục nhiều cấp không giới hạn: bạn sẽ gặp trong các dự án của mình và sau đây tôi xin đi thẳng vào vấn đề không giải thích thuật toán đệ quỵ là gì cả, bạn có thể tham khảo nó trên google:
Dữ liệu của chúng ta là kiểu array gồm các key “parent_id”, “id”, “name”
1 2 3 4 5 6 7 8 9 10 11 |
$parent_cat_query= $conn->Execute("SELECT * FROM `posts_cat`"); $parent_cat_results = $parent_cat_query->getrows(); $categories=array(); if($parent_cat_results):foreach($parent_cat_results as $item): $category_item=array( 'parent_id' => $item['parent_id'], 'id' => $item['id'], 'name' => $item['name'] ); array_push($categories,$category_item); endforeach; endif; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function mrtungchecked($var1,$var2){ if($var1 == $var2): //die('sdfsd'); return 'selected="selected"'; endif; } function showCategories($categories,$current_id, $parent_id = 0,$char = ''){ foreach ($categories as $key => $item){ // Nếu là chuyên mục con thì hiển thị if ($item['parent_id'] == $parent_id){ $out=$out.'<option value="'.$item['id'].'"'.mrtungchecked($current_id,$item['id']).' >'.$char . $item['name'].'</option>'; // Xóa chuyên mục đã lặp unset($categories[$key]); // Tiếp tục đệ quy để tìm chuyên mục con của chuyên mục đang lặp $out=$out.showCategories($categories,$current_id, $item['id'] ,$char.'--'); } } return $out; } |
1 2 3 4 5 6 7 |
$cats=showCategories($categories,$ad[0]['parent_id']); //$cats nó sẽ trả về các <option value="..">..</option> Tại chỗ gọi ra mình ví dụ <select> <option value="0">--Chọn danh mục--</option> <?php echo $cats; ?> </select> |
Mọi sự sao chép xin ghi rõ nguồn là fcwordpress.net
Chuyên trang về wordpress: hướng dẫn thiết kế theme, plugin, thủ thuật wordpress