PHP+MySQL Smarty简单分页显示示例
一、分页程序的原理
分页程序有两个非常重要的参数:每页显示几条记录($pagesize)和当前是第几页($page)。
有了这两个参数就可以很方便的写出分页程序,我们以MySql数据库作为数据源,在mysql里
如果要想取出表内某段特定内容可以使用T-SQL语句:
select * from table limit $offset,$pagesize来实现。这里的offset是记录偏移量,它的计算方法是
$offset=$pagesize*($page-1),$pagesize是要每页显示的记录条数。
也就是说select * from table limit 10,10这条语句的意思是取出表里从第11条记录往后的10条记录。
二、主要代码解析
(1)创建用例用表myTable
create table myTable(id int NOT NULL auto_increment,news_title
varchar(50),news_cont text,add_time datetime,PRIMARY KEY(id))
(2)新建一个php命名为fenye.php
<?php
require ('../libs/Smarty.class.php');
$smarty = new Smarty;
//连接数据库
$con = mysql_connect('localhost','root','');
//数据连接的判断语句
if(!$con){
die('Could not connect!').mysql_error();
}
//选择'test'数据库(test自己随便建的数据库名称)
mysql_select_db("test",$con);
//获得记录总数
$sql = "select count(*) from mytable";
$rs = mysql_query($sql,$con);
$myrow = mysql_fetch_array($rs);
$numrow = $myrow[0];
//设定每页的记录数
$pagesize = 2;
//计算总页数
$pages = intval($numrow/$pagesize);
//如果有余数pages再加1
if($numrow%$pagesize){
$pages++;
}
//设置当前页
if(isset($_GET['page'])){
$page = intval($_GET['page']);
}else{
$page = 1;
}
//判断page越界后的情况
if($page>$pages){
echo "<script language=\"JavaScript\">\r\n";
echo " alert(\"已经是尾页了\");\r\n";
echo " history.back();\r\n";
echo "</script>";
exit;
}
if($page<=0){
echo "<script language=\"JavaScript\">\r\n";
echo " alert(\"已经是首页了\");\r\n";
echo " history.back();\r\n";
echo "</script>";
exit;
}
//计算记录偏移量
$offset = $pagesize*($page-1);
//读取指定记录数
$result = mysql_query("select *from mytable order by id desc limit $offset,$pagesize",$con);
while($row = mysql_fetch_array($result)){
$title = $row['news_title'];
$content = $row['news_cont'];
$date = $row['add_time'];
$arr[] = array("title"=>$title,"content"=>$content,"date"=>$date);
}
$smarty->assign("arr",$arr);
$smarty->assign("page",$page);
$smarty->assign("pages",$pages);
$smarty->display("fenye.html");
?>
(3)新建html命名为fenye.html (接收fenye.php数据)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<div align="center">
<table border="0" width="80%">
<tr>
<td width="30%" bgcolor="#E0E0E0"><p align="center">标题</p></td>
<td width="30%" bgcolor="#E0E0E0"><p align="center">内容</p></td>
<td width="30%" bgcolor="#E0E0E0"><p align="center">发布时间</p></td>
</tr>
{foreach from=$arr item=it}
<tr>
<td width="30%">{$it.title}</td>
<td width="30%">{$it.content}</td>
<td width="30%">{$it.date}</td>
</tr>
{/foreach}
</table>
</div>
<div align="center">
{foreach from=$pages item=i}
<a href="fenye3.php?page={$page-1}">上一页</a>
共有{$pages}页({$page}/{$pages})
<a href="fenye3.php?page={$page}"></a>
<a href="fenye3.php?page={$page+1}">下一页</a>
{/foreach}
</div>
</body>
</html>
PHP+MySQL Smarty简单分页显示示例的更多相关文章
- scroll事件实现监控滚动条并分页显示示例(zepto.js)
scroll事件实现监控滚动条并分页显示示例(zepto.js ) 需求:在APP落地页上的底部位置显示此前其他用户的购买记录,要求此div盒子只显示3条半,但一页有10条,div内的滑动条滑到一页 ...
- PHP+MySQL分页显示示例分析
Web开发是今后分布式程式开发的主流,通常的web开发都要涉及到与数据库打交道,客户端从服务器端读取通常都是以分页的形式来显示,一页一页的阅读起来既方便又美观.所以说写分页程序是web开发的一个重要组 ...
- PHP+mysql数据库简单分页实例-sql分页
前几天冷月写了一篇博文<php基础编程-php连接mysql数据库-mysqli的简单使用>,很多小伙伴在学习后都知道了php与mysql数据库的连接,今天冷月分享一个简单的分页实例 首先 ...
- scroll事件实现监控滚动条并分页显示示例(zepto.js )
今天做了一个类似于手机端京东首页的页面,效果图如下: 刷新页面的时候,标题栏(也就是搜索栏),背景是透明的,当我们往下滑的时候,可以改变标题栏的背景透明度(渐变效果): 当标题栏滑过轮播图后,透明度就 ...
- 基于MySQl的分页显示
<%@page import="java.sql.DriverManager"%> <%@page import="java.sql.ResultSet ...
- ScrollView图片分页显示-简单
用到的控件: 1>UIScrollView:宽度和图片的宽度一样,因为分页的代码就一句 // 设置分页,这个分页的原理实际上是按照ScrollView的宽进行分页的,这里的图片的宽由于和Scro ...
- java web 简单的分页显示
题外话:该分页显示是用 “表示层-控制层-DAO层-数据库”的设计思想实现的,有什么需要改进的地方大家提出来,共同学习进步. 思路:首先得在 DAO 对象中提供分页查询的方法,在控制层调用该方法查到指 ...
- php分页例子实现读取mysql数据分页显示
以下代码是PHP分页案例,测试通过,主要是PHP+mysql实现分页,代码来处百度空间,有兴趣看的话可以了解一下PHP是如何分页的? <?php $link = mysql_connect(&q ...
- 简单的JSP分页显示
1.mysql的limit关键字 (DAO) select * from tablename limit startPoint, numberPerPage; tablename 就是要分页显示的那张 ...
随机推荐
- 复杂事件处理引擎—Esper工作原理
前面对Esper进行了概述,包括事件类型.事件流.事件窗口以及EPL相关内容.当然,上面的知识,对于简单的Esper开发,应该已经足够,能够根据自己业务需求,做出一个满足需要的Esper应用.但是,真 ...
- TimeZone 时区 (JS .NET JSON MYSQL)
来源参考 : http://www.cnblogs.com/qiuyi21/archive/2008/03/04/1089456.html 来源参考 : http://walkingice.blogs ...
- android R.id.转化为view
LayoutInflater inflater=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view ...
- Android addView动态给Activity添加View组件
本文主要讲述如何动态给UI界面添加布局和控件,在编程的时候很多时候需要动态显示一些内容,在动态添加View的时候,主要使用addView方法. 1. addView方法简介 在Android 中,可以 ...
- Oracle extent
extent 上的块 物理上绝对连续 多个连续的block组成一个extent 不连续怎么多块读? Oracle 给表分配的单位是extent 去做 全表扫描的时候 以块为单位,按照extent来读取 ...
- Shell continue循环
[oracle@june ~]$ cat continue.sh for i in a b c d e f g do if [ "$i" = "c" ] the ...
- makefile高级用法--使用函数
makefile高级用法--使用函数 分类: C/C++ 使用函数 ———— 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能.make所支持的函数也不算很多, ...
- Jquery伪选择器学习笔记
对于我这个半路出家的前端,使用jquery已经很长时间了,对于选择器,一直都局限在id,class,element选择器.每次写一个元素都得想一个id,一个页面写下来想id名都想的累的慌.最近手头项目 ...
- POJ_3083——贴左右墙DFS,最短路径BFS
Description The cornfield maze is a popular Halloween treat. Visitors are shown the entrance and mus ...
- Swing UI - 可收起与开展内容面板实现演示
基于JAVA Swing实现的自定义组件可折叠的JPanel组件 基本思想: 可折叠面板,分为两个部分-头部面板与内容面板 头部面板– 显示标题,以及对应的icon图标,监听鼠标事件决定内容面板隐藏或 ...