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 就是要分页显示的那张 ...
随机推荐
- 第几天 switch做法 杭电
第几天? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- Android中layout_weight的属性理解
https://www.zybuluo.com/zzudhj/note/102067 在Android开发过程中,在编写布局文件经常会用layout_weight属性:从字面意思上看权重.比值.按比例 ...
- 第三方账号登录--QQ登录,以及QQ微博账号登录
在QQ登陆测试的时候,刚申请正常登陆,但是由于app未上线,或许是腾讯升级造成的个别时候QQ登陆无法成功会提示下图代码,功能上没啥问题,已经达到 测试效果了.附上腾讯错误代码图(大家测试QQ登陆的时候 ...
- 系统学下POWERSHELL吧,工作当中可能用得到呢。不能像以前那样修修改改了。
把环境,编辑器,版本这些都弄清楚,说不好还能把FCL类库弄懂个大概???:) [DateTime]::IsLeapYear(2008) $result = [DateTime]"06/21/ ...
- C++代码覆盖率工具Coverage Validator
市面上的C++代码覆盖率工具大都收费,Coverage Validator也不例外.Coverage Validator应该少有人听过,我也是在stackoverflow里听别人介绍的.所以下载了试用 ...
- tigerVNC远程桌面,跨内网
tigerVNC的简单使用教程(CentOS的远程桌面连接) 1.环境和软件准备 (1) CentOS 6.5下 [root@localhost ~]$ yum install tigervnc (2 ...
- asp.net 1.1网站开发配置出现”Visual Studio .NET 无法创建或打开应用程序”解决方法
可能的解决方案: 1.注册.net framework 1.1 C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis /i 2,如果配置 ...
- ASP.NET MVC framework 学习
http://www.cnblogs.com/lmfeng/archive/2013/03/28/2986123.html MVC数据绑定方式 http://www.cnblogs.com/lmfe ...
- HDU_2043——判断密码是否安全
Problem Description 网上流传一句话:"常在网上飘啊,哪能不挨刀啊-".其实要想能安安心心地上网其实也不难,学点安全知识就可以.首先,我们就要设置一个安全的密码. ...
- [饭后算法系列] 数组中"和非负"的最长子数组
1. 问题 给定一列数字数组 a[n], 求这个数组中最长的 "和>=0" 的子数组. (注: "子数组"表示下标必须是连续的. 另一个概念"子 ...