繁体   English   中英

HTML,PHP选择过滤器

[英]HTML,PHP select filter

我有一个小问题。 我无法让这个过滤日期。 我不知道我是否遗漏了一些东西,但我无法过滤ZSC_b_date我不是专业程序员但仍然。 寻求帮助。 谢谢。

这是HTML代码。

<form method="get" action="">
<select id="training_session" name="wb btn">
<option value="">Date</option>
<option value="April">April</option>
<option value="May">May</option>
<option value="June">June</option>
<option value="July">July</option>
<option value="August">August</option>
<option value="September">September</option>
<option value="October">October</option>
<option value="November">November</option>
</form>
<input type="submit" value="Filter">

PHP代码

    array(
        'training_partner' => true,
        'trainer_id' => 'alves',
        'trainer_name' => 'Luciano Alves',
        'training_company_link' => '#unirede',
        'training_company_name' => 'Unirede Soluções Corporativas',
        'city_country_link' => 
        'city_country_name' => 'Porto Alegre, Brazil',
        'training_language' => 'Portuguese',
        'ZCS_b_date' => '24 November 2014',
        'ZCS_e_date' => '26 November 2014',
        'ZCS_link' => 
        'ZLE_b_date' => '27 November 2014',
        'ZLE_e_date' => '28 November 2014',
        'ZLE_link' => 
    ),
);

if (isset($_GET['lang']) && $_GET['lang']) {
     foreach ($training_sessions as $key => $session) {
        if ($session['training_language'] !== $_GET['lang']) {
            unset($training_sessions[$key]);
        }           
     }
}

“我能拥有Cheezburger”是对的,你的阵列写得不好。 如果你不想要“ZCS_link”的任何东西,你应该使用一个空字符串(虽然我不明白你为什么要那样做)。 你忘了在那一行的末尾放一个昏迷,所以PHP现在很困惑;)你的调试器是否被激活?

另外,您编写了以下条件:

isset($_GET['lang'])

但我在HTML中看不到任何名为lang的元素,所以我认为这种情况永远不会成立,所以PHP不会运行验证。

更改

<select id="training_session" name="wb btn">

<select id="training_session" name="lang">

这样PHP知道$ _GET ['lang']是为您的下拉列表提供的值。

好吧,有几件事:

避免在name属性中使用space,因此我们将其更改为:

<select id="training_session" name="wb_btn">

为您的提交按钮添加一个名称,并将其放在<form></form>标记内

<input type="submit" name="filter_submit" value="Filter">

现在为你的PHP:

if (isset($_POST['filter_submit']) && isset($_GET['wb_btn']) && $_GET['lang']!='') {
     foreach ($training_sessions as $key => $session) {
         foreach($session as $k=>$v){

            //this if checks for the date only in these keys,
            //you can remove it if you want to check for all keys
            if($k=='ZCS_b_date' || $k=='ZCS_e_date' || $k=='ZLE_b_date' || $k=='ZLE_e_date')
            {
               //e.g., check if 'december' is present in string '28 November 2014'
               //it would be false, so remove it
                if(stripos($v,$_GET['lang'])==false){ 
                     unset($training_sessions[$key][$k]);
                }
            }
        } 
    }
}

演示

额外:

我现在有一个问题如何在没有过滤器按钮的情况下制作它,以便它只能在onclick上工作。 我应该使用JavaScript吗?

是的,您可以使用<select>标签的onchange元素通过简单的javascript执行此操作,例如:

<select id="training_session" name="wb_btn" onchange="this.form.submit()">

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM