PHP从零单排(十四)数据分页显示的原理及实现_PHP教程

WBOY
Freigeben: 2016-07-13 10:30:34
Original
762 Leute haben es durchsucht

分页显示是WEB编程中最频繁处理的环节之一。所谓分页显示,就是通过程序将结果集一段一段的来显示。实现分页显示,需要两个初始参数:每页显示多少记录和当前是第几页。再加上完整的结果集,就可以实现数据的分页显示。至于其他功能,比如上一页、下一页等均可以根据以上信息加以处理得到。

要取得某表中的前10条记录,可以使用如下SQL语句:

SELECT * FROM a_table LIMIT 0,10
Nach dem Login kopieren

要查找第11到第20条记录,使用的SQL语句如下所示:

SELECT * FROM a_table LIMIT 10,10
Nach dem Login kopieren

如要查找第21条到第30条记录,使用的SQL语句如下所示:

SELECT * FROM a_table LIMIT 20,10
Nach dem Login kopieren

以上SQL语句可以看出,每次取10条记录,相当于每个页面显示10条数据,而每次所要取得记录的起始位置和当期页数之间存在着这样的关系:起始位置=(当前页数-1)*每页要显示的记录数。如果以变量$page_size表示每页显示的记录数,以变量$cur_page表示当前页数,那么上述可以用下面所示的SQL语句模板归纳:

select * from table limit ($cur_page-1)*$page_size,$page_size;
Nach dem Login kopieren

这样,就得到了分页情况下获取数据的SQL语句。其中$page_size可以根据实际情况制定为一个定值,实际开发中,当前页面$cur_page可以由参数传入。另外,数据要显示的总页数,可以在记录总数和每页显示的记录数之间通过计算获得。比如,如果总记录数除以每页显示的记录数后,没有余数,那么总页数就是这二者之商。

<?php
$host='localhost';
$user_name='root';
$password='helloworld';
$conn=mysql_connect($host,$user_name,$password);
if(!$conn)
{
	die('FAIL!'.mysql_error());
}
mysql_select_db('test');
if(isset($_GET['page']))
{
	$page=$_GET['page'];
}
else
{
	$page=1;
}
$page_size=2;
$sql='select * from users';
$result=mysql_query($sql);
$total=mysql_num_rows($result);
if($total)
{
	if($total<$page_size)
	$page_count=1;
	if($total%$page_size)
	{
		$page_count=(int)($total/$page_size)+1;
	}
	else
	{
		$page_count=$total/$page_size;
	}
}
else
{
	$page_count=0;
}
$turn_page='';
if($page==1)
{
	$turn_page.='Index | Before |';
}
else
{
	$turn_page.='Index | Before |';
}
if($page==$page_count || $page_count==0)
{
	$turn_page.='Next | Last';
}
else
{
	$turn_page.=' Next  |  Last ';
}
$sql='select id,name,sex,age from users limit '.($page-1)*$page_size.','.$page_size;
$result=mysql_query($sql) OR die ("<br/>ERROR:<b>".mysql_error()."</b><br/>SQL:".$sql);
?>
<html>
<head>
<title>13-8.php</title>
</head>
<body>
<table width="75%" border="0" cellpadding="0" cellspacing="1" bgcolor="#7b7b84">
<tr bgcolor="#8bbcc7">
<td height="33"><div align="center"><strong>ID</strong></div></td>
<td><div align="center"><strong>Name</strong></div></td>
<td><div align="center"><strong>Sex</strong></div></td>
<td><div align="center"><strong>Age</strong></div></td>
</tr>
<?php
if($num=mysql_num_rows($result))
{
	while($row=mysql_fetch_array($result,MYSQL_ASSOC))
	{
		?>
		<tr bgcolor="#FFFFFF">
		<td height="22" align="right"><?php echo $row['id']; ?> </td>
		<td height="22"> <?php echo $row['name']; ?> </td>
		<td height="22"> <?php echo $row['sex']; ?> </td>
		<td height="22"> <?php echo $row['age']; ?> </td>
	</tr>

	<?php

	}
}
echo $turn_page;
mysql_close($conn);
?>
</body>
</html>
Nach dem Login kopieren

**********************

POST GET ,是提交表单的两种方式,GET传值就用$_GET获取,POST提交表单就用$_POST
post与get的区别是一个在地址栏显示参数,另一个不显示

举个例子,如果你登录的时候用get方式,那么你的值就会在地址栏上显示,这样就无安全性可言
而你在搜索或者有页码的时候 用post把参数在地址栏上隐藏起来,这样就毫无意义

而用$_GET可以获得浏览器地址栏上的参数的值(?问号后面的一串字符),比如www.baidu.com/s?wd=123,那么你用$_GET,就可以获取参数(你可以理解为事件,动作,或者参数,该值在传递表单时与input的name一致)为wd的值123,多个参数用&符连接,比如?an=0&si=5理解为an参数的值为0与si参数的值为5。

**********************

打个比方说,你输入一个地址叫 www.iron-feet.cn/?page=2
$_GET["page"]就是获得地址上这个page的值,即得到2

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/765065.htmlTechArticle分页显示是WEB编程中最频繁处理的环节之一。所谓分页显示,就是通过程序将结果集一段一段的来显示。实现分页显示,需要两个初始参数...
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage