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 就是要分页显示的那张 ...
随机推荐
- jsp语法与标签
语法: <% 多行java代码 %> 在一个JSP页面中可以有多个脚本片断,在两个或多个脚本片断之间可以嵌入文本.HTML标记和其他JSP元素. 举例: <% int x = 10; ...
- 2017-1-9css
2017-1-9css css border-image详解 http://www.360doc.com/content/14/1016/13/2792772_417403574.shtml 最简单的 ...
- 怎样卸载goldengate
1. Log on to the database server (as oracle) where the GoldenGate software isinstalled.2. Change dir ...
- hdu 4544 湫湫系列故事——消灭兔子
http://acm.hdu.edu.cn/showproblem.php?pid=4544 优先队列+贪心. #include <cstdio> #include <queue&g ...
- LeetCode_Decode Ways
A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...
- Altium Designer规划电路板
所谓规划电路板就是根据电路的规模以及用户的需求,确定所要制作电路板的物理外形尺寸和电气边界.电路板规划的原则是在满足用户要求的前提下,使板面美观而且利于后面的布线工作. 1. 定义板的外 ...
- Qt自定义带游标的slider,在滑块正上方显示当前值(类似于进度条,用一个额外的QLabel冒充QSilder的一部分,然后move就行了)
首先自定义QSlider的子类MyCustomSlider,如下所示. mycustomslider.h #ifndef MYCUSTOMSLIDER_H #define MYCUSTOMSLIDER ...
- Android attrs.xml文件中属性类型format值的格式
"reference" //引用 "color" //颜色 "boolean" //布尔值 "dimension" // ...
- 基本排序算法:Python实现
基本排序算法,包括冒泡排序,插入排序,选择排序,堆排序,快速排序等. [冒泡排序] 复杂度是n*n #coding:utf8 #author:HaxtraZ #description:冒泡排序 def ...
- 杜教的AAA树
膜膜膜,常数挺小的... #include<iostream> #include<cstdio> #include<cmath> #include<algor ...