【问题标题】:PHP MySQL drop down list searchPHP MySQL 下拉列表搜索
【发布时间】:2012-03-24 21:50:15
【问题描述】:

一直在寻找这个但找不到答案所以想我会在这里问。

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

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

任何帮助将不胜感激!

【问题讨论】:

  • 不要忘记发布您的示例。你需要发布它。
  • 您在得到答案后不会删除您的问题。你把它留给后代,让其他人也可以受益。

标签: php mysql


【解决方案1】:

您可以动态构建查询,如下所示:

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

【讨论】:

  • 嗨,马克,非常感谢。只是一个问题,我在我的页面上添加了一些分页,这是我将其添加到查询末尾的简单案例吗?即: if ($computerType != "") { $sql .= " AND computerType = ..."; }"LIMIT $startRecord, $noOfRecords";
  • @Tuoy:您必须有一个 ORDER BY,否则当您转到下一页时,结果可能会以不同的顺序出现。还有一些其他的事情需要注意,但是这个评论框太小了,无法进入这些细节。我建议您搜索有关如何在 MySQL 中实现分页的教程。
  • 好的,谢谢。我有一种工作分页脚本,您能否确认查询中已包含“LIMIT $startRecord, $noOfRecords'”?非常感谢再次
  • 得到它的工作忘记将 LIMIT 添加到 sql 中!再次感谢大家。
【解决方案2】:
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"');

【讨论】:

    猜你喜欢
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    相关资源
    最近更新 更多