0

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

例如,当我从 Region 中选择 Europe,从 Country 中选择 Austria,Sector 中选择 Plastics,Sub-Sector 中选择 Plastic Raw Materials,Product 中选择 Polybutylene,然后单击应用过滤器,它会给出结果。

但是,当我从 Region 中选择 Europe AND North America,从 Country 中选择 Austria,Sector 中选择 Plastics,Sub-Sector 中选择 Plastic Raw Materials,Product 中选择 Polybutylene,然后单击应用过滤器,它只给出一个结果。但是数据库中有两条记录与此过滤器匹配。所以它不承认我的多项选择。关于如何使其工作的任何建议,以便当我在一个框上进行多项选择并应用过滤器时,它会提供所有结果,包括所有选择?

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

4

1 回答 1

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'];

等等

无论如何,这可能是最快和最肮脏的方法。

于 2014-05-19T21:02:36.543 回答