在搜索结果上$ _POST后,$ _GET复选框值未更新?

时间:2014-08-27 08:35:22

标签: php forms post checkbox get

我需要在搜索结果上默认设置我的复选框,除非在主页或搜索结果页面上设置:

home.php:

<form role="search" method="get" id="searchform" action="<?php echo home_url( '/' ); ?>">
<select name='test_menu'><option value='test'>test</option></select>

search_results.php:

if ( (isset($_POST['test']) == 'test') || (isset($_GET['test_menu']) == 'test') )
 {
    $test = 'checked="checked"';
 }

...

<form id ="s_form" action="<?php $self ?>" method="post" >

<input type="checkbox" onChange="this.form.submit()" name="test" value="test" <?php echo $test; ?> />

主页上的表单包含 method =“get”,搜索结果页面上的表单有method =“post”。

搜索结果页的网址为&test=test。如果我从主页搜索。

从主页搜索后,$ _GET值始终保留在搜索结果页面上 - 即使我通过$ _POST更新表单也是如此。我想在搜索结果页面上重新发布表单,并在通过主页设置后取消选中复选框。我希望这是有道理的。

总之:如果&test_menu=test在网址中,该复选框将不取消选中,而且应该这样做。

更新 添加了表单代码,以显示每个页面上每个表单的操作。

3 个答案:

答案 0 :(得分:3)

代码isset($_POST['test'])将返回truefalse,因此(isset($_POST['test']) == 'test')始终为false

请改用:

if (  (isset($_POST['test']) && ($_POST['test'] == 'test')) || (isset($_GET['test_menu']) && ($_GET['test_menu'] == 'test')) )  {
    $test = 'checked="checked"';
}

答案 1 :(得分:1)

像这样修改你的代码

if ((isset($_POST['test']) &&  $_POST['test']=='test') 
     || (isset($_GET['test']) &&  $_GET['test']=='test') )
 {
    $test = "checked='checked'";
 }

...

<input type="checkbox" name="test" value="test" <?php echo $test; ?> />

标记行$test = "checked='checked'";中的更改

答案 2 :(得分:0)

1)if ( $_REQUEST['test'] == 'test' )

2)清理表单提交中的get变量(在postdata中)你宁愿使用action='?'action='<?=$_SERVER['PHP_SELF']?>'