欢迎投稿

今日深度:

PHP+Mysql————数据分页显示技术,mysql分页显示

PHP+Mysql————数据分页显示技术,mysql分页显示


通常情况下,一个页面加载大量的数据时,数据不可能同时显示出来。这时候,比较常用的方法就是滚动条和分页。看过电子书的孩子都知道,电子书那么多字,一个手机或pad的屏幕是无法全部显示的,开玩笑,一本几兆的书就好几百万字,一下子放到几寸的屏幕上,不得亮瞎你的眼。所以我们都是下滑使文字进行滚动或翻页。这篇博文就用来分享一下php的分页技术。

首先获取数据库中某表的数据,输出到网页上,然后再进行分页显示。一句话就讲明白了,但具体怎么分页的,请看代码。

<?php
	header("content-type:text/html;charset=utf-8");
	//连接mysql数据库
	$conn=mysql_connect("localhost","","");
	
	//选择数据库
	mysql_select_db("test");

	//设置客户端和连接字符集
	mysql_query("set names utf8");
	
	//limit要求参数
	$length=15;
	$pagenum=@$_GET['page']?$_GET['page']:1;
	
	//数据总行数
	$sqltot="select count(*) from t1";
	$arrtot=mysql_fetch_row(mysql_query($sqltot));
	$pagetot=ceil($arrtot[0]/$length);

	//限制页数
	if($pagenum>=$pagetot){
		$pagenum=$pagetot;
	}
	$offset=($pagenum-1)*$length;
	
	//从数据库获取数据
	$sql="select * from t1 order by id limit {$offset},{$length}";

	$result=mysql_query($sql);
	echo "<h1>用户信息表</h1>";
	echo "<table width='700px' border='1px'>";
	while($row=mysql_fetch_assoc($result)){
		echo "<tr>";
		echo "<td>{$row['id']}</td>";
		echo "<td>{$row['username']}</td>";
		echo "<td>{$row['password']}</td>";
		echo "</tr>";
	}
	echo "</table>";
	
	//计算上一页和下一页
	$prevpage=$pagenum-1;
	$nextpage=$pagenum+1;

	echo "<h2><a href='index.php?page={$prevpage}'>上一页</a><a href='index.php?page={$nextpage}'>下一页</a></h2>";

	//释放连接资源
	mysql_close($conn);
?>

技术要点就是在mysql中的limit。

$sql="select * from table limit m,n";
limit后面的两个参数分别是起始点与偏移量。m可以不写,自动默认为0.表示限制获取的记录从m开始到m+n结束。通过将变量作为参数传入,可以灵活的控制每页的显示数量。

翻页的时候,需要添加两个超链接,链接地址中添加$page和$prevpage,$nextpage变量,通过$prevpage和$nextpage的变化,让每页显示的数据不同。

但是仅仅做到这两点,只能保证分页显示成功,一旦页数递增到数据所在范围,就会发生没有数据,但可以继续翻页的结果。所以,为了完善分页显示,还必须限制翻页的页数。页数=总记录/单页显示记录。然后进一取整,用ceil()函数就搞定。不过,在获取到记录集之前就要进行限制,也就必须获取总记录数。这里推荐的比较好的方法就是count(*)获取总行数,然后用mysql_fetch_row将值挖出来。返回后的数组,第一个值就是总记录值。可以边看代码边理解。取得最大页数之后,一个if语句进行判断一下,就可以做到页数的限制,保证了翻到数据的最后一页就翻不过去了。

最后一点提的就是@

	$pagenum=@$_GET['page']?$_GET['page']:1;
在这个三元运算前面加@是为了忽略掉php的Notice。因为$page属于不确定的索引。它到了代码最后的超链接才排上用场。当然,还有很多方法可以忽略掉警告,比如修改php的配置文件。这就看个人喜好了。不必纠结与一个@。

上两张分页显示的图(美化和数据忽略不记,实例而以)



怎做php数据库调取数据分页显示,要php的

<?php
include("connection.php");
$perNumber=10; //每页显示的记录数
$page=$_GET['page']; //获得当前的页面值
$count=mysql_query("select count(*) from user"); //获得记录总数
$rs=mysql_fetch_array($count);
$totalNumber=$rs[0];
$totalPage=ceil($totalNumber/$perNumber); //计算出总页数
if (!isset($page)) {
$page=1;
} //如果没有值,则赋值1
$startCount=($page-1)*$perNumber; //分页开始,根据此方法计算出开始的记录
$result=mysql_query("select * from user limit $startCount,$perNumber"); //根据前面的计算出开始的记录和记录数
while ($row=mysql_fetch_array($result)) {
echo "user_id:".$row[0]."<br>";
echo "username:".$row[1]."<br>"; //显示数据库的内容
}
if ($page != 1) { //页数不等于1
?>
<a href="fenye.php?page=<?php echo $page - 1;?>">上一页</a> <!--显示上一页-->
<?php
}
for ($i=1;$i<=$totalPage;$i++) { //循环显示出页面
?>
<a href="fenye.php?page=<?php echo $i;?>"><?php echo $i ;?></a>
<?php
}
if ($page<$totalPage) { //如果page小于总页数,显示下一页链接
?>
<a href="fenye.php?page=<?php echo $page + 1;?>">下一页</a>
<?php
}
?>
================================

这个是很简单的..而且也写了注释..不知道合不合你的意..
 

php怎分页显示mysql数据库中的记录?多谢

$pageSize = 20;//定义每页显示条数
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;//取得当前页数
if ($page < 1) {
$page = 1;
}
$tsql="select count(*) as count from biao order by id desc";
$result = mysql_query($tsql);
$record = mysql_fetch_array($result);
$count = $record['count'];//这里总记录数
//总页数
$pageCount = ceil($count / $pageSize);

/* 再次检查page */
if ($page > $pageCount) {
$page = $pageCount;
}
//计算开始条数
$start = ($page - 1) * $pageSize;

//取得分页数据
$sql="select * from biao order by id desc limit $start, $pageSize";
下面代码没什么了,和你的一样了
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3690.html NewsArticle PHP+Mysql————数据分页显示技术,mysql分页显示 通常情况下,一个页面加载大量的数据时,数据不可能同时显示出来。这时候,比较常用的方法就是滚动条和分页。看过电子书的孩子...
评论暂时关闭