php - 即使用户没有从所有选择框中进行选择,如何显示结果?

标签 php mysql

我有一个搜索表单,它在“results.php”中显示来自 MySQL 的匹配行。我有一些选择框让用户选择他的偏好。但是,用户可能不会从所有选择框中进行选择,而是从几个选择框中进行选择。如果发生这种情况,我的查询将不会返回任何内容,因为它应该使用所有可用的选项。

例如,唯一必须选择的变量是makedisabled 是标准的,我在每个查询中都需要它。

当未选择 modelAND year = '$year' 时,如何编辑以下内容以“删除 AND model = '$model' 当未选择 year 时?

我将使用示例进行更多选择。

$make = $_POST["make"];
$model = $_POST["model"];
$year = $_POST["year"];
$useds = mysql_query("SELECT * FROM used WHERE make = '$make' AND model = '$model' AND year = '$year' AND disabled='0' order by id desc" );

最佳答案

将查询分段构建,然后将它们串联起来。您受益于至少有一个 where 子句是强制性的。我使用的是简短的 IF 语法,但如果您真的愿意,您可以使用 if(){}else{} 完整地写出它。

$make  = ( isset($_POST['make']  ? 'make='.$_POST['make'].' AND '   : '' );
$model = ( isset($_POST['model'] ? 'model='.$_POST['model'].' AND ' : '' );
$year  = ( isset($_POST['year']  ? 'year='.$_POST['year'].' AND '   : '' );

$query = "SELECT * FROM used WHERE ".$make.$model.$year."disabled=0 ORDER BY id DESC"
$useds = mysql_query(" ");

前三行查看帖子是否已设置,如果已设置,则将它们从 $val 转换为 col=$val AND。如果不是,则变量设置为 '',并且将该变量插入到查询中无效。

$variable = ( true ? 'yes' : 'no' );
$variable = ( false? 'yes' : 'no' );

第一个给你"is",第二个给你“否”

然后通过在查询中将它们串在一起,您可以在查询中使用任意数量的它们:

WHERE make=$make AND disabled=0
WHERE make=$make AND model=$model AND disabled=0
WHERE make=$make AND model=$model AND year=$year AND disabled=0
WHERE year=$year AND disabled=0

如果您要大写 MySQL 运算符/函数,那么您也应该保持一致,以便您可以分辨哪些是名称,哪些不是。

关于php - 即使用户没有从所有选择框中进行选择,如何显示结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22187291/

相关文章:

mysql - 运算符喜欢,字段类型时间戳和西里尔字母? MySQL错误?

php - 使用 php 导出的文本文件不会更新

php - MySQL - 如何使用(LEFT)JOIN 通过一个表将两个表连接在一起?

javascript - 如何在开发者 Facebook 个人资料上更改用户的应用程序设置?

php - 关于将 php 变量传递给 javascript

mysql - 可视化管理表数据的简便方法

mysql - 迭代替换子字符串的 SQL 函数

php - 从日期选择器到 mysql/php 的奇怪日期格式

php - 在 Woocommerce 中的订单详细信息表之前更改付款方式位置

mysql - 更新 MySQL 表,但只查询最大值