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

分页思路:

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>&nbsp;</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());

 

posted @ 2015-10-09 01:13  lesuso  阅读(278)  评论(0编辑  收藏  举报