当前位置: 首页 > 知识库问答 >
问题:

传递带有分页的$_GET(或$_POST)变量(会话不工作)

萧宣
2023-03-14

我知道这是一个常见的问题,因为我在决定发帖之前一直在寻找答案,但我似乎无法找到一个解决方案。

问题:我有一个分页脚本(PHP)用于我的搜索结果。显然常见的是,第一页的结果显示良好,然后在移动到第2、3页等时失败。

当点击页面2、3等时,我在搜索中使用的每个变量都有一个“未知索引”错误。

因此,I$_从表单中获得以下变量:

$_SESSION['var1']= $_GET['var1'];
$_SESSION['var2']= $_GET['var2'];
$_SESSION['var3']= $_GET['var3'];
$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 ($page > 1){
$paginate.= "<a href='$targetpage?page=$prev'>Previous</a>";
} else {
$paginate.= "<span class='disabled'>previous</span>";}

谢谢

共有1个答案

国俊艾
2023-03-14

因此您需要将这些查询参数传递到下一页。如果您的页面希望$_get['var1']出现,但您的URL中没有?var1=foo,那么它显然不会工作。处理此问题的最简单方法是http_build_query:

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

这将保留$_get中的所有当前值,并向其添加一个page=2参数。根据需要修改您的案例。

 类似资料:
  • 我是使用会话变量的新手,尽管我在网上搜索了解会话变量,但我一直在苦苦挣扎。 所以基本上我有一个页面(search.php)。我加载一个基于搜索表单的动态数据表。加载表后,我通过AJAX执行以下操作: 正如您在Success和单击table row记录时所看到的,我的想法是通过AJAX发布一个变量以供以后使用。并将用户重定向到update.php页面。 然后,我希望使用发布的AJAX变量在sessi

  • 我正在尝试使用JDBC连接到MySQL。如果我将url、用户名和密码的硬代码值传递给DriverManager,我会有一个奇怪的行为。getConnection()与数据库的连接正常。但如果我将参数作为变量传递,则与JDBC的连接失败,并出现以下错误。 JAVAsql。SQLException:找不到适用于“jdbc:mysql://localhost:3306/hplus"

  • 主要内容:$_GET 变量,何时使用 method="get"?在 PHP 中,预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值。 $_GET 变量 预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值。 从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送信息的量也有限制。 实例 form.html 文件代码如下: 当用户点击 "Submit" 按钮时,发送到服

  • 我必须增加group_concat_max_len。我不能通过preparestatement来完成,也不能在mysql my.conf文件中完成。 我在mysql文档中发现,有一个选项可以在URL中传递会话变量。但是没有例子,我试着那样做:

  • 问题内容: 我对代码感到不知所措,其中GET值(例如)不作为函数的参数包括在内。 什么时候需要将POST和GET方法包括为函数的参数? 问题答案: 您何时需要将POST和GET方法包括为函数的参数? 我会说:“从来没有”:和什么叫做超全局:他们在整个脚本存在; 这意味着它们存在于函数/方法中。 特别是,您不需要那些关键字。 但是,依靠函数/方法中的那些方法还是很不习惯的:您的函数/方法通常不应该依

  • 主要内容:$_POST 变量,何时使用 method="post"?,PHP $_REQUEST 变量在 PHP 中,预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值。 $_POST 变量 预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值。 从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。 注释:然而,默认情况下,POST 方法的发送信息的量最大值为 8 M