09/10/2018, 23:04

Xây dựng category đa phân lớp

Thấy dạo này trong box này hơi buồn, mạnh dạn post chủ đề này cho mọi người thảo luận và trình bày các skill của mình. Vấn đề đặt ra ở đây là:
1. Bạn design database như thế nào để xây dựng category đa phân lớp?
2. Thuật toán và xây dựng hàm của bạn để retrieve các category đa phân lớp từ database?
Thân chào!
kid08 viết 01:09 ngày 10/10/2018
1. Table forum gồm các field: forumid,parentid,title
2. Dùng đệ quy function để gọi category đa cấp ra

function show_cat($forumid,$text="  ")
{
$abc = select title,forumid from forum where parentid=$forumid
echo $abc[title];
// Gọi lại function show_cat
show_cat($abc[forumid],"  ");
}

Cơ bản là thế, u thử phát triển thêm
scripter viết 01:04 ngày 10/10/2018
Quote Được gửi bởi kid08
1. Table forum gồm các field: forumid,parentid,title
2. Dùng đệ quy function để gọi category đa cấp ra

function show_cat($forumid,$text="  ")
{
$abc = select title,forumid from forum where parentid=$forumid
echo $abc[title];
// Gọi lại function show_cat
show_cat($abc[forumid],"  ");
}

Cơ bản là thế, u thử phát triển thêm
LOL, giống y hệt mình về database và thuật toán, một ý kiến, ai còn nữa không
satthuhuydiet viết 01:13 ngày 10/10/2018
Cái này viết đệ qui đơn giản thôi mà, bài này mình viết tutor ở đây có thể tham khảo, http://www.php.net.vn/?phpeasy=tutorials&c=53&s=&i=32
cactus_vn viết 01:14 ngày 10/10/2018
ý của scripter là muốn làm một trang như này á
http://thumucviet.com
php&mysql viết 01:11 ngày 10/10/2018
Quote Được gửi bởi cactus_vn
ý của scripter là muốn làm một trang như này á
http://thumucviet.com
cái bài của satthuhuydiet post là cái tổng quát rồi đó, http://thumucviet.com viết y chang vậy thôi có gì khác đâu, chẳng qua là tùy biến cách thể hiện ra thôi.
COTTONBELLY viết 01:09 ngày 10/10/2018
Mình thấy cách xây dựng "thuật toán" tạo category đa cấp trên website gì đấy có vẻ hơi buồn cười. Bây giờ hiếm ai lại đi sử dụng thuật toán như thế này, nếu thư mục ở cấp 1,2 thì chưa có vấn đề gì, nhưng nếu từ cấp 3 trở lên thì khi move/add/edit thì hơi bị gay đấy. Dùng đệ quy function cũng không phải là tối ưu. Giả sử có 5 cấp, mỗi lần phải gọi 5 query, heheh... Các bạn xem thử cái class Tree trên pear.php.net xem sao: http://pear.php.net/package/Tree . Hoặc là có thể dùng lại cách trên nhưng tận dụng những functions trong MySQL nữa, chẳng như dùng sets để tìm thư mục con bằng IN() hoặc là FIND_IN_SET().
kid08 viết 01:12 ngày 10/10/2018
add, edit, del forum đa phân cấp cũng đâu khó, kết hợp đệ qui và if else làm đc hết
php&mysql viết 01:19 ngày 10/10/2018
Quote Được gửi bởi COTTONBELLY
Mình thấy cách xây dựng "thuật toán" tạo category đa cấp trên website gì đấy có vẻ hơi buồn cười. Bây giờ hiếm ai lại đi sử dụng thuật toán như thế này, nếu thư mục ở cấp 1,2 thì chưa có vấn đề gì, nhưng nếu từ cấp 3 trở lên thì khi move/add/edit thì hơi bị gay đấy. Dùng đệ quy function cũng không phải là tối ưu. Giả sử có 5 cấp, mỗi lần phải gọi 5 query, heheh... Các bạn xem thử cái class Tree trên pear.php.net xem sao: http://pear.php.net/package/Tree . Hoặc là có thể dùng lại cách trên nhưng tận dụng những functions trong MySQL nữa, chẳng như dùng sets để tìm thư mục con bằng IN() hoặc là FIND_IN_SET().
Tôi chẳng biết buồn cười chổ nào tuy nhiên tôi dùng cách đó và làm đủ mọi thứ, muốn trình bày thế nào cũng ok, edit, delete, remove qua lại giữa các cấp (n cấp) vô tư, quan trọng là biết tận dung hay không thôi, viết đệ qui mà chỉ dùng cho 1,2 cấp thì khỏi dùng còn hơn.
COTTONBELLY viết 01:13 ngày 10/10/2018
Không rõ là bạn php&mysql dùng cách đó cho script hay là application, xử lý dữ liệu có phức tạp hay không, và nhất là bạn có muốn tối ưu cho sản phẩm của mình hay không. Tôi cũng không phủ nhận giải pháp ấy, chỉ góp ý là nên kết hợp nhiều functions để tối ưu nó, nên bạn chả việc gì phải cảm thấy annoyed thế đâu . Hi vọng là bạn hiểu ý tôi nói gì
Bài liên quan
0