ホームページ >バックエンド開発 >PHPチュートリアル >CodeIgniter (CI 3.0) ページングクラス実践記録
私は最近 B/S を学習しており、エントリーポイントとして PHP CI フレームワークを選択しました。
個人用 CMS を作成しようとしたときに、ページングが必要な状況に遭遇しました。インターネット上でバージョン 3.0 以降の例が見つからなかったようです。参考までに、ローカルの実験コードを以下に添付します。
データベースの状況は次のとおりです:
最初にコントローラーを確認します
<?php/** * Created by PhpStorm. * User: erdao * Date: 16-1-11 * Time: 下午10:25 */class P extends CI_Controller{ /** * P constructor. */ public function __construct() { parent::__construct(); $this->load->model('article_model','article'); $this->load->library('pagination'); } /** * @param int $page 可看做offset */ public function index($page=0) { //每页显示三条数据 $limit['num']=3; $limit['offset']=$page; $config['base_url']=site_url('p/index'); $config['total_rows']=$this->article->get_articles_num();//数据总条数 $config['per_page']=$limit['num'];//每页显示条数 $this->pagination->initialize($config); $data=array( 'articles'=>$this->article->get_limit_articles($limit) ); $this->load->view('page_ex',$data); }}
次にモデルを確認します
<?php/** * Created by PhpStorm. * User: erdao * Date: 16-1-12 * Time: 下午9:48 */class Article_model extends CI_Model{ /** * Article_model constructor. */ public function __construct() { parent::__construct(); } /** * 获取全部数据 * @return mixed */ public function get_all_articles() { $this->db->from('my_article'); $this->db->order_by('posttime', 'DESC'); $query=$this->db->get(); return $query->result_array(); } /** * 获取表内数据数量 * @return mixed */ public function get_articles_num() { return $this->db->count_all('my_article'); } /** * 获取有限个数的数据 * @param array $arr * @return mixed */ public function get_limit_articles($arr=array('num'=>FALSE,'offset'=>FALSE)) { if(isset($arr['num']) and isset($arr['offset']) and ($arr['num']!==FALSE) and ($arr['offset']!==FALSE)) { $query=$this->db->get('my_article',$arr['num'],$arr['offset']); return $query->result_array(); } else { return $this->get_all_articles(); } }}
最後にビュー
<?phpforeach($articles as $item){ echo $item['title'];}echo $this->pagination->create_links();
実行中のエフェクトのスクリーンショットを添付します
それここで、index/9 に注意してください。9 は、ページ数ではなく、データベース内のインデックスとみなすことができます