chenjq 发表于 2010-4-30 11:52:48

新手。
这个分页类具体怎么使用啊,请高手给一段代码,代码里最好有model、view、controller。
我自己使用了,可是报如下错:
A PHP Error was encountered
Severity: Warning
Message: 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);有什么作用。


在线等待......

chenjq 发表于 2010-4-30 11:54:21

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

atxlin 发表于 2010-4-30 17:20:51

这个如何使用?

jingsong27 发表于 2010-5-1 16:47:49

顶你一个

jackbang 发表于 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 内容就是原字符串 subject、matches 为第一个合乎规则的字符串、matches 就是第二个合乎规则的字符串,余类推。若省略参数 matches,则只是单纯地比对,找到则返回值为 true。

$tt就是比较的结果,你在控制器方法里可以看到
if($tt){
    $page=$tt;
   }
   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;
}
基本上就是这样了,不知可否,给初学者一个入门吧,我也是初学者。谢谢!

vsgeping 发表于 2010-5-27 13:47:58

强烈支持

xpengzp 发表于 2010-6-15 15:26:04

本帖最后由 xpengzp 于 2010-6-19 22:16 编辑

Controller:

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;
      } 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 代码:

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 代码:

<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>
<?phpforeach($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>
<?phpendforeach; ?>
<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()方法

zhanglei_0202 发表于 2010-6-28 18:01:26

太好了,谢谢LZ,东西拿走了

lany415e 发表于 2010-8-4 09:50:52

Message: preg_match() : Unknown modifier '.'

这个错误怎么办啊。

lovepinkor 发表于 2010-8-30 19:36:05

正在学习相关的东西
谢谢楼主~
页: 1 2 [3] 4
查看完整版本: 新版 CodeIgniter 分页类及其用法