[X] Choose Font Here

Pagination with CodeIgniter

ကြၽန္ေတာ္ CodeIgniter နဲ႔ Pagination Tutorial ေလးေရးျပပါမယ္။ ကြၽန္ေတာ္ CI နဲ႔ ပတ္သက္ျပီး ေရးထား သမ်ွကိုေတာ့

ဒီမွာ ျပန္ဖတ္ၾကည့္ ႏိုင္ပါတယ္။

  1. CodeIgniter and MVC for Beginners
  2. Structure and Configuration of CodeIgniter
  3. CodeIgniter Database Library
  4. CodeIgniter Form Helper
  5. Simple Data Entry in CodeIgniter

တစ္ရက္က comment တစ္ခုမွာလည္း CI Post အသစ္ေရးဖို႔ ေျပာထားတာ ေရးမယ္ေျပာျပီး မအားတာနဲ႔ ခုမွပဲ ေရး

လိုက္ပါတယ္။ OK စလိုက္ၾကရေအာင္။ Pagination ဆိုတာ သိျပီးသားလို႕ ယူဆလို႕ ဒီ Pagination Feature ကို CI မွာ

ရွိေနတဲ့ pagination library ကိုဘယ္လိုသုံးျပီး ဖန္တီးသလဲ ဆိုတာ ေလ့လာၾကည့္မယ္။

1) Setup 'Category' Tables

ဒီ category table script ကို run လိုက္ပါ။

CREATE TABLE IF NOT EXISTS `category` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `description` varchar(255) NOT NULL,
  `status` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ;


INSERT INTO `category` (`id`, `description`, `status`) VALUES
(1, 'Software Development', 1),
(2, 'Programmer', 1),
(3, 'Web Designer ', 1),
(5, 'Enginner', 1),
(6, 'AutoCAD', 1),
(7, 'Sale Person', 1),
(8, 'Driver', 1),
(9, 'IT', 1),
(10, 'Marketing', 1),
(11, 'Teaching', 1),
(13, 'Accounting1', 1);


2) Change to config.php and database.php

ကိုယ္ setting အတိုင္း config folder ေအာက္က config.php နဲ႔ database.php မွာ ေျပာင္းေပးဖို႔ လိုတယ္။


3) Create category controller

category.php

<?php

class Category extends Controller {
   
    function index()
    {
        $this->load->library('pagination');
        $this->load->library('table');
        $this->table->set_heading('ID', 'Description', 'Status');
       
        $config['base_url'] = 'http://localhost:8888/ci_pagination/index.php/category/index';   
        $config['total_rows'] = $this->db->get('category')->num_rows();
        $config['per_page'] = 5;

        $this->pagination->initialize($config);
        $data['records'] = $this->db->get('category', $config['per_page'], $this->uri->segment(3));
       
        $this->load->view('category_view', $data);
       
    }
}

ဒီ Code ကိုရွင္းရရင္ေတာ့ဗ်ာ။

$this->load->library('pagination');
$this->load->library('table');
$this->table->set_heading('ID', 'Description', 'Status');


CI pagination နဲ႔ table library ေတြကို loading လုပ္ျပီးေတာ့ table header column name ေတြကို သက္မွတ္ ပါတယ္။

Pagination လုပ္ဖို႔ အဓိက Parameter သံုးခုလိုတယ္ဗ်ာ။ ခု $config မွာအဲဒါေတြကို ထည့္ေပးပါတယ္။

$config['base_url']  - ဆိုတာကေတာ့ pagination ရွိေနတဲ့ controller ရဲ႕ function  ရွိေနတဲ့ full path ကိုထည့္ေပးရမယ္။

ကြၽန္ေတာ္ကေတာ့ category controller ထဲက index function ကိုေခၚထားထားပါတယ္။ Pagination မွာ page no ေတြကို

click တဲ့အခါ ဒီ base_url ကေန ျပန္စျပီ အလုပ္လုပ္မွာ ျဖစ္ပါတယ္။

$config['total_rows'] - ကေတာ့ table ထဲမွာ ရွိေနတဲ့ rows အားလုံး စုစုေပါင္းကို ေျပာတာ ျဖစ္ပါတယ္။ ဒီေနရာမွာ

database library  ထဲက get နဲ႔ num_rows ကို သုံးလိုက္ပါတယ္။

$config['per_page'] - ကေတာ့ page တစ္ခုမွာ ျပဖို႔ row အေရအတြက္ ျဖစ္ပါတယ္။

အားလုံး ထည့္ျပီးတဲ့ အခါမယ္ pagination ကို ဒီလို initialize လုပ္ပါတယ္။

$this->pagination->initialize($config);


ဒီအဆင့္ကေတာ့ page no ေတြကို click တဲ့ အခါ database ထဲက record ေတြကို သြားဖတ္တဲ့ အခါ ဒီ parameter ေလးေတြ

ကို ေပးဖို႔ လိုတယ္ဗ်ာ။


$data['records'] = $this->db->get('category', $config['per_page'], $this->uri->segment(3));

category - က table name ျဖစ္ပါတယ္။

$config['per_page'] - ကေတာ့ record ဘယ္ႏွခု ဖတ္မလဲ ဆိုတာ ျဖစ္ပါတယ္။

