2009-09-24 2 views
0

Я изучаю codeigniter и задаюсь вопросом. Коды указаны с http://www.devshed.com/c/a/PHP/Paginating-Database-Records-with-the-Code-Igniter-PHP-Framework/

Следующие модели являются моделью и контроллером. И он не определяет $ row, но он все еще работает. (У оригинала была опечатка, поэтому я ее исправил.)

Q1. Откуда стоит $ row? 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). Таким образом, второй параметр (предел) определяет, сколько строк (max) возвращается, а третий параметр (смещение) определяет, из какой строки из набора результатов следует начать. Так, например, если у вас есть 10 строк и задано ограничение на 5, то смещение 0 вернет первые 5, а смещение 5 вернет строки следующего 5 (второй страницы).

Параметр вашего метода отображения поступает с адреса, это сегмент после/дисплей/(см. Здесь: http://codeigniter.com/user_guide/general/controllers.html#passinguri).

О, спасибо за то, что указали на меня в этой структуре, кажется приятной, кто-то спросил меня о такой вещи некоторое время назад, теперь я буду знать;).

+0

@inkredibl: Что означает среднее значение? Да, мне нравится кодифицировать. ИМХО - лучшая структура до сих пор. – shin

+0

Я добавил объяснение смещения ответа. – inkredibl