我有我的博客页面的url:www.something.com/index.php?menuid=6
或仅www.something.com/?menuid=6
我想添加一个GET变量(页码,因为有太多的帖子显示在一个页面上)到当前的url,像这样:www.something.com/index.php?id=6&page=12
或www.something.com/?id=6&page=12
如果我不知道www.something.com和菜单的值,我应该在分页的<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;
更新 ! ! ! !
很抱歉,我忘了说,post .php包含在index.php中,上面的代码在post .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);
}