用户
 找回密码
 入住 CI 中国社区
搜索
楼主: gwpxjb
收起左侧

[库 Library] 新版 CodeIgniter 分页类及其用法

  [复制链接]
发表于 2010-4-30 11:52:48 | 显示全部楼层
新手。
这个分页类具体怎么使用啊,请高手给一段代码,代码里最好有model、view、controller。
我自己使用了,可是报如下错:
A PHP Error was encountered
Severity: Warning
Message: preg_match() [function.preg-match]: Unknown modifier '.'
Filename: controllers/manage.php
Line Number: 60

还有$this->load->model('blog/listpage','list'); 是不是就是调用'blog/listpage'  model中的list方法
还是返回list,如果list是返回值,那么它调用的是model中的那个方法。

这段:preg_match("/index.php/.*?/(d.*)/",$_SERVER['PHP_SELF'],$tt);  有什么作用。


在线等待......
发表于 2010-4-30 11:54:21 | 显示全部楼层
求助:model中的方法怎么写?
发表于 2010-4-30 17:20:51 | 显示全部楼层
这个如何使用?
发表于 2010-5-1 16:47:49 | 显示全部楼层
顶你一个
发表于 2010-5-17 14:26:50 | 显示全部楼层
本帖最后由 jackbang 于 2010-5-17 15:02 编辑
还有$this->load->model('blog/listpage','list'); 是不是就是调用'blog/listpage'  model中的list方法还是返回list,如果list是返回值,那么它调用的是model中的那个方法。


------list是给'blog/listpage'定义的一个别名也可以叫对象名,以后就可以用$this->list->方法。
在用户指南里是这样描述的:
如果你想给你的model指派一个不同的对象名,可以在加载模型函数中指定第二个参数:
$this->load->model('Model_name', 'fubar');
$this->fubar->function();

这段:preg_match("/index.php/.*?/(d.*)/",$_SERVER['PHP_SELF'],$tt);  有什么作用。

----preg_match是字符串比对解析。返回值: 整数/数组。作用如下:
本函数以 pattern 的规则来解析比对字符串 subject。比对结果返回的值放在数组参数 matches 之中,matches[0] 内容就是原字符串 subject、matches[1] 为第一个合乎规则的字符串、matches[2] 就是第二个合乎规则的字符串,余类推。若省略参数 matches,则只是单纯地比对,找到则返回值为 true。

$tt就是比较的结果,你在控制器方法里可以看到
if($tt){
    $page=$tt[1];
   }
   else{
    $page=1;
   }

建议看一下正则表达式就知道什么意思了。

求助:model中的方法怎么写?

----看一下$data['query']=$this->list->list_page($start,$pagesize);
可知list_page()实际上就是把一个结果集赋给$query,$start是起始的记录,$pagesize是该页一共有多少条记录。
则该Model里的方法可以这样写:
function list_page($start,$pagesize);
{
//验证一下两个参数是否为数字且为正常范围值,否则异常。(该段略)
  $query = $this->db->get('mytable',$pagesize , $start);//为什么$pagesize在前,$start在后可查阅一下CI手册。
  $rows = array();
        foreach ($query->result_array() as $row){   
            $rows[] = $row;
        }
        return $rows;
}
基本上就是这样了,不知可否,给初学者一个入门吧,我也是初学者。谢谢!
发表于 2010-5-27 13:47:58 | 显示全部楼层
PHP复制代码
强烈支持
复制代码
发表于 2010-6-15 15:26:04 | 显示全部楼层
本帖最后由 xpengzp 于 2010-6-19 22:16 编辑

Controller:
PHP复制代码
 
public function arraytest() {  
        $this->load->Model('test');
        $this->load->library('showpage');
        $pagesize = 3; // 每页显示数量
        //dump($_SERVER['PHP_SELF'], 'PHP_SELF');
        preg_match("/index.php\/.*?\/(.*?)\/(\d.*)/",$_SERVER['PHP_SELF'],$tt);
        //dump($tt, 'TT');
        if ($tt) {
            $page = $tt[2];
        } else {
            $page = 1;
        }
       
        if($this->input->post('name', true) != null) {
            $this->test->count_record(array('name' => $this->input->post('name', true)));
            $total = $this->test->count_record(array('name' => $this->input->post('name', true)));
            $data['rows'] = $this->test->find_All(array('name' => $this->input->post('name', true)), null, 'name', $page*$pagesize-$pagesize, $pagesize);
        } else {
            $this->test->count_record();
            $total = $this->test->count_record();
            $data['rows'] = $this->test->find_All(null, null, null, $page*$pagesize-$pagesize, $pagesize);
        }
        $this->showpage->showpage($total, $pagesize);        
        $data['page'] = $this->showpage->getContent();
        $this->load->view('welcome_message',$data);
复制代码

   
Model 代码:
PHP复制代码
 
class Test extends Model {
    public function __construct() {
        parent::Model();
    }
   
    // 统计符合条件的记录数
    public function count_record($conditions = null) { // $conditions = array();
        if (!empty($conditions)) {
            $this->db->like($conditions);
        }
        $this->db->from('ci_areacity');
        return $this->db->count_all_results();
    }
   
    /**
     *  返回符合条件的记录集
     *
     * @var array   $conditions
     * @var array   $fields
     * @var string  $order
     * @var int     $page
     * @var int     $pagesize
     * @return array
     */

   
    public function find_All($conditions = null, $Fields = null, $order = null, $page = 0, $pagesize = 10) {
        if(!empty($conditions)) {
          $this->db->like($conditions);  
        }
        if (!empty($Fields)) {
            $this->db->select($Fields);
        }
        if (!empty($order)) {
            $this->db->order_by($order);  
        }
        $this->db->limit($pagesize, $page);
        $query = $this->db->get('ci_areacity');
        return $query->result_array();
    }
}
 
复制代码


View 代码:
HTML复制代码
 
<table width="370" border="1" cellspacing="1" cellpadding="0">
  <tr>
    <td height="40" colspan="4"><table width="666" border="0" cellspacing="0" cellpadding="0">
    <?php echo form_open('admin/arraytest'); ?>
      <tr>
        <td width="30" height="21">&nbsp;</td>
        <td width="63">名称:</td>
        <td width="175"><input type="text" name="name" id="textfield" /></td>
        <td width="50"><input type="submit" name="button" id="button" value="提交" /></td>
        <td width="48">&nbsp;</td>
      </tr>
    <?php echo form_close(); ?>
    </table></td>
  </tr>
  <tr>
    <td height="24" colspan="4">&nbsp;</td>
  </tr>
  <tr>
    <td><div align="center">ID</div></td>
    <td><div align="center">Code</div></td>
    <td><div align="center">Name</div></td>
    <td><div align="center">Action</div></td>
  </tr>
  <?php  foreach($rows as $row): ?>
  <tr>
    <td height="24"><?php echo $row['id']; ?></td>
    <td><?php echo $row['code']; ?></td>
    <td><?php echo $row['name']; ?></td>
    <td align="center">编辑 | 删除</td>
  </tr>
  <?php  endforeach; ?>
  <tr>
    <td height="24" colspan="4">&nbsp;</td>
  </tr>
  <tr>
    <td height="24" colspan="4" align="right"><?php echo $page; ?></td>
  </tr>
</table>
 
复制代码


注:本例没有使用showpage类中的getStart()方法
1.png
发表于 2010-6-28 18:01:26 | 显示全部楼层
太好了,谢谢LZ,东西拿走了
发表于 2010-8-4 09:50:52 | 显示全部楼层
Message: preg_match() [function.preg-match]: Unknown modifier '.'

这个错误怎么办啊。
发表于 2010-8-30 19:36:05 | 显示全部楼层
正在学习相关的东西
谢谢楼主~

本版积分规则