【问题标题】:Sorting MySQL with PHP用 PHP 对 MySQL 进行排序
【发布时间】:2012-04-09 07:57:37
【问题描述】:

我有一些相对简单的问题,关于它如何与 PHP 一起工作 MySQL。首先,我创建了“产品”表。表格是这样的:

-------------------------------------------------- --------------------- |姓名 |品牌 |类型 |颜色 |价格 | |-------------------+---------+------ ----+---------------- |三星S5230(白色|三星|s5230|白色|80| |三星S5230(黑色)|三星 | s5230 |黑色 | 95 | |三星 Wave 723 (黑色) |三星 |波723 |黑色 | 200 | |苹果 iPhone 4G 16GB (白色) |苹果| 高分辨率照片| CLIPARTO iphone4g |白色 | 500 | |苹果 iPhone 4G 32GB (白色) |苹果| 高分辨率照片| CLIPARTO iphone4g |白色 | 600 | |苹果 iPhone 4G 16GB (黑色) |苹果| 高分辨率照片| CLIPARTO iphone4g |黑色 | 450 | |苹果 iPhone 4G 32GB (黑色) |苹果| 高分辨率照片| CLIPARTO iphone4g |黑色 | 550 | |苹果 iPhone 3GS 16GB (白色) |苹果| 高分辨率照片| CLIPARTO iphone3gs |白色 | 300 | |苹果 iPhone 3GS 8GB (黑色) |苹果| 高分辨率照片| CLIPARTO iphone3gs |黑色 | 200 | -------------------------------------------------- ---------------------

我想创建一个对我的产品进行分类的 PHP 脚本。我想对下图中的组合进行排序:

第一张图片是默认状态。
第二张图片是三星复选框被选中时。
第三张图片是选中 Apple 复选框时的图像。
按价格排序菜单有 3 个选项:随机、升序、降序。
此处的产品列表是我要选择 MySQL 的位置。
谢谢你的时间,问候。

【问题讨论】:

  • 好的。现在我们知道你想做什么。但是你想要什么?
  • 我想创建一个 PHP 脚本来对我的产品进行分类。这就是我要的。您在图像中看到的是一个没有不起作用的功能的 html 打印屏幕。我想创建一个功能性的 PHP 脚本。
  • 如果Apple和Samsung复选框都被选中会发生什么?
  • @Sara 它对我有用,但请在这里尝试i.stack.imgur.com/GZpSF.png

标签: php mysql sorting


【解决方案1】:

好吧,考虑到您想要排序这么多选项,我建议不要编写十亿个 SQL 查询来获得正确的顺序,因为它无法扩展或高效,更不用说 - 设计缺陷.

我会得到整个结果集,并使用 javascript 对其进行排序,有一个很棒的 jQuery 插件,称为 tablesorter

【讨论】:

  • 你认为在 js 中对整个结果集进行排序比编写返回所需记录的查询更高效、更具可扩展性?如果数据集较小但扩展性较差,则可能会更有效。
  • @nnichols 我是在上下文中说的,当然对于一家每天要提取十亿条记录的大公司来说,我不建议这样做。放置一个包含 50-100 条记录的数据集,tablesorter 处理得很好。
  • 非常感谢您的建议,但我不想创建表格。我想创建一个 PHP 脚本,用链接对我的产品进行排序:例如,如果我想通过这个链接从 MySQL 表中显示所有 Apple(品牌)iPhone 4G(类型):products.php?brand=apple&type=iphone4g
  • 我想在品牌、类型、名称和价格之间创建排序组合。
  • 过滤,而不是排序。那你试过什么?有很多关于 PHP 和 MySQL 入门的文章。这是一个问答网站,不是我们免费为您编写的网站。您的桌子上有多少产品?
【解决方案2】:

好吧,为了解决这类问题(并非所有产品都有相同的过滤(顺便说一下,与排序不同)字段),我使用了多对多关系表,例如:

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 拥有 Color 和 Space,而三星只有 Space。这称为表之间的多对多关系。

【讨论】:

  • 我如何用 PHP 做到这一点?空间是什么意思?
  • Space 是一个示例字段(4GB、8GB、16GB 等)
  • 非常感谢。我在排序和过滤之间感到困惑。我寻找的是过滤。这段代码帮助我完成了我想做的事情:[在此处输入链接描述][1] [1]:codingforums.com/showthread.php?t=216525
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-12
  • 1970-01-01
  • 2016-10-28
  • 2013-09-06
  • 2013-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多