php、mysql数据库分页功能两种方法

利用php将数据库中的数据进行分页显示,有两种方法,但是无论第一种方法。,还是第二种方法都需要判断是否传入参数,和参数默认值问题


<?php
if(!isset($_GET['page'])){//如果没有传入参数page
	$page=1;//这里需要考虑地址栏是否传入参数page
}
?>

此时判断完成之后,第一种方法,使用sql语句进行分页
关于sql语句limit,第一个参数为起始值(不输出起始值的数据),第二个参数为输出数据的个数

<?php
$con=mysqli_connect('localhost','root','');//连接数据库
mysqli_query($con,'use test');
$page=isset($_GET['page'])?$_GET['page']:1;//从页面中获取page,有时在第一页时没有page参数需要写入默认值

function getall($con,$tablename){//获取返回的数据条数
	$sql='select * from '.$tablename;
	$result=mysqli_query($con,$sql);
	return mysqli_num_rows($result);
}
$perpage=2;//每页数据两条
$allnum=getall($con,'goods');
$totalpage=ceil($allnum/$perpage);//计算出页数总数,如果最后一页没有够每页显示数据的条数,此时也需要将最后不完整的一页输出
if($page>$totalpage){//此时如果在地址栏中被改动到一个更大的数值,
	$page=$totalpage;//将这个更大的值更改为最大页数
}
$sql='select * from goods limit '.(($page-1)*$perpage).','.$perpage;
$result=mysqli_query($con,$sql);
foreach ($result as $key => $value) {
	print_r($value['goods_name']);
}
?>

第二种方法分页功能,原理就是将数据库的数据全部取出放入数组根据page变化

<?php
$con=mysqli_connect('localhost','root','');//连接数据库
mysqli_query($con,'use test');
$page=isset($_GET['page'])?$_GET['page']:1;//从页面中获取page,有时在第一页时没有page参数需要写入默认值
$list=[];
function getall($con,$tablename){//获取返回的数据条数
	$i=1;
	$sql='select * from '.$tablename;
	$result=mysqli_query($con,$sql);
	foreach ($result as $value) {
		$list[$i]=$value;
		$i=$i+1;
	}
	return mysqli_num_rows($result);
}
function getallmesg($con,$tablename){//获取返回所有数据
	$i=1;
	$sql='select * from '.$tablename;
	$result=mysqli_query($con,$sql);
	foreach ($result as $value) {
		$list[$i]=$value;//注意,此时数组需要从1开始,
		$i=$i+1;
	}
	return $list;
}
$list=getallmesg($con,'goods');
$perpage=2;//每页数据两条
$allnum=getall($con,'goods');
$totalpage=ceil($allnum/$perpage);
if($page>$totalpage){//此时如果在地址栏中被改动到一个更大的数值,
	$page=$totalpage;//将这个更大的值更改为最大页数
}
$message[]=$list[(($page*2)-1)];
$message[]=$list[($page*2)];
print_r($message);
?>

第二种方法详细的说明
根据数组制作分页
此时根据页数的变化将数据输出,两种方法。
如有错误,敬请指正

猜你喜欢

转载自blog.csdn.net/Xiang_lhh/article/details/105527380