2009-09-24 10 views
0

J'apprends le codeigniter et j'ai une question. Les codes sont de http://www.devshed.com/c/a/PHP/Paginating-Database-Records-with-the-Code-Igniter-PHP-Framework/

Les modèles suivants sont le modèle et le contrôleur. Et il ne définit pas $ row mais ça marche toujours. (L'original avait une faute de frappe, donc je l'ai réparé.)

Q1. D'où vient la ligne $? Q2. Pourriez-vous expliquer get ('users', 5, $ rows) ;? Les utilisateurs doivent être la table en sql, et limiter à 5, mais pourquoi ai-je besoin de $ rows?

Dans le modèle,

// 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(); 
} 
} 

dans le contrôleur,

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

Les suivants sont les codes complets.

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'); 
} 
} 

Ci-dessous users.php pour le contrôleur.

<?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); 
} 
} 

Répondre

1

$ row est un paramètre dont la valeur par défaut est 0 dans la méthode d'affichage de votre contrôleur.

Les deuxième et troisième paramètres sont limites et décalés (voir ici: http://codeigniter.com/user_guide/database/active_record.html). Ainsi, le second paramètre (limite) définit le nombre de lignes (max) renvoyées et le troisième paramètre (offset) définit la ligne à partir de laquelle l'ensemble de résultats doit commencer. Donc, par exemple, si vous avez 10 lignes et que la limite est fixée à 5, alors le décalage de 0 retournera le premier 5, et le décalage de 5 retournera les 5 prochaines (deuxième page) lignes.

Le paramètre de votre méthode d'affichage provient de l'adresse, il s'agit d'un segment après/affichage/(voir ici: http://codeigniter.com/user_guide/general/controllers.html#passinguri). Oh et merci de m'avoir montré ce cadre, ça me semble bien, quelqu'un me l'a demandé il y a quelque temps, maintenant je le saurai;).

+0

@inkredibl: Que veut dire offset? Oui, j'aime le codeigniter. IMHO le meilleur cadre jusqu'à présent. – shin

+0

J'ai ajouté une explication pour offset à la réponse. – inkredibl

Questions connexes