Heim >Datenbank >MySQL-Tutorial >PHP+Mysql数据分页显示技术_MySQL

PHP+Mysql数据分页显示技术_MySQL

WBOY
WBOYOriginal
2016-06-01 13:02:48876Durchsuche

通常情况下,一个页面加载大量的数据时,数据不可能同时显示出来。这时候,比较常用的方法就是滚动条和分页。看过电子书的孩子都知道,电子书那么多字,一个手机或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[&#39;page&#39;]?$_GET[&#39;page&#39;]: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=&#39;700px&#39; border=&#39;1px&#39;>";
	while($row=mysql_fetch_assoc($result)){
		echo "<tr>";
		echo "<td>{$row[&#39;id&#39;]}</td>";
		echo "<td>{$row[&#39;username&#39;]}</td>";
		echo "<td>{$row[&#39;password&#39;]}</td>";
		echo "</tr>";
	}
	echo "</table>";
	
	//计算上一页和下一页
	$prevpage=$pagenum-1;
	$nextpage=$pagenum+1;

	echo "<h2><a href=&#39;index.php?page={$prevpage}&#39;>上一页</a><a href=&#39;index.php?page={$nextpage}&#39;>下一页</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[&#39;page&#39;]?$_GET[&#39;page&#39;]:1;
在这个三元运算前面加@是为了忽略掉php的Notice。因为$page属于不确定的索引。它到了代码最后的超链接才排上用场。当然,还有很多方法可以忽略掉警告,比如修改php的配置文件。这就看个人喜好了。不必纠结与一个@。

 

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

\

\

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn