用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5529|回复: 3
收起左侧

[初级] 分页下删除记录时?如何使得删除后跳转到当前分页下

  [复制链接]
发表于 2014-11-3 12:00:47 | 显示全部楼层 |阅读模式
本帖最后由 ^淡如清风 于 2014-11-3 15:07 编辑
使用CI开发程序时,经常会遇到删除记录的操作。
这时如果是在分页下删除,且删除后必须返回当前分页,而不是跳到分页的首页时如何做呢?

例如:
列表控制器:/application/controllers/article.php     index()方法
模板文件:/application/views/article/index.php
删除操作:/application/controllers/article.php        dodel()方法

我们在如下链接的操作页面删除数据
当前页面URL:
  1. /index.php/article/index?page=10&title=查询的关键词
复制代码


对应的删除链接为:
  1. /index.php/article/dodel?id=102
  2. /index.php/article/dodel?id=102
复制代码


如何使得执行删除操作后,跳转到(redirect)
  1. /index.php/article/index?page=10&title=查询的关键词
复制代码


方法一:
删除链接附带参数,实现删除后跳转


1、模板文件 构造删除链接
模板文件:/application/views/article/index.php
HTML复制代码
<?php
foreach ($articles as $arc) {
   //删除url(附加的参数)
   $query_string = $_SERVER['QUERY_STRING'] ? '&' . $_SERVER['QUERY_STRING'] : '';
?>
    <a href="<?php echo site_url('article/dodel?id=' . $arc['id'] . $query_string); ?>">删除</a>
<?php
}
?>
复制代码


2、点击删除后控制器处理
PHP复制代码
/**
 * 删除招标数据
 */

public function dodel()
{
    TODO:数据库删除
 
    //跳转
    parse_str($_SERVER['QUERY_STRING'], $output);
    if (isset($output['id'])) unset($output['id']);
    $query_string = http_build_query($output);
    redirect('article/index?' . $query_string);
}
复制代码




方法二:
进入列表页时,使用CI的SESSION保存跳转参数


列表控制器:/application/controllers/article.php

1、index()方法

PHP复制代码
/**
 * 文章列表
 */

public function index()
{
        $this->load->library('session');
        //记录删除跳转查询字符串
        $dodel_query_string = $_SERVER['QUERY_STRING'] ? '&' . $_SERVER['QUERY_STRING'] : '';
        $this->session->set_userdata('dodel_query_string', $dodel_query_string);
       
        //TODO:其他逻辑,例如获取文章列表
        //$data['articles'] = ....;
       
        $this->load->view('article/index', $data);
}
复制代码


2、删除方法 dodel()
PHP复制代码
/**
 * 文章删除操作
 */

public function index()
{
        //TODO:数据库删除操作
 
        $this->load->library('session');
        parse_str($this->session->userdata('dodel_query_string'), $output);
        if (isset($output['id'])) unset($output['id']);
        $query_string = http_build_query($output);
        redirect('admin/zhaobiao/index?' . $query_string);
}
复制代码


继续补充1:可以把删除操作那块的跳转的代码转换成函数写到url_helper里面去,要用时再调用!


看不明白尽管提问,这几天我会时不时回来查看下每个楼层的回复。
有更好的方法,欢迎以回复的方式或另开帖的方式发布。我同时整理到该帖子下

评分

参与人数 1威望 +5 收起 理由
Hex + 5 赞一个!

查看全部评分

发表于 2014-11-3 12:24:47 | 显示全部楼层
千万不要太监了。。。。。哈哈 期待
发表于 2014-11-3 14:19:56 | 显示全部楼层
{:soso_e128:}
 楼主| 发表于 2014-11-3 15:05:05 | 显示全部楼层
Hex 发表于 2014-11-3 12:24
千万不要太监了。。。。。哈哈 期待

早上写着写着给美眉叫走,回来时到中午,于是回家吃饭睡觉,下午继续

本版积分规则