繁体   English   中英

分页使用多个GET值无法正常工作

[英]Pagination with multiple GET values doesn't work as expected

我的博客页面具有以下网址: www.something.com/index.php?menuid=6或仅www.something.com/?menuid=6

我想向当前网址添加一个GET变量(页号,因为有太多的帖子无法在一页上显示它们),如下所示:
www.something.com/index.php?id=6&page=12www.something.com/?id=6&page=12

如果我不知道www.something.com和menuid的值,该怎么在分页的<a href>中写什么?

我尝试了这个:

$pagination = "<p>";
$pagination.= ($page <= 1) ? "First | " : "<a href=\"{$_SERVER['REQUEST_URI']}&page=1\">First</a> | ";
$pagination.= ($page <= 1) ? "Previous | " : "<a href=\"{$_SERVER['REQUEST_URI']}&page=".($page-1)."\">Previous</a> | ";

for ($i=1; $i<=$pages; $i++) {
    $pagination.= ($page == $i) ? "{$i} | " : "<a href=\"{$_SERVER['REQUEST_URI']}&page={$i}\">{$i}</a> | ";
}

$pagination.= ($page >= $pages) ? "Next | " : "<a href=\"{$_SERVER['REQUEST_URI']}&page=".($page+1)."\">Next</a> | ";
$pagination.= ($page >= $pages) ? "Last" : "<a href=\"{$_SERVER['REQUEST_URI']}&page={$pages}\">Last</a>";
$pagination.= "</p>\n";

但是当我单击第二页,然后单击第三页时,结果是这样的:

index.php?menuid=6&page=2&page=3

我的另一个问题是,如何只显示前两次和接下来的两个页码在这一个样

这是分页的php代码:

$query = mysql_query("SELECT * FROM posts");
$howmuch = 5;
$total = mysql_num_rows($query); 
$page = (isset($_GET['page'])) ? $_GET['page'] : 1;
$pages = ceil($total/$howmuch);
$where = ($page-1)*$howmuch; 

$active="(SELECT s_id FROM status WHERE s_name='active')";
$sql = "SELECT post_id, post_title, post_content, post_date
        FROM posts
        WHERE post_s_id=".$active."
        ORDER BY post_id DESC
        LIMIT {$where}, {$howmuch}";
$result = mysql_query($sql);

$output="";
while ($row = mysql_fetch_assoc($result)) {
$output.="Here are the posts";
}
return $output.$pagination;

!!!更​​新!!!
抱歉,但我忘了提及,posts.php包含在index.php中,而上面的代码位于posts.php中。
menu_id在index.php的代码中,而不在posts.php中,但是URL相同。

$_SERVER['REQUEST_URI']将获取URL中的所有内容,这就是为什么它将所有页面变量加起来的原因。

采用

$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].'?menuid='.$_GET['menuid'].'&page='.$page

快速功能,无论URL中的参数如何,都可以生成此函数

function getPageUri($page) {
    $_GET['page'] = $page;
    foreach($_GET as $key => $value ) {
        $query_string[] = "$key=$value";
    }
    return $_SERVER['PHP_SELF'] . '?' . implode('&', $query_string);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM