分页思路:
1.首先,获取要查询的数据总记录数($count)
$sql = ‘select count(*) from table_name‘;
2.然后,设置每页要显示的记录数($percount)
3.计算出总的页数:$pagecount = ceil($count/$percount);
4.获取当前页:通过post/get方式获取html文件中传递过来的page
$page = isset($_GET[‘page‘])?$_GET[‘page‘]:1;
5.设置上一页和下一页
//上一页
$pagePrev = $page - 1;
//下一页
$pageNext = $page + 1;
6.越界处理
//a.当前页:不可小于第一页 也不可以超过总的页数
if($page > $pageCount)
{
$page = $pageCount;
}
if($page < 1)
{
$page = 1;
}
//b.上一页不过小于第一页 下一页不可以超过最后一页
if($pagePrev < 0)
{
$pagePrev =1;
}
if($pageNext > $pageCount)
{
$pageNext = $pageCount;
}
7.通过当前页计算出查询起始位置
$offset = ($page-1)*$perCount;
8.在sql语句中设置sql语句的起始位置和步长。
//实现sql分页
$sql = "select id,title,add_time from smarty_page order by id desc limit $offset,$perCount";
fenye.html
<!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=UTF-8"> <title>逍遥分页程序</title> <style type=‘text/css‘> #news { width:800px; font-size:12px; border:1px #369 solid; border-collapse:collapse; text-align:center; } #news tr th { font-weight:bold; } #news tr th,#news tr td { border:1px #369 solid; height:30px; } </style> </head> <body> <form action="deal.php" method="post"> <table id=‘news‘> <tr> <th> </th> <th>编号</th> <th>文章标题</th> <th>发布时间</th> </tr> {foreach from=$data item=‘row‘} <tr> <td><input type=‘checkbox‘ name=‘id[]‘ value=‘{$row[‘id‘]}‘ /></td> <td>{$row[‘id‘]}</td> <td>{$row[‘title‘]}</td> <td>{$row[‘add_time‘]|date_format:‘%Y-%m-%d %H:%M:%S‘}</td> </tr> {/foreach} <tr> <td colspan=‘4‘> 当前共有{$count}条记录 <a href="fenye.php?page=1">首页</a> <a href="fenye.php?page={$pagePrev}">上一页</a> <a href="fenye.php?page={$pageNext}">下一页</a> <a href="fenye.php?page={$pageCount}">末页</a> <input type=‘submit‘ name=‘submit‘ value=‘批量删除‘ /> </td> </tr> </table> </form> </body> </html>
fenye.php
<?php /*smarty+php实现分页并实现批量删除 */ //1.载入smarty入口文件 include ‘Smarty/Smarty.class.php‘; //2.实例化对象 $smarty = new Smarty(); //3.更改smarty的默认行为 //连接数据库 mysql_connect(‘localhost‘,‘****‘,‘****‘); //选择数据库环境 mysql_query(‘use smarty_page‘); //设置字符编码 mysql_query(‘set names utf8‘); //获取分页总的记录数 $sql = ‘select count(*) as num from smarty_page‘; //执行sql语句 $res = mysql_query($sql); $row = mysql_fetch_assoc($res); $count = $row[‘num‘]; //总的记录数 //每页显示的记录数:2 $perCount = 2; //总的页数 $pageCount = ceil($count/$perCount); //当前页 $page = isset($_GET[‘page‘])?$_GET[‘page‘]:1; //上一页 $pagePrev = $page - 1; //下一页 $pageNext = $page + 1; //越界处理 //1.当前页:不可小于第一页 也不可以超过总的页数 if($page > $pageCount) { $page = $pageCount; } if($page < 1) { $page = 1; } //2.上一页不过小于第一页 下一页不可以超过最后一页 if($pagePrev < 0) { $pagePrev =1; } if($pageNext > $pageCount) { $pageNext = $pageCount; } //实现分页程序 $offset = ($page-1)*$perCount; //实现sql分页 $sql = "select id,title,add_time from smarty_page order by id desc limit $offset,$perCount"; //执行sql语句 $res = mysql_query($sql); //$data = array(); while($row = mysql_fetch_assoc($res)) { //$data[] = $row; $smarty->append(‘data‘,$row); } //4、通过assign方法分配变量到模板文件 //$smarty->assign(‘data‘,$data); $smarty->assign(‘count‘,$count); $smarty->assign(‘pagePrev‘,$pagePrev); $smarty->assign(‘pageNext‘,$pageNext); $smarty->assign(‘pageCount‘,$pageCount); //5、通过display方法显示输出模板文件 $smarty->display(‘fenye.html‘);
deal.php 删除处理文件
<?php header(‘Content-type:text/html;charset=utf-8‘); //连接数据库 mysql_connect(‘localhost‘,‘***‘,‘***‘); //选择数据库环境 mysql_query(‘use smarty_page‘); //设置字符编码 mysql_query(‘set names utf8‘); /*选中相应的id并实现删除*/ //判断用户是否提交了删除 if(isset($_POST[‘submit‘])) { //接收用户选中的记录ID $arr_id = $_POST[‘id‘]; //将数组炸开 $ids = implode(‘,‘, $arr_id); //组织SQL语句 $sql = "delete from smarty_page where id in ($ids)"; $del = mysql_query($sql); if($del) { //输出受影响的行数 echo mysql_affected_rows(); } }
数据表
create database smarty_page charset utf8; create table smarty_page( id int not null primary key auto_increment, title varchar(100) not null, add_time datetime )charset utf8; insert into smarty_page values(1,‘白俄女作家获得2015年诺贝尔文学奖‘,now()); insert into smarty_page values(2,‘北京日本人学校学生锐减‘,now()); insert into smarty_page values(3,‘滴滴快的在上海获得国内首张专车牌照‘,now()); insert into smarty_page values(4,‘美团与大众点评合并 ‘,now()); insert into smarty_page values(5,‘希拉里公开表态不支持TPP协定‘,now()); insert into smarty_page values(6,‘福建省长苏树林被查‘,now()); insert into smarty_page values(7,‘普京打冰球庆祝自己63岁生日‘,now()); insert into smarty_page values(8,‘国际足联主席布拉特被临时停职90天‘,now()); insert into smarty_page values(9,‘金正恩希望争取世界杯与奥运主办权‘,now()); insert into smarty_page values(10,‘三学者分享2015诺贝尔化学奖‘,now());
原文:http://www.cnblogs.com/lesuso/p/4862776.html