超简单无刷新分页、PHP分页、HTML分页、实用

简单的无刷新分页,了解一下

直接上代码:

<?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>

到此就完成了简单的无刷新分页!

新收获,新进展!

猜你喜欢

转载自blog.csdn.net/weixin_42350070/article/details/81393439