PHP使用不同形式的多个参数获取请求

时间:2017-02-13 14:44:09

标签: php html forms get

我是PHP的新手并且遇到了一些问题。我尝试使用两个参数设置get请求。例如,URL应如下所示:

search.php?query=Harry+Potter&page=movies

问题是,我得到了两个参数'查询'和'页'从两种不同的形式。

我的代码如下:

表格1:

<form action="search.php" method="get" class="navbar-form" role="search">
  <div class="input-group">
    <input type="text" class="form-control" placeholder="Search" name="query">
    <div class="input-group-btn">
      <button class="btn btn-default c-nav-btn-height" type="submit"><i class="glyphicon glyphicon-search"></i></button>
    </div>
  </div>
</form>

表格2:

<form class="btn-group-vertical" action="search.php" method="get">
  <button id="bMovies" class="btn active-menu" type="submit" name="page" value="movies">Filme</button>
  <button id="bSeries" class="btn" type="submit" name="page" value="series">Serien</button>
</form>

是否有可能在一个获取请求中组合两个表单?

2 个答案:

答案 0 :(得分:1)

我能够通过评论部分的帮助解决问题 - 感谢@Magnus Eriksson。不幸的是,他删除了一些评论,所以我将自己回答这些问题。

为了澄清,我知道这肯定不是最好的方法,但是地狱呀,它有效!

<强>解决方案:

隐藏的输入字段为我做了。我在每种形式中添加了一个隐藏的输入字段:

表格1:

<form action="search.php" method="get" class="navbar-form" role="search">
  <div class="input-group">
    <input type="hidden" name="page" value="movies">
    <input type="text" class="form-control" placeholder="Search" name="query">
    <div class="input-group-btn">
      <button class="btn btn-default c-nav-btn-height" type="submit"><i class="glyphicon glyphicon-search"></i></button>
    </div>
  </div>
</form>

表格2:

<form class="btn-group-vertical" action="search.php" method="get">
  <button id="bMovies" class="btn active-menu" type="submit" name="page" value="movies">Filme</button>
  <button id="bSeries" class="btn" type="submit" name="page" value="series">Serien</button>
  <input id="hiddenField" type="hidden" name="query" value="">
</form>

所以我添加了一个隐藏的输入字段,名为&#34; page&#34;在第一种形式和一个名为&#34; query&#34;的隐藏输入字段中在第二种形式。通过这个小技巧,我可以在两种形式中获得相同的信息,但只显示我想要显示的字段。

由于首先提交了 Form 1 ,因此可以将可见输入字段的值复制到 Form 2 中的不可见输入字段中。我只需要一些额外的PHP和JavaScript。

$query = $_GET["query"];
$page = $_GET["page"];
if ($page == "movies" || $page == "series") {
  echo "<script>";
  echo 'document.getElementById("hiddenField").value = "'. $query .'" ;';
  echo "</script>";
}
else {
}

我将第一张表格中的两个参数存储到变量中,并检查$page是否是电影&#39;或者&#39;系列&#39;,因为此网站上只允许这两个选项。如果是真的,它会回复一些JavaScript,它将$query变量添加为第二种形式的隐藏输入字段的值。

而且,我知道会有更好的方法来实现它,但它对我有用,我想与你分享。

答案 1 :(得分:0)

好吧,不是本地的,如果你可以避免它,你应该。如果您可以在页面上组合两个表单,请执行此操作。如果..由于某种原因你真的不能,我建议你看看这个线程..它有一个javascript函数来做你想要完成的事情 jQuery - submit multiple forms through single reqest, without Ajax