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

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

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

SELECT * FROM a_table LIMIT 0,10

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

SELECT * FROM a_table LIMIT 10,10

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

SELECT * FROM a_table LIMIT 20,10

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

select * from table limit ($cur_page-1)*$page_size,$page_size;

这样,就得到了分页情况下获取数据的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.=‘<a href=13-8.php?page=1>Index</a> | <a href=13-8.php?page=‘.($page-1).‘>Before</a> |‘;
}
if($page==$page_count || $page_count==0)
{
	$turn_page.=‘Next | Last‘;
}
else
{
	$turn_page.=‘<a href=13-8.php?page=‘.($page+1).‘> Next </a> | <a href=13-8.php?page=‘.$page_count.‘> Last </a>‘;
}
$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>

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

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

PHP从零单排(十四)数据分页显示的原理及实现,布布扣,bubuko.com

时间: 2024-10-24 11:36:21

PHP从零单排(十四)数据分页显示的原理及实现的相关文章

Android基础之十四数据存储 之 SQLite数据库详解

Android基础之十四数据存储 之 SQLite数据库详解 SQLite 是一款 轻量级的关系型数据库,它的运算速度非常快,占用资源很少,通常只需要几百 K 的内存就足够了,因而特别适合在移动设备上使用. SQLite 不仅支持标准的 SQL 语法,还遵循了数据库的 ACID( 原子性(Atomicity) .一致性(Consistency) . 隔离性(Isolation) . 持久性(Durability))事务,所以只要你以前使用过其他的关系型数据库,就可以很快地上手 SQLite.而

Servlet——实现数据分页显示

Servlet实现数据分页显示 1.数据分页的应用 在很多情况下,Web网页的显示结果都很多,不可能在一个页面完全显示出来,这时候就需要用到数据分页 比如我们很熟悉的Google搜索结果: 那么怎么通过Servlet实现这个功能呢? 2.Servlet连接数据库 首先我们的数据是存放在数据库中,那么就需要Servlet去连接数据库,从而获取数据. Servlet连接数据库的步骤同JavaSE连接数据库的操作一样其实Servlet本身也就是Java. 首先需要准备Java连接数据库的相关jar包不

实现数据在前台动态显示之分页的实现(将DataSet中的数据分页显示)

在实现前台动态显示数据时有多种方法,但使用到将DataSet中的数据分页这一方法时发现很多地方都能用得到,在这里记录一下. /// <summary> /// 分页的实现(将DataSet中的数据分页显示) /// </summary> /// <param name="ds"></param> /// <returns></returns> public DataSet SplitDataSet() { Data

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

通常情况下,一个页面加载大量的数据时,数据不可能同时显示出来.这时候,比较常用的方法就是滚动条和分页.看过电子书的孩子都知道,电子书那么多字,一个手机或pad的屏幕是无法全部显示的,开玩笑,一本几兆的书就好几百万字,一下子放到几寸的屏幕上,不得亮瞎你的眼.所以我们都是下滑使文字进行滚动或翻页.这篇博文就用来分享一下php的分页技术. 首先获取数据库中某表的数据,输出到网页上,然后再进行分页显示.一句话就讲明白了,但具体怎么分页的,请看代码. <?php header("content-ty

html、java、mysql数据交互之数据分页显示

在上文中我们已经从数据库中获取到了数据,并且可以显示在html页面上.本文是继上文之后,将获取到的数据集进行处理之后显示在页面上. 从所接触的知识面,这里想到了有两种方案. 一.使用容器将获得的数据保存起来,然后显示到页面上. 二.重写ResultSet类方法,实现ResultSet的分页,并使用jsp显示到页面上. 两种方式都可行,考虑到大数据的效率问题,这里选择了方法二. 一.重写ResultSet类,实现记录集的分页 1.添加Pageable接口 package com.cn.page;

ASP.NET使用ListView数据绑定控件和DataPager实现数据分页显示(一)

为什么使用ListView+DataPager的方式实现分页显示? .net提供的诸多数据绑定控件,每一种都有它自己的优点和缺点.如果需要对数据进行操作,如果数据量不大的情况下,DataList和GridView是最好的选择,但是他们会生产额外的<table><tr><tbody><td>标签.如果只是罗列出来一些简单的数据,出于对性能的考虑,repeater必然是首选.当然ListView和DataPager的组合必将是开发中的黄金组合,无论从性能上和功能

php分页例子实现读取mysql数据分页显示

以下代码是PHP分页案例,测试通过,主要是PHP+mysql实现分页,代码来处百度空间,有兴趣看的话可以了解一下PHP是如何分页的? <?php $link = mysql_connect("localhost","root", "2855") //连接数据库 or die("连接不上服务器:".mysql_error()); mysql_select_db("aming"); $ittype=$_G

10.28 (上午) 开课一个月零二十四天 (数据访问)

<?php //建一个连接,造一个连接对象 $db = new MySQLi("localhost","root","123","mydb"); //判断是否出错 if(mysqli_connect_error()) { echo "连接失败!"; exit; } mysqli_connect_error()?die("连接失败"):""; //写SQL语句 $

jQuery 源码分析(十四) 数据操作模块 类样式操作 详解

jQuery的属性操作模块总共有4个部分,本篇说一下第3个部分:类样式操作部分,用于修改DOM元素的class特性的,对于类样式操作来说,jQuery并没有定义静态方法,而只定义了实例方法,如下: addClass(value) ;为匹配元素集合中的每个元素添加一个或多个类样式,通过修改DOM属性className来修改类样式,value可以是个以空格分隔的类样式或者一个函数(返回一个或多个以空格分隔的类样式) hasClass(selector)   ;检测匹配元素中的任意元素是否含有指定的类