$this->uri->segment(3) - ကေတာ့ဗ်ာ number တစ္ခု ပါလာလိမ့္မယ္။ အဲဒီ number ကဘာကို ကိုယ္စားျပဳလဲ ဆိုရင္ေတာ့

ဘယ္ေနရာကေန စဖတ္မယ္ ဆိုတာျဖစ္ပါတယ္။ segment ကိုေတာ့ ကိုယ္ controller & function ေပၚမူတည္ျပီး

index.php  ေနာက္ကေန စျပီး သတ္မွတ္ ႏိုင္တယ္။  run ေနတဲ႔query ကို ဒီလိုျမင္ေနရင္ အဆင္ေျပသြားမယ္ဗ်ာ။

SELECT * FROM `category` limit start,end ျဖစ္ျပီး စတဲ့ start ေနရာကို ေျပာင္းသြားဖို႔ segment ယူျပီး ထည့္ေပးတာ

ျဖစ္ပါတယ္။  အိုေက ေနာက္ဆုံး view ကိုဒီလို ေခၚလိုက္ပါမယ္။

$this->load->view('category_view', $data);

view ထဲမွာ ဒီ ႏွစ္ေၾကာင္းကို ေရးေပး လိုက္တဲ့ အခါ

 

4) Create view

category_view.php (View folder ေအာက္မွာ create လုပ္ေပး ရမယ္။)

<h1>Pagination with CodeIgniter</h1>
<?php echo $this->table->generate($records); ?>
<?php echo $this->pagination->create_links(); ?>


ေအာက္ကပုံ အတိုင္း pagination လုပ္ထားျပီးသား table တစ္ခု ရပါလိမ့္မယ္။ 

CSS ေလးေတြကို သင့္ေတာ္သလို ျပင္ေပး လိုက္တဲ့ အခါ ဒီလိုေလး ျမင္ရပါမယ္။

ဖတ္ၾကည့္ျပီး စမ္ၾကည့္လို႕ မရရင္ comment ေပးျပီး ေဆြးေႏြးႏိုင္ပါတယ္။

Comments (6)
  • Ei Chaw  - $this->uri->segment(3) နားမလည္လို.ပါ

    Bro ေရ
    $this->uri->segment(3) ကို နားမလည္လို.နည္းနည္းေလာက္ထပ္ရွင္းေပးပါေနာ္
    ေက်းွဇူးပါ။

  • admin  - Re: Ei Chaw

    segment ဆိုတာ URL ေပၚက လာတဲ့ values ေတြကို ဖမ္းဖို႔ သုံးတာဗ်။ CodeIgniter မွာ index.php/controller/method/segment လို႔ URL Pattern ကို လုပ္ထားေတာ့ မ်ားေသာအားျဖင့္ေတာ့ segment(3) ဆိုျပီး ယူေလ့ရွိတယ္ဗ်ာ။ တစ္ကယ္လို႔ index.php/admin/controller/method/segment
    လို႔ဆိုရင္ေတာ့ segment က 4 ျဖစ္သြားမယ္ဗ်ာ။ admin ဆိုတာကေတာ့ folder name ပါ။ controller ရွိေနတဲ့ folder ေပါ့။ :D

  • Ei Chaw  - thanks

    :D Thanks a lot :D

  • Ei Chaw San

    Bro ေရ
    Pagination ကိုစမ္းၾကည္.တာ ေနာက္ဆံုး LINK 3 က နိွပ္လို.မရဘူးျဖစ္ေနတယ္။ EG...Data က ၁၄ ခုရွိတယ္ဆို 1,2,3 အကုန္ေပၚတယ္။ဒါေပမယ္. ေနာက္ဆံုး Link က Click လို.မရဘူး.။ဘယ္လိုျဖစ္တယ္မသိဘူး။

  • admin  - Re:

    pagination ကိုေပးတဲ့ parameters ေတြမွန္ရင္ အလုပ္လုပ္တယ္ ညီမ။ ... ကြၽန္ေတာ္ pagination ေတြအားလုံး အိုေကတယ္ဗ်။ ေနာက္ဆုံး မရရင္ေတာ့ system >> libraries >> pagination.php မွာ trace လိုက္ၾကည့္ရင္ေတာ့ ဘာလြဲေနလဲ သိႏိုင္တယ္။

  • Ei Chaw San

    bro ေရ.
    Reply ျပန္ထားတာမသိဘူးျဖစ္သြားတယ္။
    Email မွာ notify ကို default select လုပ္ေပးရင္ေကာင္းမွာပဲ.
    :P
    Pagination ကေတာ.မရ၀ူး bro ေရ ခဏလက္ေလ်ာ.ထားတယ္။

Write comment
Your Contact Details:
Comment:
[b] [i] [u] [url] [quote] [code] [img]   
:D:angry::angry-red::evil::idea::love::x:no-comments::ooo::pirate::?::(
:sleep::););)):0
Security
Please input the anti-spam code that you can read in the image.

Login Form

Categories Table View

JoomlaWatch Stats 1.2.9 by Matej Koval

Facebook Share

Share on facebook

Accordion FAQ

mod_joomtouch

Version Iphone

Version Iphone by JoomTouch