2009-09-24 69 views
0

我正在学习codeigniter并有一个问题。代码是从http://www.devshed.com/c/a/PHP/Paginating-Database-Records-with-the-Code-Igniter-PHP-Framework/

以下是模型和控制器。它并没有定义$行,但它仍然有效。 (原来有错字,所以我固定了。)

Q1。 $行从哪里来? Q2。你能解释get('users',5,$ rows);?用户必须是sql中的表,并且限制为5,但为什么我需要$ rows?

在模型中,

// get 5 rows at a time 
function getUsers($row) 
{ 
$query=$this->db->get('users',5,$row); 
if($query->num_rows()>0) 
{ 
// return result set as an associative array 
return $query->result_array(); 
} 
} 

在控制器,

$data['users']=$this->Users_model->getUsers($row); 

以下均完整码。

Users_model.php

<?php 
class Users_model extends Model 
{ 
function Users() 
{ 
    // call the Model constructor 
    parent::Model(); 
    // load database class and connect to MySQL 
    // $this->load->database(); 
} 
function getAllUsers() 
{ 
    $query=$this->db->get('users'); 
    if($query->num_rows()>0) 
    { 
     // return result set as an associative array 
     return $query->result_array(); 
    } 
} 
function getUsersWhere($field,$param) 
{ 
    $this->db->where($field,$param); 
    $query=$this->db->get('users'); 
    // return result set as an associative array 
    return $query->result_array(); 
} 
// get 5 rows at a time 
function getUsers($row) 
{ 
    $query=$this->db->get('users',5,$row); 
    if($query->num_rows()>0) 
    { 
     // return result set as an associative array 
     return $query->result_array(); 
    } 
} 
// get total number of users 
function getNumUsers() 
{ 
    return $this->db->count_all('users'); 
} 
} 

以下是控制器users.php。

<?php 
class Users extends Controller{ 
function Users(){ 
// load controller parent 
parent::Controller(); 
// load 'Users' model 
$this->load->model('Users_model'); 
} 
function display($row=0){ 
// load pagination library 
$this->load->library('pagination'); 
// set pagination parameters 
$config['base_url']='http://127.0.0.1/ci_day4/index.php/users/display/'; 
$config['total_rows']=$this->Users_model->getNumUsers(); 
$config['per_page']='5'; 
$this->pagination->initialize($config); 
// store data for being displayed on view file 
$data['users']=$this->Users_model->getUsers($row); 
$data['title']='Displaying user data'; 
$data['header']='User List'; 
$data['links']=$this->pagination->create_links(); 
// load 'testview' view 
$this->load->view('users_view',$data); 
} 
} 

回答

1

$ row是Controller的显示方法中默认值为0的参数。

第二个和第三个参数是限制和偏移量(请参阅:http://codeigniter.com/user_guide/database/active_record.html)。因此,第二个参数(limit)定义返回多少行(max),第三个参数(offset)定义结果集中的哪一行开始。例如,如果您有10行并将限制设置为5,则0的偏移量将返回前5个,偏移量5将返回下5个(第二页)行。

显示方法的参数来自地址,它是/ display /(请参阅:http://codeigniter.com/user_guide/general/controllers.html#passinguri)之后的段。

噢,谢谢你指点我这个框架,看起来像个不错的人,前些时候有人问我这样的事情,现在我知道了;)。

+0

@inkredibl:偏移量是什么意思?是的,我喜欢codeigniter。恕我直言,迄今为止最好的框架。 – shin 2009-09-24 07:18:28

+0

我已经为答案添加了抵消的解释。 – inkredibl 2009-09-24 09:21:43