2012-03-25 110 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