Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP/SQL查询中筛选价格范围的正确代码_Php_Mysql - Fatal编程技术网

在PHP/SQL查询中筛选价格范围的正确代码

在PHP/SQL查询中筛选价格范围的正确代码,php,mysql,Php,Mysql,真希望有人能帮我。我正在构建一个PHP/MySQL搜索表单,希望它能让用户搜索我们的葡萄酒数据库,并根据通过下拉菜单选择的价格范围过滤结果 表单可以很好地搜索和返回精确结果的列表。但它不会对结果进行价格过滤 经过几天的搜索和实验,我已经将各种代码片段拼凑到了一起,但总的来说,PHP对我来说仍然是一个谜 这是正确的编码和语法我挣扎 我应该如何编写发布在这里的PHP来正确集成价格范围过滤器?我怀疑我在sql查询中包含的“pricerange”有点离谱 MySQL服务器版本:5.1.65-cll 价

真希望有人能帮我。我正在构建一个PHP/MySQL搜索表单,希望它能让用户搜索我们的葡萄酒数据库,并根据通过下拉菜单选择的价格范围过滤结果

表单可以很好地搜索和返回精确结果的列表。但它不会对结果进行价格过滤

经过几天的搜索和实验,我已经将各种代码片段拼凑到了一起,但总的来说,PHP对我来说仍然是一个谜

这是正确的编码和语法我挣扎

我应该如何编写发布在这里的PHP来正确集成价格范围过滤器?我怀疑我在sql查询中包含的“pricerange”有点离谱

  • MySQL服务器版本:5.1.65-cll
  • 价格列类型:十进制(10,2)
任何帮助都将不胜感激。请检查下面的代码块

非常感谢

HTML

价格范围
$ 10 - $20
$ 21 - $30
$ 31 - $50
$ 51 - $75
$ 76 - $100
$101 - $200
201美元以上
PHP


在将查询放在一起之前,您一直都是这样做的。在下面的语句中不需要“where”,因为在下面构建的查询中已经有了它

switch ($pricerange) {
  case 1  :  $pricerange = " Price BETWEEN 10.00 AND 20.00 ";  break; 
  case 2  :  $pricerange = " Price BETWEEN 21.00 AND 30.00 ";  break;  
  case 3  :  $pricerange = " Price BETWEEN 31.00 AND 50.00 ";  break;   
  case 4  :  $pricerange = " Price BETWEEN 51.00 AND 75.00 ";  break;     
  case 5  :  $pricerange = " Price BETWEEN 76.00 AND 100.00 ";  break;       
  case 6  :  $pricerange = " Price BETWEEN 101.00 AND 200.00 ";  break;         
  case 6  :  $pricerange = " Price > 200.00 ";  break;           
}

OR 
Price LIKE '%" . $pricerange ."%'
应该是

OR ". $pricerange ."

因为您已经在构建中间语句。

在运行sql查询之前,我会回显它,这样您就可以看到它是什么样子了。但是对于pricerange部分,SQL部分似乎是错误的。现在看起来是这样的:

OR Price LIKE '% where price BETWEEN 10.00 AND 20.00 %'
我想你会希望它看起来像:

OR PRICE BETWEEN 10.00 AND 20.00

您希望它是“或”还是“和”?

什么不起作用?您确切地知道您构建了什么SQL语句吗?您是否打印了在执行之前已经建立的<代码> $SQL<代码>?首先删除<代码> < <代码> >从<代码> $pICerrange >如果您的产品的大小相对较小,我将考虑从搜索功能中删除价格范围。然后列出所有结果,并在结果上添加jquery表分类器。然后,用户可以根据表标题进行排序。此外,目前您将结果显示在无序列表中,也可以重新考虑。谢谢gSaenz,这是一个好主意。如果我不能让这个下拉列表发挥作用,那绝对是我需要的方法,非常感谢!同样,也不需要像那样的价格感谢Andy、Alexander和GBD的快速反馈!对不起,我不太懂这个。我刚刚做了Alexander建议的更改,但是现在表单保持完全空白,并且没有返回任何错误消息。while循环或回波显示可能有问题吗?我只是猜测…谢谢Alexander,非常感谢,我现在就尝试一下你的新变化…我无法告诉你我有多感激那些帮助你的人,太棒了!Alexander,我已经做了您建议的更改,现在在第152行收到以下错误消息:Parse error:syntax error,意外的“}”。这里的右大括号是:默认值:$pricerange='''}OK。我必须停止试图快速解决你的问题。几小时后我会回来,到时候我会有时间为您提供完整的解决方案MagicMarkker:非常感谢您的投入。我想我们快到了。根据你的建议,我已经按照你上面的指示调整了代码。现在,表单返回正确价格范围内的所有葡萄酒,以及我在搜索框中输入名称(梅洛)的所有葡萄酒。我想过滤梅洛(例如),以便只返回选定价格范围内的产品,而不返回其他产品。有什么想法吗?再次感谢你!将
或“$pricerange.”
更改为“和”$pricerange.”,如果设置了pricerange,您将删除所有不想再显示的OR语句。因此,您必须使用几个if语句动态构建查询。谢谢,我将搜索合适的if语句块,看看结果如何,至少我走的是正确的道路,每个人都很棒!再次感谢。。
OR ". $pricerange ."
OR Price LIKE '% where price BETWEEN 10.00 AND 20.00 %'
OR PRICE BETWEEN 10.00 AND 20.00