Codeigniter kullanarak bir proje geliştirirken sayfalamayı çok kolay bir şekilde yapabilirsiniz. Codeigniter bu işlemi sizin için oldukça basitleştirmiştir. Aşağıda ben size sayfalamanın nasıl yapıldığını anlatacağım. Ayrıca kodlardan sonra benim kullanmadığım ayarları da özelleştirebilmeniz için codeigniterin kendi Pagination Class sayfasının linkini bulabilirsiniz.
Öncelikle sayfalamayı kullanacağınız sayfanın contollerında sayfalamayı hangi sayfada kullanacaksanız onun fonksiyonuna aşağıdaki kodları kopyalayın. Kodların yanına açıklamalarını ekledim. Ben sayfalamayı controllerın indexin de kullanacağım.
public function index() { $this->load->library("pagination"); // Sayfalama kütüphanesini yükle $config['uri_segment'] = 4; //sayfa numarası kaçıncı segmentte bende mesela site.com/admin/blog/index yani 4. segmentte $config['per_page'] =8; // Her sayfada kaç yazı gözükecek $config['total_rows'] =$this->Database_Model->all_blogs_count(); // Toplam kaç tane kayıt var $config['base_url'] = site_url()."admin/blog/index"; // Sayfalamanın yapılacağı url $config['use_page_numbers'] = TRUE; // Sayfa numaralarını kullan //Bu kısımda kullandığınız şablona göre değişebilir bende tabloda sayfa numaraları <li> kodları ile özelleştirildiği için <li> kodları ile ekrana bassın diye bu ayarları yaptım isterseniz bu kısımları silebilirsiniz ayrıntılara alttaki linkten ulaşabilirsiniz. $config['num_tag_open'] = '<li>'; $config['num_tag_close'] = '</li>'; $config['full_tag_open'] = '<li>'; $config['full_tag_close'] = '</li>'; $config['first_link'] = '&amp;laquo;'; $config['first_tag_open'] = '<li>'; $config['first_tag_close'] = '</li>'; $config['last_link'] = '&amp;raquo;'; $config['last_tag_open'] = '<li>'; $config['last_tag_close'] = '</li>'; $config['next_tag_open'] = '<li>'; $config['next_tag_close'] = '</li>'; $config['prev_tag_open'] = '<li>'; $config['prev_tag_close'] = '</li>'; $config['cur_tag_open'] = '<li><a href="#"><b>'; $config['cur_tag_close'] = '</b></a></li>'; //-------- $this->pagination->initialize($config); // Ayarları kaydet $data["links"] = $this->pagination->create_links(); // Html çıktısını değişkene depola $page = ($this->uri->segment(4)) ? $this->uri->segment(4) : 0; // Sayfa numarası url de 4.kısımda yazacağı için 4. kısmı alıyoruz eğer boşsa 0 olarak belirliyoruz if($page > 0) // Eğer sayfa 0 dan büyükse { $offset = ($page*$config['per_page']) - $config['per_page']; // Offset değerimizi bu işlemler ile buluyoruz }else { $offset = $page; // Eğer Sayfa 0 dan küçükse veya eşitse direk sayfa değişkeninin değerini al } $data["blogs"] = $this->Database_Model->blog_list($config['per_page'], $offset); // Veri tabanından kaç adet yazı çekilsin ve kaçıncı veriden itibaren gösterilsin $this->load->view('admin/blog/all_post',$data); // Data değişkenini view'e aktarıyoruz }
Bu kodlardan sonra Database modele yolladığımız iki yer var kodlar arasında. Ben kodlardan sorgulama yaparken. Mesela yazıların kategorisini alma, yazan kişini adını alma gibi işlemleri join kullarak gerçekleştirdim çünkü bu bilgiler farklı tablolarda tutulmaktadır.
function all_blogs_count(){ $this->db->select('Id'); $this->db->from('blogs'); $this->db->join('admin', 'blogs.authorId = admin.Id'); $this->db->join('categories', 'blogs.categoryId = categories.Id'); return $this->db->count_all_results('blogs'); } function blog_list($limit, $start){ //Bu kısımda bana lazım olan verileri aldım. Çünkü tablodaki tüm bilgilerle işim yok $this->db->select('blogs.Id,blogs.title,blogs.authorId,blogs.categoryId,blogs.status,blogs.date,admin.nameSurname as authorName,categories.name as catName,blog_status.statusName as statusName'); $this->db->from('blogs'); $this->db->join('admin', 'blogs.authorId = admin.Id'); $this->db->join('categories', 'blogs.categoryId = categories.Id'); $this->db->join('blog_status', 'blogs.status = blog_status.Id'); $this->db->order_by('blogs.date', 'DESC'); $this->db->limit($limit, $start); $query = $this->db->get(); return $query->result(); }
Controller ve Database Model işlemlerinden sonra geri kalan şey verileri sayfaya basmak. Bununla alakalı kodlarda aşağıda bulabilirsiniz:
<div class="box-body table-responsive no-padding"> <table class="table table-hover"> <tr> <th>Başlık</th> <th>Durum</th> <th>Kategori</th> <th>Yazar</th> <th>Tarih</th> <th>İşlemler</th> </tr> <?php foreach ($blogs as $row) { ?> <tr> <td><?php echo substr($row->title,0,50);?></td> <td><?php echo $row->statusName;?></td> <td><?php echo substr($row->catName,0,20);?></td> <td><?php echo $row->authorName;?></td> <td><?php echo $row->date;?></td> <td>İşlem Butonları</td> </tr> <?php } ?> </table> </div> <!-- /.box-body --> <div class="box-footer clearfix"> <ul class="pagination pagination-sm no-margin pull-right"> <?php echo $links; ?> </ul> </div>
Bu kodları sizin projenize uygun değişikleri yaparak kullanabilirsiniz ve sayfalama olayını çok kısa ve kolay şekilde yapabilirsiniz. Bu kodlar sonunda oluşan görüntü şu şekilde şuan ben daha geliştirme aşamasında olduğu için rastgele başlıklar var dikkate almayın onu 🙂
Ayrıca diğer ayarlar için Codeigniter’ ın kendi sayfalama sayfası -> Tıklayın
Hello. And Bye.
OK.