我是PHP的新手,这个问题困扰了我。
我的情况是我有这样的网址
http://www.test.com/test.php?month=5&year=5&pn=4&ItemsPerPage=15&sort=5
月份和年份表示日期,pn =页码,ItemsPerPage =每页的项目数,以及sort = ORDER BY。
我的问题是页面上有多个位置可以更改不同的变量。
用户可以通过日历更改月份和日期...这会将其余变量清除掉,这样用户就会失去他们在页面上的位置以及页面上有多少项目以及页面的排序方式。
如何使用户可以更改其中一个变量...但其他变量保持不变?
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:2)
您需要在表单中添加隐藏字段,以便考虑您要保留的所有其他字段。
例如:
<input type=hidden name="sort" value=5 />
另一种(更好的)方法是初始化php_session
答案 1 :(得分:0)
答案 2 :(得分:0)
虽然你的问题似乎不清楚答案似乎是,对于每个地方他们可以改变1项,要么你需要做一个“重新加载”它更新多个,或者,对于每个地方他们可以改变它你需要使用新值发送缺少的变量。例如,将它们作为隐藏值放在表单中,或者将它们编码为URL目标的一部分。
答案 3 :(得分:0)
我猜你的意思是改变Javascript中的东西。
创建一个使用window.location改变它的脚本?
答案 4 :(得分:0)
要记住您的变量,您应该使用SESSION
,请参阅此链接http://www.php.net/manual/en/book.session.php
简而言之,我建议使用此功能
function remember($var,$default=null) {
if(!session_id()) session_start(); // needed if session.auto_start is off
if(isset($_GET[$var])) $_SESSION["remember"][$var] = $_GET[$var];
if(!isset($_SESSION["remember"][$var])) $_SESSION["remember"][$var] = $default;
return $_SESSION["remember"][$var];
}
然后你可以在你的代码中写下这样的东西
$sort = remember("sort");
即使点击日历也会清除URL
中的变量,也会记住它答案 5 :(得分:0)
我个人使用的函数重新创建除了选择的排除变量之外的URL变量,您可能会发现它很有用。
<?php
function urlVarsRecreate ($exclude='') {
$urlArray = array();
foreach($_GET as $key => $val) {
if(!is_array($exclude)) {
if ($key != $exclude) {
array_push($urlArray, $key.'='.urlencode($val));
}
}
else {
if (!in_array($key, $exclude)) {
array_push($urlArray, $key.'='.urlencode($val));
}
}
}
return implode('&', $urlArray);
}
?>
现在当你调用它时,你可以指定你不想要的变量,无论是数组还是字符串中的一个,如下所示。
<?php
//For excluding a single variable
echo '<a href="test.php?'.urlVarsRecreate('sort').'&sort=newVal">sort by newVal</a>';
//For excluding multiple variables
echo '<a href="test.php?'.urlVarsRecreate(array('year','month','pn')).'&sort=newVal">Some link</a>';'
?>
我希望它有所帮助,我发现它非常有用,并且经常在制作搜索结果页时使用它。