传递$ _GET(或$ _ POST)变量使用分页(会话不工作)(Passing $_GET (or

2019-10-17 08:34发布

我知道这是因为我已经寻找答案决定发布之前,一个共同的问题,但我似乎无法找出一个解决方案。

问题:我有一个分页脚本(PHP)使用我的搜索结果。 正如显然是常见的,在第一页结果表明细,然后移动到第2页第3等时失败

我得到一个“未知指数”的错误为每个点击进入第2页,3等,当在搜索中使用我的变量

所以我$ _GET从我的形式,这些变量:

$_SESSION['var1']= $_GET['var1'];
$_SESSION['var2']= $_GET['var2'];
$_SESSION['var3']= $_GET['var3'];

注意要点:会话已经在我的头已经启动; 我使用$ _GET,因为我如果用户进入“返回”宁愿不具有“重新提交”警告; 变量都清理(只在代码作为其足够长的时间已经未显示); 我有,因为他们计算距离,每个结果的年龄等使用$ _GET变量与while循环。

我的分页脚本:

$limit = 4; 

$query = "SELECT COUNT(*) as num FROM $tableName";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages['num'];

$stages = 3;
$page = mysql_escape_string(isset($_GET['page'])) ? (int)$_GET['page'] : 1;
if($page) {
  $start = ($page - 1) * $limit; 
} else {
  $start = 0;   
}   

// Get page data
$query1 = "SELECT * FROM $tableName ORDER BY joindate DESC LIMIT $start, $limit";
$result = mysql_query($query1);

// Initial page num setup
if ($page == 0){$page = 1;}
$prev = $page - 1;  
$next = $page + 1;                          
$lastpage = ceil($total_pages/$limit);      
$LastPagem1 = $lastpage - 1;                    

$paginate = '';
if($lastpage > 1) {
$paginate .= "<div class = 'hp1col'><div class='paginate'>";
$pagetotal = $total_pages.' Results';

// Previous
if ($page > 1){
$paginate.= "<a href='$targetpage?page=$prev'>Previous</a>";
} else {
$paginate.= "<span class='disabled'>previous</span>";}

// Pages    
if ($lastpage < 7 + ($stages * 2))  // Not enough pages to breaking it up
{   
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{ $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}                 
}
}

// Next
if ($page < $counter - 1){ 
$paginate.= "<a href='$targetpage?page=$next'>Next</a>";
} else {
$paginate.= "<span class='disabled'>Next</span>";
}
$paginate.= "</div></div>";     
}

while($row = mysql_fetch_array($result))
{
if (($part1 >= $_SESSION['var1']) AND  ($part2 <= $_SESSION['var2']) AND ($part3 <= $_SESSION['var3'])) {
echo 
"[Results]  
}
}
echo $paginate;

我想在这个if语句开始一个新的会话,但它并没有帮助:

if ($page > 1){
$paginate.= "<a href='$targetpage?page=$prev'>Previous</a>";
} else {
$paginate.= "<span class='disabled'>previous</span>";}

我希望有人能帮帮忙。 我为在问题代码板坯道歉,但我认为这充其量只是把一切都在为便于在,希望有人能提供帮助。

谢谢

Answer 1:

所以,你需要通过到下一个页面传递查询参数。 如果你的网页预期$_GET['var1']是存在的,但你没有?var1=foo的URL,这显然是行不通的。 处理这种情况最简单的方法是http_build_query

printf('<a href="%s?%s">Next</a>',
       $targetpage,
       http_build_query(array('page' => 2) + $_GET));

这将保留在所有当前值$_GET并增加了一个page=2的参数吧。 根据需要为你的情况修改。



文章来源: Passing $_GET (or $_POST) Variables With Pagination (SESSION not working)