简单的无刷新分页,了解一下
直接上代码:
<?php
header('content-type:text/html;charset=utf-8');
/**
* 数据处理
* @param array $data 数据数组
* @param int $shownum 每页显示记录数
* @return array 返回值
*/
function selectdata($data,$shownum){
$p = !empty($_GET['p']) && (intval($_GET['p']) > 1)? intval($_GET['p']) : 1 ; //当前页
$count = count($data); //总数
$totalp = ceil($count/$shownum); //总页数
if ($p > $totalp){ //判断当前页大于总页码的时候 等于总页码
$p = $totalp;
}
$loff = ($p-1)*$shownum; //Limit 偏移量,因为Limit初始值是0,所以当前页要减1
$newdata = array();
$datakey = 0;
for ($ival = 1;$ival <= $totalp;$ival++){
for ($ik = 0;$ik < $shownum;$ik++){
if (isset($data[$datakey])){
$newdata[$ival][] = $data[$datakey];
$datakey++;
}
}
}
$arr['p'] = $p;
$arr['data'] = $newdata;
$arr['page'] = page($count,$shownum,$p);
return $arr;
}
/**
* 分页函数
* @param int $count 总数
* @param int $shownum 每页显示记录数
* @param int $p 当前页
* @return string 返回值
*/
function page($count,$shownum,$p = 1){
$totalp = ceil($count/$shownum); //总页数
$midnum = 10; //中间页码数
$poff = floor($midnum/2); //页码左右偏移量
if ($p > $totalp){ //判断当前页大于总页码的时候 等于总页码
$p = $totalp;
}
if ($midnum > $totalp){ //判断中间页码大于总页码的时候 等于总页码
$midnum = $totalp;
}
if ($midnum % 2) { //判断基偶数,动态生成起始页数和结束页数
$istart = $p - $poff;
$iend = $p + $poff;
}else{
$istart = $p - $poff;
$iend = $p + $poff - 1;
}
if ($istart < 1){ //如果起始页数小于1则等于1,结束页数则等于中间页码数
$istart = 1;
$iend = $midnum;
}
if ($iend > $totalp){ //如果结束页数大于总页数则等于总页数,起始页数则等于总页数减中间页码数+1
// $istart = $istart - ($iend - $tcount);
$istart = ($totalp - $midnum) + 1;
$iend = $totalp;
}
$pagehtml = '<ul><li><span>总 '.$totalp.' 页</span></li>';
if ($p > 1){
$pagehtml .= '<li><a href="?p=1">第一页</a></li>';
$pagehtml .= '<li><a href="?p='.($p-1).'">上一页</a></li>';
}
if ($p > $midnum){
$pagehtml .= '<li><a href="?p='.($p-$midnum).'">上'.$midnum.'页</a></li>';
}
for ($inum = $istart;$inum <= $iend; $inum++){
if ($p == $inum){
$pagehtml .= '<li><span>'.$inum.'</span></li>';
}else{
$pagehtml .= '<li><a href="?p='.$inum.'">'.$inum.'</a></li>';
}
}
if (($p+$midnum) <= $totalp){
$pagehtml .= '<li><a href="?p='.($p+$midnum).'">下'.$midnum.'页</a></li>';
}
if ($p < $totalp){
$pagehtml .= '<li><a href="?p='.($p+1).'">下一页</a></li>';
$pagehtml .= '<li><a href="?p='.$totalp.'">最后页</a></li>';
}
$pagehtml .= '</ul>';
return $pagehtml;
}
/*---------------
* 调用
----------------*/
$dataarr = array(
0 =>
array(
'title' => '标题--0',
),
1 =>
array(
'title' => '标题--1',
),
2 =>
array(
'title' => '标题--2',
),
3 =>
array(
'title' => '标题--3',
),
4 =>
array(
'title' => '标题--4',
),
5 =>
array(
'title' => '标题--5',
),
6 =>
array(
'title' => '标题--6',
),
7 =>
array(
'title' => '标题--7',
),
8 =>
array(
'title' => '标题--8',
),
9 =>
array(
'title' => '标题--9',
),
10 =>
array(
'title' => '标题--10',
),
11 =>
array(
'title' => '标题--11',
),
12 =>
array(
'title' => '标题--12',
),
13 =>
array(
'title' => '标题--13',
),
14 =>
array(
'title' => '标题--14',
),
15 =>
array(
'title' => '标题--15',
),
16 =>
array(
'title' => '标题--16',
),
17 =>
array(
'title' => '标题--17',
),
18 =>
array(
'title' => '标题--18',
),
19 =>
array(
'title' => '标题--19',
),
20 =>
array (
'title' => '标题--20',
),
21 =>
array (
'title' => '标题--21',
),
22 =>
array (
'title' => '标题--22',
),
23 =>
array (
'title' => '标题--23',
),
24 =>
array (
'title' => '标题--24',
),
25 =>
array (
'title' => '标题--25',
),
26 =>
array (
'title' => '标题--26',
),
27 =>
array (
'title' => '标题--27',
),
28 =>
array (
'title' => '标题--28',
),
29 =>
array (
'title' => '标题--29',
),
);
$shownum = 5; //每页显示记录数
$retarr = selectdata($dataarr,$shownum);
$pkey = $retarr['p'];
$datas = $retarr['data'];
$pages = $retarr['page'];
?>
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<title>Page</title>
<script type="text/javascript" src="jquery-1.8.3.min.js"></script>
<script type="text/javascript">
$(function () {
$(document).on('click','#listpage ul li a',function () {
var url = $(this).attr('href');
var timestamp=new Date().getTime();
url = url+'&'+timestamp+'='+timestamp;
$('#IFramePageLoadShowIds').contents().find('body').html('');
$('#IFramePageLoadShowIds').attr('src',url);
var inteobj = setInterval(function () {
var html = $('#IFramePageLoadShowIds').contents().find('#listpage').html();
if (html){
$('#listpage').html(html);
clearInterval(inteobj);
}
},1);
return false;
});
})
</script>
<style type="text/css">
.pagecla{margin-top: 50px;overflow: auto;margin-left: 200px;}
ul{padding: 0;float: left;}
ul li{float: left;border: 1px solid #ccc;text-align: center;margin-right: 10px;margin-bottom: 10px;list-style-type:none;line-height: 25px;}
ul li a{text-decoration:none;display: block;color: #fff;background: #5ca7df;padding: 2px 10px;}
ul li span{display: block;padding: 2px 10px;}
.list{margin-bottom: 35px;}
.list table{border-collapse: collapse;}
.list tr,td,th{border: 1px solid #ccc;border-collapse: collapse;padding: 5px 50px;}
</style>
</head>
<body>
<div class="pagecla" id="listpage">
<div class="list">
<table>
<tr>
<th>标题</th>
</tr>
<?php if (isset($datas[$pkey])) {
foreach ($datas[$pkey] as $item => $val) { ; ?>
<tr>
<td><?php echo $val['title'] ;?></td>
</tr>
<?php
}
}
; ?>
</table>
</div>
<?php echo $pages;?>
</div>
</body>
<iframe id="IFramePageLoadShowIds" src="" hidden></iframe>
</html>
到此就完成了简单的无刷新分页!
新收获,新进展!