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 就是要分页显示的那张 ...
随机推荐
- 基于verilog的FPGA编程经验总结(XILINX ISE工具)
1.用ISE仿真的时候.所用变量一定要初始化. ISE默认初始量为"XXXXX", 而Quarters是默认为"00000"的, 其实实际上, 下到FPGA里后 ...
- no-cache、max-age=0、must-revalidate区别
之前深入搜索了多次,根据stackoverflow的回答进行一些总结(http://stackoverflow.com/questions/18148884/difference-between-no ...
- 单片机设计与KeilC编程总结
1基本原则 质量是关键.没有人会对很差的工作感到满足.当完成高质量的工作时,你会为此而感到骄傲.不管你是否知道,你都会因为你的高质量工作而得到信誉.因此,要想为自己所做的事感到骄傲,就需要建立个 ...
- COJ 0979 WZJ的数据结构(负二十一)
WZJ的数据结构(负二十一) 难度级别:C: 运行时间限制:5000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 请你实现一个数据结构,完成这样的功能: 给你一个 ...
- Manor
Description Bob有n个正整数,他将这n个整数根据大小划分成两部分.对于小于等于k的整数放在集合A中,其余的放在集合B中.每次他从集合B中取出一个最大的值,将其变成0放入A集合中.然后将A ...
- HDOJ 1197 Specialized Four-Digit Numbers
Problem Description Find and list all four-digit numbers in decimal notation that have the property ...
- C++中的string类(2)
相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯 ...
- 二叉树后序遍历的非递归算法(C语言)
首先非常感谢‘hicjiajia’的博文:二叉树后序遍历(非递归) 这篇随笔开启我的博客进程,成为万千程序员中的一员,坚持走到更远! 折磨了我一下午的后序遍历中午得到解决,关键在于标记右子树是否被访问 ...
- 【转】windows下vs2008/2010+opencv2.2开发环境搭建
版权声明:本文为博主原创文章,未经博主允许不得转载. 1.下载安装Cmake 2.用cmake配置opencv2.2,然后编译,安装 3. 在vs2008中配置opencv2.2 4.Demo 1.下 ...
- JS-Array数组内置对象
直接上代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...