SWITCH / CASE使用POST方法使用PHP进行多个提交按钮

时间:2015-11-15 09:09:24

标签: php forms submit-button

首先,我是PHP的菜鸟和使用Forms,但我正在学习,因为我去! 其次,我知道这已被多次覆盖,但我无法让它对我有用!这可能只是我忽略的......

我有一个包含1个搜索字段和3个提交按钮的表单。 根据所选的按钮,查询将在数据库中查找3个不同搜索之一。这很简单......

http://1karaokedj.com

db.survey.aggregate([
    { "$unwind": "$results" },
    { "$group": {
        "_id": "$_id",
        "results": { "$push": "$results" },
        "matched": {
            "$sum": {
                "$cond": [
                    { "$and": [
                        { "$eq": [ "$results.product", "xyz" ] },
                        { "$gte": [ "$results.score", 6 ] }

                    ]},
                    1,
                    0
                ]
            }
        }
    }},
    { "$unwind": "$results" },
    { "$match": {
        "$or": [
            {
                "results.product": "xyz",
                "results.score": { "$gte": 6 }
            },
            { "matched": 0 }
    }},
    { "$group": {
        "_id": "$_id",
        "results": { "$push": "$results" },
        "matched": { "$first": "$matched" }
    }},
    { "$project": {
        "results": { 
            "$cond": [
                { "$ne": [ "$matched", 0 ] },
                "$results",
                []
            ]
        }
    }}
])

这始终不会返回找到的记录。 如果我添加默认情况,那么它的工作原理 的print_r($ _ POST);返回“Array()”

这是完整的代码,以防问题出现在其他地方:

<input name="searchterm" type="search" placeholder="Enter Search Terms Here"  class="search" />
<input name="searchbtn" type="submit" id="searchbtn" class="searchbutton" value="Artist Search"  />
<input name="searchbtn" type="submit" id="searchbtn" class="searchbutton" value="Title Search"  />
<input name="searchbtn" type="submit" id="searchbtn" class="searchbutton" value="Disc ID Search"  />
<?php if(isset($_SESSION['searchterm'])) {
          if(($_SESSION['searchterm']!="")) {
            switch ($_POST['searchbtn']) {
              case 'Artist Search':
                $searchresults=$db->query("select * from 1KaraokeDJ where Artist like '%$searchterm%' limit 100");
                break;
              case 'Title Search':
                $searchresults=$db->query("select * from 1KaraokeDJ where Title like '%$searchterm%' limit 100");
                break;
              case 'Disc ID Search':
                $searchresults=$db->query("select * from 1KaraokeDJ where Disc like '%$searchterm%' limit 100");
                break;
            }

            if(mysqli_num_rows($searchresults) > 0) {
...
}}}?>

1 个答案:

答案 0 :(得分:1)

这是因为下面的行在提交表单时重定向。 重定向时不会保留POST个值。因此,$_POST['searchbtn']为空,在switch语句中,它会转到default个案例。

header("location:index.php");

注释标题重定向,它应该可以工作。

更新的代码:

if(isset($_POST['searchbtn'])) {
    $_SESSION['searchterm']=$_POST['searchterm'];
    if(($_SESSION['searchterm'])!="") { /*header("location:index.php");*/ }
    else { echo "<script> alert('Please enter something to search for') </script>";}
}