PHP分页方法和分页类

一.

<?php
// 建立数据库连接
$link = mysql_connect("localhost", "root", "111111") 
      or die("Could not connect: " . mysql_error()); 
mysql_select_db("gprs",$link);
mysql_query("SET NAMES gbk");
// 获取当前页数
if( isset($_POST['page']) )//判断是否有下面的表单post来的值
{
	$page=$_POST['page'];
}
else if(isset($_GET['page']))//判断是否有get来的值
{
	$page = intval( $_GET['page'] );
}
else
{
   $page = 1;
} 
// 每页数量
$page_size = 3; 
// 获取总数据量
$sql = "select count(*) as amount from sms_send";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
$amount = $row[0];
// 记算总共有多少页
if( $amount )
{
   if( $amount < $page_size )//如果总数据量小于$PageSize,那么只有一页
   {
    	$page_count = 1; 
	}               
   if( $amount % $page_size ) //取总数据量除以每页数的余数
   {                                    
       $page_count = (int)($amount / $page_size) + 1;           //如果有余数,则页数等于总数据量除以每页数的结果取整再加一
   }
   else
   {
       $page_count = $amount / $page_size;                      //如果没有余数,则页数等于总数据量除以每页数的结果
   }
}
else
{
   $page_count = 0;
}
// 翻页链接
$page_string = '';
if( $page == 1)
{
   $page_string .= '首页|上一页|';
}
else
{
   $page_string .= '<a href=?page=1>首页</a>|<a href=?page='.($page-1).'>上一页</a>|';
 
} 
if( ($page == $page_count) || ($page_count == 0) )
{
   $page_string .= '下一页|末页';
}
else
{
   $page_string .= '<a href=?page='.($page+1).'>下一页</a>|<a href=?page='.$page_count.'>末页</a>';
}
?>
<?php 
//截取GB2312中文字符串
function mysubstr($str, $start, $len) {
    $tmpstr = "";
    $strlen = $start + $len;
    for($i = 0; $i < $strlen; $i++) {
        if(ord(substr($str, $i, 1)) > 0xa0) {
            $tmpstr .= substr($str, $i, 2);
            $i++;
        } else
            $tmpstr .= substr($str, $i, 1);
    }
	if(strlen($str)>strlen($tmpstr))
	{   
		$tmpstr.='...';
	}
	return $tmpstr;
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>分页显示记录</title>
<script>
setTimeout("self.location.reload();",5000);//每隔5秒自动刷新一次
</script>
</head>
<style type="text/css">
.style1{ position: absolute; left: 5%; top: 220px }
</style>

<body bgcolor="#CCCCCC">
<table width="60%" style="margin-left:5%; margin-top:50px;" rules="all" border="1" bordercolor="#3300FF">
<tr style="margin-bottom:10;">总共<?php echo "<font color='#CC0033'>".$amount."</font>";?>条记录</tr>
<tr>
      <td bgcolor="#333333" width="5%"><div align="center" class="title"><font color="#FFFFFF">标志</font></div></td>
      <td bgcolor="#333333" width="15%"><div align="center" class="title"><font color="#FFFFFF">手机号码</font></div></td>
      <td bgcolor="#333333" width="65%"><div align="center" class="title"><font color="#FFFFFF">短信内容</font></div></td>
      <td bgcolor="#333333" width="15%"><div align="center" class="title"><font color="#FFFFFF">接收时间</font></div></td>
    </tr>
<?php 
	$server=$_SERVER['PHP_SELF'];
	$start=($page-1)*$page_size;
	$res=mysql_query("select targetnumber,content,time,flag from sms_send order by time desc limit $start , $page_size" ,$link);
	while($myrow = mysql_fetch_array($res))
	{?>
	<?php $myrow_q=mysubstr($myrow[1],0,20)?><!--截取10个中文汉字-->
	<tr>
		<?php echo "<td>".$myrow[3]."</td>"."<td>".$myrow[0]."</td>"."<td>".$myrow_q."</td>"."<td>".$myrow[2]."</td>";?>
		</tr>
	<?php } ?>
	</table>
	<table width="60%" style="margin-left:5%;" class="style1">
	<tr><td colspan="3" align="center">
	<form  method="post">
	<?php
		echo "共"." ".$page_count." "."页(".$page."/".$page_count.")"."  ".$page_string;
	?>
	跳到<input type="text" name="page" value="1" size="2" />页
	<input type="submit" value="go" />
	</form>
</td></tr></table>

</body>
</html>

二. 

<?php
$link=mysql_connect("localhost","root","admin")or die("connect error!");
mysql_select_db("news")or die("select db error!");

$sql="select * from admin_login ";
$result=mysql_query($sql);
$cols=mysql_num_fields($result);//总列数
$total=mysql_num_rows($result);//总条数
$num=10;//每页显示条数
$url="mysql.php";//请求的URL
$cpage=isset($_GET["page"])?$_GET["page"]:1;//当前页
$pagenum=ceil($total/$num);//总页数
$offset=($cpage-1)*$num;//开始去数据的位置
$sql="select * from admin_login limit {$offset},{$num}";
$result=mysql_query($sql);
$start=$offset+1;//开始记录页
$end=($cpage==$pagenum)?$total : ($cpage*$num);//结束记录页
$next=($cpage==$pagenum)? 0:($cpage+1);//下一页
$prev=($cpage==1)? 0:($cpage-1);//前一页

echo '<table align="center" width="800" border="1">';
while($row=mysql_fetch_row($result)){
	echo '<tr>';	
	foreach($row as $col){
		echo '<td>'.$col.'</td>';
	}
	echo '</tr>';
}
echo '<tr><td colspan="'.$cols.'" align="right">';
echo "共<b>$total</b>条记录,本页显示<b>{$start}-{$end}</b> {$cpage}/{$pagenum}";
	if($cpage==1)
		echo "  首页  ";
	else
		echo "  <a href='{$url}?page=1'>首页</a>  ";
	if($prev)
		echo "  <a href='{$url}?page={$prev}'>上一页</a>  ";
	else
		echo "  上一页  ";
	if($next)
		echo "  <a href='{$url}?page={$next}'>下一页</a>  ";
	else
		echo "  下一页  ";
	if($cpage==$pagenum)
		echo "  尾页  ";
	else
		echo "  <a href='{$url}?page={$pagenum}'>尾页</a>  ";
echo '</td></tr>';
echo '</table>';
mysql_close();
?>
效果:


三 分页类

<?php 
class Pager 
{ 
    var $_perPage; //每一页记录数

    var $_totalItems; //总记录数

    var $_totalPages; //总共页数

    var $_currentPage; // 当前页序号

    var $_listStart; //当前头条记录ID

    var $_listEnd; //当前最后条记录ID

    var $_pageStart; //第一页

    var $_pageEnd; //最后页

    var $_listPage; //循环显示当前分页列表

    var $_pageData; //当前要显示的记录

    var $_linkData; //页面传递的变量

    var $_startId; //从数据库读出的启始id

    function pager($_totalItems, $_perPage, $_linkData) 
    { 
        $this->_currentPage = max((int)@$_GET['pageId'], 1); //当前的页序号

        $this->_perPage = $_perPage; //每一页记录数

        $this->_totalItems = $_totalItems; //总记录数

        $this->_totalPages = ceil($this->_totalItems / $this->_perPage); //总页数

        $this->_linkData = $_linkData; //传递的变量

        $this->_listStart = ($this->_currentPage - 1) * $this->_perPage + 1; //当前头条记录ID

        $this->_listEnd = ($this->_currentPage != $this->_totalPages) ? $this->_currentPage * $this->_perPage : $this->_totalItems; //当前最后条记录ID

        $this->_startId = $this->_listStart -1; //从数据库读出的启始id

    } 
    function startId() // 从数据库读出的启始id

    { 
        return $this->_startId; 
    } 
    function totalItems() // 总记录数

    { 
        return $this->_totalItems; 
    } 
    function totalPages() // 总页数

    { 
        return $this->_totalPages; 
    } 
    function listStart() // 当前头条记录ID

    { 
        return $this->_listStart; 
    } 
    function listEnd() // 当前最后条记录ID

    { 
        return $this->_listEnd; 
    } 
    function currentPage() // 当前页

    { 
        return $this->_currentPage; 
    } 
    function pageStart() // 第一页

    { 
        return $this->_pageStart = "<a href=" . $_SERVER['PHP_SELF'] . ($this->_linkData) . "&pageId=1><FONT title=首页 face=webdings>9</FONT></a>"; 
    } 
    function pageEnd() // 最后页

    { 
        return $this->_pageEnd = "<a href=" . $_SERVER['PHP_SELF'] . ($this->_linkData) . "&pageId=" . $this->_totalPages . "><FONT title=尾页 face=webdings>:</FONT></a>"; 
    } 
    function upPage() // 上一页

    { 
        if ($this->_currentPage > 1 and $this->_currentPage <= $this->_totalPages) 
        { 
            $up = $this->_currentPage-1; 
            return $this->_upPage = "<a href=" . $_SERVER['PHP_SELF'] . ($this->_linkData) . "&pageId=" . $up . "><FONT title=上页 face=webdings>7</FONT></a>"; 
        } 
    } 
    function downPage() // 下一页

    { 
        $down = $this->_currentPage + 1; 
        if ($this->_currentPage < $this->_totalPages) 
            return $this->_downPage = "<a href=" . $_SERVER['PHP_SELF'] . ($this->_linkData) . "&pageId=" . $down . "><FONT title=下页 face=webdings>8</FONT></a>"; 
    } 
    function listPage() // 循环显示当前分页列表

    { 
        if ($this->_currentPage <= 5 and $this->_currentPage != "") 
        { 
            $start = 1; 
            if ($this->_totalPages < 10) $end = $this->_totalPages; 
            else $end = 10; 
        } elseif (($this->_currentPage + 5) > $this->_totalPages) 
        { 
            $start = $this->_currentPage - 5; 
            $end = $this->_totalPages; 
        } 
        else 
        { 
            $start = $this->_currentPage - 4; 
            $end = $this->_currentPage + 5; 
        } 
        for($i = $start; $i <= $end; $i++) 
        { 
            $this->_listPage .= "<a href=" . $_SERVER['PHP_SELF'] . ($this->_linkData) . "&pageId=" . $i . ">" . $i . "</a> "; 
        } 
        return $this->_listPage; 
    } 
    function jumpPage() // 跳转

    { 
        $this->_jumpPage = "<table border=0 width=100% class='fonts'><tr><td>跳转 <select name='pageId' style='height=14px' οnchange=\"location='" . $_SERVER['PHP_SELF'] . ($this->_linkData) . "&pageId='+this.value;\">"; //页面跳转

        for($i = 1; $i <= $this->_totalPages; $i++) 
        { 
            if ($i == $this->_currentPage) $selected = "selected"; 
            $this->_jumpPage .= "<option value='$i' $selected>$i</option>"; 
            unset($selected); 
        } 
        return $this->_jumpPage .= "</select> 页</td></tr></table>"; 
    } 
} 
// /范例

$totalItems = 1100; //总记录

$page = new Pager($totalItems, 20, "?a=b&c=6"); 
for($i = $page->startId(); $i <= $page->startId() + 20; $i++) 
{ 
    $data[] = array($i, $i + 1); 
} 
echo "当前开始ID:" . $listStart = $page->listStart(); 
echo "<br>"; 
echo "当前结束ID:" . $listEnd = $page->listEnd(); 
echo "<br>"; 
echo "第一页:" . $pageStart = $page->pageStart(); 
echo "<br>"; 
echo "最后页:" . $pageEnd = $page->pageEnd(); 
echo "<br>"; 
echo "上一页:" . $upPage = $page->upPage(); 
echo "<br>"; 
echo "下一页:" . $downPage = $page->downPage(); 
echo "<br>"; 
echo "列表显示:" . $listPage = $page->listPage(); 
echo "<br>"; 
echo "跳转页:" . $jumpPage = $page->jumpPage(); 
echo "<br>"; 
// print_r($data);

?>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值