我需要在搜索结果上默认设置我的复选框,除非在主页或搜索结果页面上设置:
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
在网址中,该复选框将不取消选中,而且应该这样做。
更新 添加了表单代码,以显示每个页面上每个表单的操作。
答案 0 :(得分:3)
代码isset($_POST['test'])
将返回true
或false
,因此(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']?>'