2009-09-24 4 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자를 제한해야하지만 왜 $ 행이 필요합니까? 모델에서

, 컨트롤러에서

// 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는 컨트롤러의 표시 방법에서 기본값 0 인 매개 변수입니다.

두 번째 및 세 번째 매개 변수는 제한 및 오프셋입니다 (여기에서 참조하십시오 : http://codeigniter.com/user_guide/database/active_record.html). 따라서 두 번째 매개 변수 (제한)는 반환되는 행 수 (최대)를 정의하고 세 번째 매개 변수 (오프셋)는 결과 집합의 시작 행을 정의합니다. 따라서 예를 들어 10 개의 행이 있고 제한이 5 인 경우 오프셋 0은 처음 5를 반환하고 오프셋 5는 다음 5 (두 번째 페이지) 행을 반환합니다.

표시 방법에 대한 매개 변수는 주소에서 나오며/display/뒤에 오는 부분입니다 (여기를 참조하십시오 : http://codeigniter.com/user_guide/general/controllers.html#passinguri 참조).

오,이 프레임 워크에서 나를 가리켜 주셔서 감사합니다. 좋은 사람처럼 보입니다. 누군가가 얼마 전에 그런 것을 요청했습니다. 이제 알게 될 것입니다.).

+0

@inkredibl : 오프셋은 무엇을 의미합니까? 예, 저는 codeigniter를 좋아합니다. IMHO 지금까지 최고의 프레임 워크. – shin

+0

답변에 대한 설명을 추가했습니다. – inkredibl

관련 문제