0

我做了一个学校项目的网页,我有一系列选择框(有些是独立的,有些依赖另一个)进行选择,然后应用过滤器进行查询。它仍然处于测试模式,并且对单个选择工作正常。你可以在这里找到的网页:http://gorevler.awardspace.biz/realdeal03.html在选择框中选择多个选项并从数据库获取结果?

例如,当我从地区,奥地利从国家,塑料的行业,从产品子行业和聚塑料原料选择欧洲,然后点击应用过滤器它给出来的结果。

,当我从国家选择欧洲国家和地区北美,奥地利,从行业,从产品子行业和聚塑料原料,塑料,然后单击应用过滤器,它提供了只有一个结果。但在数据库中有两个匹配此过滤器的记录。所以它不承认我的多重选择。任何关于如何使其工作的建议,以便当我在一个盒子上进行多个选择并应用过滤器时,它会提供包括所有选择的所有结果?

我想这是关于PHP编码,我尝试了不同的东西,但没有成功。由于我不是程序员,我似乎不明白问题出在哪里。任何关于编码的建议将不胜感激。

回答

0

是因为当您选择两个区域时,您的查询变为: SELECT ... FROM ... WHERE region ='North America'AND region ='Europe',这意味着您永远不会从数据库获得任何结果该地区不能兼得?如果是这样,你需要做到这一点,所以你使用“OR”语句选择多个区域。

有很多方法来完成这个。首先,您需要一种处理您所在地区的多个输入的方法,而不是仅仅在您的php代码中定义一个输入。基本上,一旦你捕获了多个区域,那么你的查询行就是唯一需要改变的行。这可以成为:

$sql = mysql_query("SELECT * from gorevler WHERE region IN ('%$bolge%','%$bolge2%','%bolge3%') AND country LIKE '%$ulke%' AND sector LIKE '%$sektor%' AND sub_sector LIKE '%$altsektor%' AND product LIKE '%$urun%'"); 

或者

$sql = mysql_query("SELECT * from gorevler WHERE (region = '$bolge' OR region = '$bolge2' OR region = '$bolge3) AND country LIKE '%$ulke%' AND sector LIKE '%$sektor%' AND sub_sector LIKE '%$altsektor%' AND product LIKE '%$urun%'"); 

编辑与你的最后一个问题有些指针:

它只需要来自你的HTML。所以如果你选择多个区域,那么它会将这些发布到你的PHP页面。例如:

<option value="" data-filter-type="" selected="selected" id="europe">Europe</option> 

<option value="" data-filter-type="" selected="selected" id="usa">USA</option> 

然后在你的PHP

$bolge=$_POST['europe]; 
$bolge2=$_POST['usa']; 

这可能是快速和肮脏的方法呢。

+0

是的你是对的。当我在框中选择欧洲和北美时,我希望结果显示所有记录,包括欧洲或北美。那么我应该在下面的PHP代码上做一些修改吗?:'$ bolge = $ _ POST ['filtre_region']; $ sql = mysql_query(“SELECT * from gorevler WHERE region LIKE'%$ bolge%'AND country LIKE'%$ ulke%'​​AND sector LIKE'%$ sektor%'AND sub_sector LIKE'%$ altsektor%'AND product LIKE' %$ urun%'“);' – barutto

+0

在这种情况下,您需要动态构建您的查询,因此如果选择了更多的区域,则会添加更多的子句。因此,如果地区是美国或欧洲,那么查询应该是select ... from ... where(region ='europe'或region ='usa')和...;那种查询。 – d1ll1nger

+0

那么你认为我应该尝试sql IN操作符吗?或者是其他东西?如果你能给我编码提示,我会非常感激。 – barutto

相关问题