Codeigniter-> используя пагинацию с выбором SQL - PullRequest
2 голосов
/ 05 декабря 2010

Хорошо, я научился делать нумерацию страниц с помощью codeigniter, но я застрял на том, как включить что-то вроде:

$this->db->query("Select * FROM film_list WHERE category = 'documentary');

Как получить нумерацию страниц только для того, чтобы вернуть вышеуказанные данные? Я не хочу возвращать все данные в таблице только определенной категории.

function start()
{
    $config['base_url'] = 'http://localhost/sakila/index.php/site/start/';
    $config['total_rows'] = $this->db->get('film_list')->num_rows();
    $config['per_page'] = '10';
    $config['num_links'] = '20';
    $config['full_tag_open'] = '<div id="pagination">';
    $config['full_tag_close'] = '</div>';


    $data['main_content'] = "start";
    $data['records'] = $this->db->get('film_list', $config['per_page'], 
                                      $this->uri->segment(3));
    $this->pagination->initialize($config);
    $this->load->view('includes/template', $data);
    echo $this->pagination->create_links();}

Я дошел до этого, и он работает, извлекает все данные из таблицы sql, вставляет их в таблицу HTML и корректно разбивает на страницы, я просто хочу ограничить их определенной категорией.

Вот вид, если это помогает.

<div id="main">
  <h1>Documentaries</h1>
  <?php 
    echo $this->table->generate($records);
    echo $this->pagination->create_links();
  ?>
 </div>

Ответы [ 2 ]

2 голосов
/ 28 ноября 2012

Надеюсь, этот код поможет вам.

<?php
//CONTROLLER

$qry = "Select * FROM film_list WHERE category = 'documentary";

$limit = 10;
$offset = ($this->uri->segment(3) != '' ? $this->uri->segment(3):0);

$config['base_url'] = 'http://localhost/sakila/index.php/site/start/';
$config['total_rows'] = $this->db->query($qry)->num_rows();
$config['uri_segment'] = 3;
$config['per_page'] = $limit;
$config['num_links'] = 20;
$config['full_tag_open'] = '<div id="pagination">';
$config['full_tag_close'] = '</div>';

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

$qry .= " limit {$limit} offset {$offset} ";

$data['result_per_page'] = $this->db->query($qry)->result();

$this->load->view('includes/template', $data);

на ваш взгляд ..

<div id="main">
   <h1>Documentaries</h1>
   <?php 
       foreach($result_per_page as $row)
   {
    echo $row->column_to_show; //display result to your databse.column_to_show is just a dummy column name of the query result
   }

       echo $this->pagination->create_links();
  ?>
</div>
1 голос
/ 05 декабря 2010

Вам необходимо добавить предложение where.Вместо просто:

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

Попробуйте что-то вроде этого:

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