2017-02-13 70 views
1

我是PHP新手,并且有一点问题。我正在尝试使用两个参数设置get请求。该URL例如应当是这样的:PHP通过不同形式的多个参数获取请求

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> 

是否有可能在一个GET请求两种形式结合起来?

+0

也许对第一个请求使用会话或cookie,每个请求只能执行一个请求。 – Jer

+0

为什么有两种形式,如果你希望他们同时提交来自两者的数据? –

+0

为什么使用不同的表单? – Vaviloff

回答

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> 

所以我添加了一个名为 “页” 在一个隐藏的输入字段第一种形式和第二种形式中名为“query”的隐藏输入字段。有了这个小窍门,我就能够以两种形式获得相同的信息,但只显示了我想展示的字段。

由于形式1首先提交时,它能够将可见输入字段的值复制到不可见的输入字段中表格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变量作为隐藏输入字段的值。

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

0

好吧,不是天生的,如果你能避免它,你应该。如果您可以在您的网页上合并这两种表单,请执行此操作。如果..由于某种原因,你真的不能,我建议你看看这个帖子..它有一个JavaScript函数来做你正在寻找的东西 jQuery - submit multiple forms through single reqest, without Ajax

+0

你也可以做同样的事情,除非你已经使用它来做其他的事情。 –