2012-03-24 162 views
1

一直在寻找这个,但不能找到一个答案,所以想我会问在这里。PHP MySQL下拉列表搜索

我有5个下拉选项框列表,其数据从数据库填充。数据库信息是关于用户从第一下拉列表中选择计算机制造商,计算机类型从第二下拉列表中选择,计算机颜色从第三下载,最后从第四和第五下拉列表中选择最小和最高价格。

这些用户选择的变量然后发布到php的“搜索”页面,并对它们运行查询。我的问题是,如果(例如)用户只选择了一台计算机的“制造”和“制造”并将所有其他选项框留空,我将如何在SQL搜索中运行这个选项?我是否需要设置'未设置'变量作为通配符?

任何帮助,将不胜感激!

+0

不要忘记来发表您的样品。你需要发布它。 – Lion 2012-03-24 21:55:09

+0

您在回答问题后不会删除您的问题。你把它留给子孙后代,以便其他人也能受益。 – 2012-03-25 20:08:40

回答

2

您可以动态建立查询,像这样:

$sql = "SELECT ... FROM ... WHERE 1=1 "; 
if ($manufacturer != "") { 
    $sql .= " AND manufacturer = ..."; 
} 
if ($computerType != "") { 
    $sql .= " AND computerType = ..."; 
} 
// etc... 
+0

嗨马克,非常感谢。只是在我的页面上添加了一些分页的一个问题,是我把这个添加到查询结尾的简单情况吗?即:if($ computerType!=“”){sql。=“AND computerType = ...”; }“LIMIT $ startRecord,$ noOfRecords”; – Touy 2012-03-24 23:44:08

+0

@Tuoy:您必须具有ORDER BY,否则当您移至下一页时,结果可能会以不同的顺序出现。还有一些其他的事情要注意,但是这个评论框太小而不能进入这些细节。我建议你搜索关于如何在MySQL中实现分页的教程。 – 2012-03-24 23:57:44

+0

好的,马克谢谢你。我有一种工作分页脚本,你能否确认“LIMIT $ startRecord,$ noOfRecords”已包含在查询中?许多很多再次感谢 – Touy 2012-03-25 00:17:43

1
SELECT * FROM TABLE WHERE 
COLUMN_NAME_1 = IF('".$select_result_1."'='',COLUMN_NAME_1,'".$select_result_1"') AND 
COLUMN_NAME_2 = IF('".$select_result_2."'='',COLUMN_NAME_2,'".$select_result_2"') AND 
COLUMN_NAME_3 = IF('".$select_result_3."'='',COLUMN_NAME_3,'".$select_result_3"') AND 
COLUMN_NAME_4 = IF('".$select_result_4."'='',COLUMN_NAME_4,'".$select_result_4"') AND 
COLUMN_NAME_5 = IF('".$select_result_5."'='',COLUMN_NAME_5,'".$select_result_5"');