2012-03-25 86 views
2

我有一些相對簡單的問題,關於它如何在PHP中使用MySQL。開始時我創建了「產品」表。該表是這樣的:使用PHP對MySQL進行排序

 
----------------------------------------------------------------------- 
| name       | brand | type  | color | price | 
|-------------------------------+---------+-----------+---------------- 
| Samsung S5230 (white   | samsung | s5230  | white | 80 | 
| Samsung S5230 (black)   | samsung | s5230  | black | 95 | 
| Samsung Wave 723 (black)  | samsung | wave723 | black | 200 | 
| Apple iPhone 4G 16GB (white) | apple | iphone4g | white | 500 | 
| Apple iPhone 4G 32GB (white) | apple | iphone4g | white | 600 | 
| Apple iPhone 4G 16GB (black) | apple | iphone4g | black | 450 | 
| Apple iPhone 4G 32GB (black) | apple | iphone4g | black | 550 | 
| Apple iPhone 3GS 16GB (white) | apple | iphone3gs | white | 300 | 
| Apple iPhone 3GS 8GB (black) | apple | iphone3gs | black | 200 | 
----------------------------------------------------------------------- 

我想創建一個PHP腳本誰排序我的產品。我想在下圖中對組合進行分類: enter image description here

第一個圖像是默認狀態。
第二個圖像是三星複選框被選中時。
第三張圖像是Apple複選框被選中時。
按價格菜單有3個選項:隨機,升序,降序。
產品列表這裏是我想要進行MySQL選擇的位置。
謝謝你的時間,問候。

+1

什麼是你的問題? – JJJ 2012-03-25 15:56:08

+0

好的。現在我們知道你想要做什麼。但你想要什麼? – Denzil 2012-03-25 16:01:05

+0

我想創建一個PHP腳本來對我的產品進行排序。這就是我要的。您在圖像中看到的是沒有功能的HTML打印屏幕,無法正常工作。我想創建一個功能PHP腳本。 – CBuzatu 2012-03-25 16:03:02

回答

0

好了,解決這類問題(如果不是所有的產品具有相同的濾波(這是順便說一下,比排序不同)字段),我使用的是多對多的關係表,例如:

FieldsToBrands 
------------------- 
brand_id | field_id 
------------------- 
1   1 
1   2 
2   2 

Brands 
--------------------- 
brand_id | brand_name 
--------------------- 
1   Apple 
2   Samsung 

Fields 
--------------------- 
field_id | field_name 
--------------------- 
1   Color 
2   Space 

那麼這意味着Apple同時擁有色彩和空間,而三星只有空間。這被稱爲表之間的多對多關係。

+0

我怎麼用PHP來做這件事?空間是什麼意思? – CBuzatu 2012-03-25 16:22:13

+0

空間是一個示例字段(4GB,8GB,16GB等) – 2012-03-25 16:25:06

+0

非常感謝。我在排序和過濾之間混淆不清。我期待的是過濾。這段代碼幫助我做了我想做的事情:[請輸入鏈接描述] [1] [1]:http://www.codingforums.com/showthread.php?t=216525 – CBuzatu 2012-03-29 01:43:42

1

好吧,考慮到你想要排序的選擇很多,我建議不要寫十億個SQL查詢來獲得正確的順序,因爲它沒有任何可擴展性或高效性,而不是談論 - 設計缺陷。

我反而得到整個結果集,並使用JavaScript,還有很大的jQuery插件之類的,叫tablesorter

+0

您認爲對編寫js中的整個結果集進行排序比編寫返回所需記錄的查詢更高效且更具可擴展性?如果數據集很小,但它不是更具可擴展性,它可能會更有效。 – nnichols 2012-03-26 00:17:25

+0

@nnichols我在上下文中講過,對於一家大型公司而言,每天要抽出10億條記錄,我不會建議這樣做。放置一個50-100條記錄的數據集,tablesorter可以很好地處理這些數據集。 – 2012-03-26 07:51:38

+0

非常感謝您的建議,但我不想創建表格。我想創建一個PHP腳本,用鏈接對我的產品進行排序:例如,如果我想從MySQL表中顯示所有Apple(品牌)iPhone 4G(類型)與此鏈接: products.php?brand = apple&type = iphone4g – CBuzatu 2012-03-26 15:19:28