2013-03-24 5 views
2

Я пытаюсь поставить разбивку на страницы в свой проект CodeIgniter. Я тщательно следовал инструкции, мне удалось присоединиться к столу и показать их в своем «mahasiswa_view», но когда я пытаюсь совместить его с нумерацией страниц, это говорит об ошибке:codeigniter pagination with join table

check on this error pic

Вот мой контроллер код = "домой":

class Home extends CI_Controller 
{ 
function __construct() 
{ 
    parent::__construct(); 
    $this->load->model('modelku'); 
} 

function index($offset = NULL) 
{ 
    //pagination 
    $limit = 3; 
    if(!is_null($offset)) 
    { 
     $offset = $this->uri->segment(3); 
    } 
    $this->load->library('pagination'); 
    $config['uri_segment'] = 3; 
    $config['base_url'] = site_url('home/index'); 
    $config['total_rows'] = $this->modelku->total_record_mahasiswa(); 
    $config['per_page'] = $limit; 
    $config['num_links'] = 5; 
    $config['first_link'] = 'First'; 
    $config['last_link'] = 'Last'; 
    $this->pagination->initialize($config); 

    //$data['mahasiswa']=$this->modelku->get_mahasiswa_all(); 
    $data['mahasiswa'] = $this->modelku->get_mahasiswa_all($limit,$offset); 
    $this->load->view('mahasiswa_view',$data); 
} 

И вот мой код модели = "модельку":

if(!defined('BASEPATH')) exit('No direct script access allowed'); 

class Modelku extends CI_Model 
{ 
//pagination 
function total_record_mahasiswa() 
{ 
    return $this->db->count_all('tb_mahasiswa','tb_prodi'); 
    //return $this->db->count_all('tb_mahasiswa'); 
} 


function get_mahasiswa_all($limit,$offset) 
{ 
    $this->db->select('tb_mahasiswa.nim, tb_mahasiswa.nama, tb_mahasiswa.tanggal_lahir, 
      tb_mahasiswa.jenis_kelamin, tb_mahasiswa.alamat, tb_mahasiswa.propinsi, 
      tb_mahasiswa.telepon, tb_mahasiswa.email, tb_mahasiswa.photo, 
      tb_mahasiswa.prodi, 
      tb_prodi.namaprodi'); 
    $this->db->from('tb_mahasiswa'); 
    $this->db->join('tb_prodi','tb_mahasiswa.prodi=tb_prodi.kode'); 
    //$query = $this->db->get(); 
    $this->db->order_by('nim','ASC'); 
    //$query = $this->db->get('tb_mahasiswa','tb_prodi',$limit, $offset); 
    $query = $this->db->get($limit, $offset); 
    return $query->result(); 
} 

И последний, мой взгляд = 'mahasiswa_view':

<!doctype html> 
<html> 
<head> 
    <title>PHP Framework</title> 
    <link rel="stylesheet" href="<?php echo base_url() ?>asset/css/style.css"/> 
</head> 

<body> 
    <h3>Selamat Datang di Form Mahasiswa</h3> 

    <table width="80%" border="1" > 

     <tr style="background-color:blue; color:white;"> 
      <td> No. </td> 
      <td> NIM </td> 
      <td> Nama </td> 
      <td> Tanggal Lahir </td> 
      <td> Jenis Kelamin </td> 
      <td width="20%"> Alamat </td> 
      <td> Telepon </td> 
      <td> Email </td> 
      <td> Prodi </td>  
      <td> Photo </td> 
     </tr> 


    <?php if(isset($msg_error)) 
     { 
      echo '<div style="color:red;">' . $msg_error.'</div>'; 
     } 
    ?> 
    <?php 
     echo anchor('home/login','Login'); 
     $no=1; 
     foreach ($mahasiswa as $row) 
     { 
    ?> 
     <tr> 
      <td><?php echo $no; ?></td> 
      <td><?php echo $row->nim . ' '; ?></td> 
      <td><?php echo $row->nama . ' '; ?></td> 
      <td><?php echo $row->tanggal_lahir . ' '; ?></td> 
      <td><?php echo $row->jenis_kelamin . ' '; ?></td> 
      <td><?php echo $row->alamat . ' '; ?></td> 
      <td><?php echo $row->telepon . ' '; ?></td> 
      <td><?php echo $row->email . ' '; ?></td> 
      <td><?php echo $row->namaprodi . ' ';?></td> 
      <td><?php echo $row->photo . ' </br>';?></td> 
     </tr> 

    <?php 
     $no++; 
     } 
    ?> 
    &nbsp 
    <form action="<?php print site_url();?>/home/cari" method=POST> 
     <input type=text name=cari> <input type=submit value="Cari"> 
    </form> 
</table> 

    <?php 
     echo "<br /><div>" .$this->pagination->create_links() ."</div>"; 
    ?> 
</body> 
</html> 

Я все еще новичок в CodeIgniter, поэтому любая помощь будет оценена по достоинству.

+0

Какая ошибка возникает при запуске кода? –

+0

@MehrdadDastgir: не так ли в ссылочном изображении? Было бы лучше прямо увидеть это здесь ... – Anthon

+0

@ На этом вопрос был отредактирован, поскольку я печатал свой комментарий, спасибо, что указал –

ответ

2

вы не можете использовать $query = $this->db->get($limit, $offset);$limit, $offset внутри Get()

$this->db->limit($limit, $offset); 
$query = $this->db->get(); 

использовать его как этот

+0

Вау, мужик, спасибо, что он отлично работает ... :) –

+0

:) использовать активную запись codeigniter api http://ellislab.com/codeigniter/user-guide/database/active_record.html – noelyahan

+0

что такое использование $ offset ? – Vincent

0

Ответ предоставляется @Noel_Yahan является правильным. Но в чем именно заключается ваша проблема, которая говорит об этом;

Table 'db_kampus.3' does not exist 

Это может быть так, что вы используете какое-либо приложение стороннего и таблица [db_kampus.3] отсутствует.

Попробуйте установить отсутствующий стол и следуйте приведенному выше ответу. Он должен работать.

+0

Я не знаю об этом человеке, но я думаю, что это предел разбивки на страницы (3). Имя моей базы данных - db_kampus ... –

+0

@Mohammad Arif yes 'db_kampus.3' не существует, потому что Tirta John определил $ limit = 3; как в его контроллере, и в get() он анализирует $ limit и пытается найти имя таблицы под названием 'db_kampus.3' 'db_kampus', его имя базы данных 3 является добавочным значением $ limit :) – noelyahan

+0

Да, вы правы @Noel_Yahan –