在Php中,当将查询字符串从一个页面传递到另一个页面时,如何进行分页。我使用的以下代码在没有查询字符串的情况下可以很好地进行分页,但在将值从一个页面传递到另一个页面(查询字符串)时,它很难工作。请给我一些建议。
<?php
include("connect.php");
$adjacents = 3;
$id = $_REQUEST["id"];
$query = "SELECT COUNT(*) as num FROM data";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages[num];
$targetpage = "pagetest.php";
$limit = 10;
$page = $_GET['page'];
if($page)
$start = ($page - 1) * $limit;
else
$start = 0;
$sql = "SELECT name,email,dateins FROM data WHERE name='$id' LIMIT $start, $limit";
$result = mysql_query($sql);
$cnt=0;
if($result)
while($rs=mysql_fetch_assoc($result))
{
$cnt=$cnt+1;
$cssRow="class='gridRow'";
if(($cnt%2)==1)
{
$cssRow="class='gridRowAlternate'";
}
if ($page == 0) $page = 1;
$prev = $page - 1;
$next = $page + 1;
$lastpage = ceil($total_pages/$limit);
$lpm1 = $lastpage - 1;
$pagination = "";
if($lastpage > 1)
{
$pagination .= "<div class='"pagination'">";
if ($page > 1)
$pagination.= "<a href='"$targetpage?id=$id?page=$prev'">Previous</a>";
else
$pagination.= "<span class='"disabled'">Previous</span>";
if ($lastpage < 7 + ($adjacents * 2))
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<span class='"current'">$counter</span>";
else
$pagination.= "<a href='"$targetpage?id=$id?page=$counter'">$counter</a>";
}
}
elseif($lastpage > 5 + ($adjacents * 2))
{
if($page < 1 + ($adjacents * 2))
{
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($counter == $page)
$pagination.= "<span class='"current'">$counter</span>";
else
$pagination.= "<a href='"$targetpage?id=$id?page=$counter'">$counter</a>";
}
$pagination.= "...";
$pagination.= "<a href='"$targetpage?id=$id?page=$lpm1'">$lpm1</a>";
$pagination.= "<a href='"$targetpage?id=$id?page=$lastpage'">$lastpage</a>";
}
elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
{
$pagination.= "<a href='"$targetpage?id=$id?page=1'">1</a>";
$pagination.= "<a href='"$targetpage?id=$id?page=2'">2</a>";
$pagination.= "...";
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
{
if ($counter == $page)
$pagination.= "<span class='"current'">$counter</span>";
else
$pagination.= "<a href='"$targetpage?id=$id?page=$counter'">$counter</a>";
}
$pagination.= "...";
$pagination.= "<a href='"$targetpage?id=$id?page=$lpm1'">$lpm1</a>";
$pagination.= "<a href='"$targetpage?id=$id?page=$lastpage'">$lastpage</a>";
}
else
{
$pagination.= "<a href='"$targetpage?id=$id?page=1'">1</a>";
$pagination.= "<a href='"$targetpage?id=$id?page=2'">2</a>";
$pagination.= "...";
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<span class='"current'">$counter</span>";
else
$pagination.= "<a href='"$targetpage?id=$id?page=$counter'">$counter</a>";
}
}
}
//next button
if ($page < $counter - 1)
$pagination.= "<a href='"$targetpage?id=$id?page=$next'">Next</a>";
else
$pagination.= "<span class='"disabled'">Next</span>";
$pagination.= "</div>'n";
}
?>
<tr>
<td><?php echo $rs['name']; ?></td>
<td><?php echo $rs['email']; ?></td>
<td><?php echo $rs['dateins']; ?></td>
</tr>
<?php
}
?>
<td><input type="hidden" name="id" id="id" value="<?php echo $id; ?>"></td>
</table>
<?php echo $pagination; ?>
?>
提前谢谢。
您需要将想要查看的$_GET变量添加到分页中的链接中,否则在第一次请求后将无法使用它们。
例如:
if ($page > 1)
$pagination.= "<a href='"$targetpage?id=$id&page=$prev&something=$_GET['something']'">Previous</a>";
else
$pagination.= "<span class='"disabled'">Previous</span>";
我还注意到您的$_GET变量在链接中设置错误。
这个
<a href='"$targetpage?id=$id?page=$lastpage'">$lastpage</a>
应该是
<a href='"$targetpage?id=$id&page=$lastpage'">$lastpage</a>
将任何其他变量添加到会话中可能会更容易,因此如果有多个变量,则无需担心将它们添加到查询字符串中。
页面:-pagination.func.inc.php
<style type="text/css">
ul.pagination {
font-family: "Arial", "Helvetica", sans-serif;
font-size: 13px;
height:auto;
list-style-type: none;
margin: 20px 0;
overflow: hidden;
padding: 0;
}
ul.pagination li.details {
background-color: white;
border-color: #C8D5E0;
border-image: none;
border-style: solid;
border-width: 1px 1px 2px;
color: #1E598E;
font-weight: bold;
padding: 6px 10px;
text-decoration: none;
}
ul.pagination li.dot {
padding: 3px 0;
}
ul.pagination li {
float: left;
list-style-type: none;
margin: 0 3px 0 0;
}
ul.pagination li:first-child {
margin-left: 0;
}
ul.pagination li a {
color: black;
display: block;
line-height:normal;
padding: 7px 10px;
text-decoration: none;
}
ul.pagination li a img {
border: medium none;
}
ul.pagination li a.current {
background-color:#08569D;
color:#fff;
}
ul.pagination li a.current:hover {
/*background-color: white;
color: #333333; */
}
ul.pagination li a:hover {
/*background-color: #C8D5E0; */
background-color:#08569D;
color:#fff;
}
ul.pagination li a {
background-color: #F6F6F6;
border-color: #C8D5E0;
border-image: none;
border-style: solid;
border-width: 1px ;
color: #1E598E;
display: block;
font-weight: bold;
padding: 8px 10px;
text-decoration: none;
}
ul.pagination li.details {
border: 1px solid #DDDDDD;
color: #999999;
}
</style>
<?php
function pagination_function($per_page = 10, $page = 1, $url = '', $total)
{
$adjacents = "2";
$page = ($page == 0 ? 1 : $page);
$start = ($page - 1) * $per_page;
$prev = $page - 1;
$next = $page + 1;
$firstpage = 1;
$lastpage = ceil($total/$per_page);
$lpm1 = $lastpage - 1;
$pagination = "";
if($lastpage > 1)
{
$pagination .= "<ul class='pagination'>";
//$pagination .= "<li class='details'>Page $page of $lastpage</li>";
if($page == '1')
{
$pagination .= "<li class='details'>First</li>";
$pagination .= "<li class='details'>Previous</li>";
}
else
{
$pagination.= "<li><a href='{$url}$firstpage'>First</a></li>";
$pagination .= "<li><a href='{$url}$prev'>Previous</a></li>";
}
if ($lastpage < 7 + ($adjacents * 2))
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<li><a class='current'>$counter</a></li>";
else
$pagination.= "<li><a href='{$url}$counter'>$counter</a></li>";
}
}
elseif($lastpage > 5 + ($adjacents * 2))
{
if($page < 1 + ($adjacents * 2))
{
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($counter == $page)
$pagination.= "<li><a class='current'>$counter</a></li>";
else
$pagination.= "<li><a href='{$url}$counter'>$counter</a></li>";
}
$pagination.= "<li class='dot'>...</li>";
$pagination.= "<li><a href='{$url}$lpm1'>$lpm1</a></li>";
$pagination.= "<li><a href='{$url}$lastpage'>$lastpage</a></li>";
}
elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
{
$pagination.= "<li><a href='{$url}1'>1</a></li>";
$pagination.= "<li><a href='{$url}2'>2</a></li>";
$pagination.= "<li class='dot'>...</li>";
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
{
if ($counter == $page)
$pagination.= "<li><a class='current'>$counter</a></li>";
else
$pagination.= "<li><a href='{$url}$counter'>$counter</a></li>";
}
$pagination.= "<li class='dot'>..</li>";
$pagination.= "<li><a href='{$url}$lpm1'>$lpm1</a></li>";
$pagination.= "<li><a href='{$url}$lastpage'>$lastpage</a></li>";
}
else
{
$pagination.= "<li><a href='{$url}1'>1</a></li>";
$pagination.= "<li><a href='{$url}2'>2</a></li>";
$pagination.= "<li class='dot'>..</li>";
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<li><a class='current'>$counter</a></li>";
else
$pagination.= "<li><a href='{$url}$counter'>$counter</a></li>";
}
}
}
if ($page < $counter - 1){
$pagination.= "<li><a href='{$url}$next'>Next</a></li>";
$pagination.= "<li><a href='{$url}$lastpage'>Last</a></li>";
}else{
$pagination .= "<li class='details'>Next</li>";
$pagination .= "<li class='details'>Last</li>";
//$pagination.= "<li><a class='current'>Next</a></li>";
// $pagination.= "<li><a class='current'>Last</a></li>";
}
$pagination.= "</ul>'n";
}
return $pagination;
}
?>
您的页面
<?php
include("connect.php");
require_once('pagination.func.inc.php');
$id = $_REQUEST["id"];
$pageno = addslashes(trim($_REQUEST['page']));
if($pageno !=''){$pageno = $pageno;}else{$pageno = '1';}
//Your Query
$query = "SELECT COUNT(*) as num FROM data";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages[num]; // Total Record
$targetpage = "pagetest.php";
$limit = 10; // Par page limit
//Here your While/Foorlop/foreach condition
$get_pageurl = $targetpage ."?page=";
echo $pagination_function = pagination_function($limit,$pageno,$get_pageurl,$total_pages);
?>