【问题标题】:Selecting Multiple Options in Selection Boxes and Getting Results From Database?在选择框中选择多个选项并从数据库中获取结果?
【发布时间】:2014-07-07 20:18:31
【问题描述】:

我为一个学校项目制作了一个网页,其中有一系列选择框(有些是独立的,有些是依赖于另一个的)进行选择,然后应用过滤器进行查询。它仍处于测试模式,并且对于单个选择工作正常。你可以在这里找到网页: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 中选择聚丁烯,然后单击应用过滤器,它只给出一个结果。但是数据库中有两条记录与此过滤器匹配。所以它不承认我的多项选择。关于如何使它工作的任何建议,以便当我在一个框上进行多项选择并应用过滤器时,它会给出包括所有选择在内的所有结果?

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

【问题讨论】:

    标签: php database cascadingdropdown multipleselection multiple-select-query


    【解决方案1】:

    是不是因为当您选择两个区域时,您的查询变为: 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'];
    

    等等

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

    【讨论】:

    • 是的,你是对的。当我在框中选择欧洲和北美时,我希望结果显示包括欧洲或北美在内的所有记录。那么我应该对下面的 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%'");
    • 在这种情况下,您需要动态构建查询,因此如果选择了更多区域,则会添加更多子句。因此,如果地区是美国或欧洲,那么查询应该是 select ... from .. where ( region ='europe' or region ='usa') and ... ;那种查询。
    • 那么您认为我应该尝试使用 sql IN 运算符吗?或者是其他东西?如果您能给我编码提示,我将不胜感激。
    • 谢谢伙计,这正是我要找的!最后一个问题:您对修改Php文件敌人多区域选择有什么建议吗?我知道我要求的太多了,但这对我很有帮助。
    • 没有问题。我在答案的底部添加了更多内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    相关资源
    最近更新 更多