Trong một website có lẽ sẽ không bao giờ không có menu, tùy vào mục đích thiết kế và ý tưởng mà menu được thể hiện khác nhau ở mỗi trang web. Trong đó menu đa cấp là một dạng phổ biến nhất, hôm nay mình sẽ giới thiệu đến mọi người các tạo menu đa cấp hay còn gọi multi-level menu đệ quy trong PHP.
Đệ quy chuyên mục đa cấp thẻ table
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| // BƯỚC 1: LẤY DANH SÁCH CATEGORIES $conn = mysqli_connect( 'localhost' , 'root' , '' , 'test' ); $sql = 'SELECT * FROM categories' ; $result = mysqli_query( $conn , $sql ); $categories = array (); while ( $row = mysqli_fetch_assoc( $result )){ $categories [] = $row ; } // BƯỚC 2: HÀM ĐỆ QUY HIỂN THỊ CATEGORIES function showCategories( $categories , $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 ) { echo '<tr>' ; echo '<td>' ; echo $char . $item [ 'title' ]; echo '</td>' ; echo '</tr>' ; // 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 showCategories( $categories , $item [ 'id' ], $char . '|---' ); } } } |
Đệ quy chuyên mục đa cấp thẻ select option
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| // BƯỚC 2: HÀM ĐỆ QUY HIỂN THỊ CATEGORIES function showCategories( $categories , $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 ) { echo '<option value="' . $item [ $key ]. '">' ; echo $char . $item [ 'title' ]; echo '</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 showCategories( $categories , $item [ 'id' ], $char . '|---' ); } } } |
Đệ quy chuyên mục đa cấp với thẻ UL và LI
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| // BƯỚC 2: HÀM ĐỆ QUY HIỂN THỊ CATEGORIES function showCategories( $categories , $parent_id = 0, $char = '' ) { // BƯỚC 2.1: LẤY DANH SÁCH CATE CON $cate_data = array (); foreach ( $categories as $key => $item ) { // Nếu là chuyên mục con thì hiển thị if ( $item [ 'parent_id' ] == $parent_id ) { $cate_data [] = $item ; unset( $categories [ $key ]); } } // BƯỚC 2.2: HIỂN THỊ DANH SÁCH CHUYÊN MỤC CON NẾU CÓ if ( $cate_data ) { echo '<ul>' ; foreach ( $cate_data as $key => $item ) { // Hiển thị tiêu đề chuyên mục echo '<li>' . $item [ 'title' ]; // Tiếp tục đệ quy để tìm chuyên mục con của chuyên mục đang lặp showCategories( $categories , $item [ 'id' ], $char . '|---' ); echo '</li>' ; } echo '</ul>' ; } } |
Nhận xét
Đăng nhận xét