日期:2014-05-16  浏览次数:20521 次

PHP结合Ajax数字分页
很久都没碰程序了,在无聊中写了一个PHP与Ajax相结合仿百度的数字分页,已经足以在日常中的运用,这里只是一个简单例子的实现,在项目运用过程中需要做一些改动,至于其改动方式得看你自己了,多余的不说了。
演示地址:http://www.phpcq.com/demo/pager.php
分页代码:
<?php
//Author:www.phpcq.com 
mysql_connect('localhost','root','') or die('Host error!');
mysql_select_db('test');
mysql_query('SET NAMES utf8');
$pageSize = 5;
$query = mysql_query("SELECT * FROM test ORDER BY id DESC LIMIT 
$pageSize");
while($row = mysql_fetch_object($query)){
    $results[] = clone $row;
}
$query = mysql_query('SELECT COUNT(*) AS count FROM test');
$count = mysql_fetch_object($query);
if('get' == $_GET['action']){
    $offset = $_GET['offset'];
    $size = ($offset - 1) * $pageSize;
    $query = mysql_query("SELECT * FROM test ORDER BY id DESC  
    LIMIT $size,$pageSize");
    while($row = mysql_fetch_object($query)){
        $row->count = $count->count;
        $result[] = clone $row;
    }
    echo json_encode($result);//数据记录
    exit();
}
if('ajax' == $_GET['action']){
    echo $count->count;//记录总数
    exit();
}
?>
<html>
<head>
  <title> This is a digital pager's demo with PHP 、Mysql and Ajax!</title>
<script type="text/javascript" src="jquery.js"></script>
<script>
$(document).ready(function(){
    $.get('pager.php',{action:'ajax'},function(data){
        var pagerString = '';
        var pageSize = 5;
        var countPage = Math.ceil(data / pageSize);
        for(i = 1;i <= countPage && 10 >= i;i++){
            if(1 == i){
                pagerString += '<a>'+i+'</a> '
            } else {
                pagerString += '<a href="javascript:void(0)" onclick="paging('
                +i+')">'+i+'</a> '
            }
        }
        $('#pager').html(pagerString);
    });
});
function paging(page){
    $.getJSON('pager.php',{offset:page,action:'get'},function(data){
        var pagerString = '';
        var htmlContentString = ''
        var pageSize = 5;
        var countPage = Math.ceil(data[0].count / pageSize);
        $.each(data,function(i,n){
            htmlContentString += '<p>Test:'+n['test']+'</P>';
        });
        for(i = page - 9;i <= page + 9 && i <= countPage;i++){
            if(0 < i){
             &nb