2 Stimmen

Codeigniter-> Paginierung mit Sql Select verwenden

Ok ich gelernt, wie man Pagination mit Codeigniter zu tun, aber was ich bin auf stecken ist, wie Sie etwas wie zu integrieren:

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

Wie kann ich erreichen, dass die Paginierung nur die oben genannten Daten zurückgibt? Ich möchte nicht alle Daten in der Tabelle zurückgeben, sondern nur eine bestimmte Kategorie.

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

Ich bin so weit gekommen und es funktioniert, zieht alle Daten aus der SQL-Tabelle fügt es in die HTML-Tabelle und es paginiert richtig, ich will nur, dass es auf eine bestimmte Kategorie beschränkt.

Hier ist die Ansicht, falls es hilft.

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

2voto

Orvyl Punkte 2455

Ich hoffe, dieser Code wird Ihnen helfen.

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

für Ihre Ansicht..

<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>

1voto

user516322 Punkte 338

Sie müssen die Where-Klausel hinzufügen. Anstelle von nur:

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

Versuchen Sie so etwas:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X