您的位置:首页 > 编程语言 > PHP开发

Smarty+php实现分页以及删除记录

2015-10-09 01:13 525 查看
分页思路:

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());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: