【问题标题】:PHP get request with multiple parameters from different formsPHP从不同形式获取具有多个参数的请求
【发布时间】:2017-02-13 14:44:08
【问题描述】:

我是 PHP 新手,有一个小问题。我正在尝试使用两个参数设置一个获取请求。例如,该 URL 应如下所示:

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

问题是,我从两种不同的表单中获取了两个参数“查询”和“页面”。

我的代码如下:

表格一:

<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>

是否有可能将两种形式合并到一个 get Request 中?

【问题讨论】:

  • 第一个请求可能使用会话或cookie,每个请求只能执行一个请求。
  • 如果您希望同时提交两个表单并包含两个表单的数据,为什么还要创建两个表单?
  • 为什么要使用不同的表格?
  • @MagnusEriksson 问题是我有一个搜索字段,在我的描述中是“表格 1”。这个搜索字段位于我网站的每个页面上。如果我提交此表单,它会将数据发送到 search.php,我可以在其中选择两个选项,“电影”和“系列”。这两个选项是我的第二种形式。
  • @C0dekid 这不是我想要做的,两个参数都必须在 URL 中......无论如何,谢谢你的回答

标签: php html forms get


【解决方案1】:

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

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

解决方案:

隐藏的输入字段为我做到了。我在每个表单中添加了一个隐藏的输入字段:

表格一:

<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>

所以我在第一个表单中添加了一个名为“page”的隐藏输入字段,并在第二个表单中添加了一个名为“query”的隐藏输入字段。通过这个小技巧,我能够以两种形式获得相同的信息,但只显示我想要显示的字段。

由于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 是“电影”还是“系列”,因为在此站点上只允许使用这两个选项。如果为真,它会回显一些 JavaScript,即添加 $query 变量作为第二个表单中隐藏输入字段的值。

再说一次,我知道会有更好的方法来做到这一点,但它对我有用,我想与你分享。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 你也可以在不包含臃肿的 JS 框架的情况下做同样的事情,除非你已经将它用于其他东西。
    猜你喜欢
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 2020-07-31
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    相关资源
    最近更新 更多