2015-07-27 3 views
0

У меня возникла проблема с разбиением на страницы Codeigniter 2.2. Я хочу отображать список элементов, если он включен из другой таблицы.CodeIgniter: Элементы разбивки на страницы

Чтобы выразить то, что я имею в виду, это будет логика.

<?php 
    $x = 1; 
    $this->db->group_by("item_id"); 
    $query = $this->db->get('item_inventory_inhouse'); 
    foreach ($query->result() as $row4) 
    { 
     $this->db->where('item_id', $row4->item_id); 
     $query = $this->db->get('items'); 
     foreach ($query->result() as $row) 
     { 
      echo '<tr>'; 
      echo '<td>' . $x++ . '</td>'; 
      echo '<td><a href="">' . $row->item_id . '</a></td>'; 
      echo '<td><a href="">' . $row->item_name . '</a></td>'; 
      echo '<td>' . $row->item_category . '</td>'; 
      echo '<td>' . $row->item_costprice . '</td>'; 
      echo '<td>' . $row->item_retailprice . '</td>'; 
      echo '<td>' . $row->item_tax . '%</td>'; 
      echo '</tr>'; 
     } 
    } 
?> 

Поскольку я делаю разбивку на страницы. Я не могу написать код выше.

Ну, я попытался сформулировать код. Вот мой контроллер:

function pharmacy() 
{ 
    if($this->session->userdata('logged_in')) 
    { 
     $total_row = $this->pharmpagination_model->record_count(); 
     $config['num_links'] = 2; 
     $config['base_url'] = base_url().'index.php/inventory/pharmacy/'; 
     $config["total_rows"] = $total_row; 
     $config['per_page'] = 30; 
     $config['full_tag_open'] = '<nav><ul class="pagination">';   
     $config['cur_tag_open'] = '<li class="active"><a href="#">'; 
     $config['cur_tag_close'] = '</a></li>'; 
     $config['num_tag_open'] = '<li>'; 
     $config['num_tag_close'] = '</li>'; 
     $config['full_tag_close'] = '</ul></nav>';   
     $config['next_tag_open'] = '<li><span aria-hidden="true">'; 
     $config['next_link'] = '&raquo;'; 
     $config['next_tag_close'] = '</span></li>';   
     $config['last_link'] = 'Last'; 
     $config['last_tag_open'] = '<li>'; 
     $config['last_tag_close'] = '</li>'; 
     $config['first_link'] = 'First'; 
     $config['first_tag_open'] = '<li>'; 
     $config['first_tag_close'] = '</li>'; 
     $config['prev_tag_open'] = '<li><span aria-hidden="true">'; 
     $config['prev_link'] = '&laquo;'; 
     $config['prev_tag_close'] = '</span></li>'; 

     $this->pagination->initialize($config); 
     if($this->uri->segment(3)){ 
     $page = ($this->uri->segment(3)) ; 
      } 
     else{ 
       $page = 1; 
     } 
     $data["results"] = $this->pharmpagination_model->fetch_data($config["per_page"], $page); 
     $str_links = $this->pagination->create_links(); 
     $data["links"] = explode('&nbsp;',$str_links); 

      $session_data = $this->session->userdata('logged_in'); 
      $data['username'] = $session_data['username']; 
      $data['title'] = 'Pharmacy Inventory'; 
      $this->load->view('inventory/pharmacy', $data); 
    } 
    else 
    { 
      $this->session->set_flashdata('message', 'Oops! You have to Login'); 
    //If no session, redirect to login page 
      redirect('login', 'refresh'); 
    }  
} 

и вот Model

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

class PharmPagination_Model extends CI_Model { 
     function __construct() { 
     parent::__construct(); 
    } 
    // Count all record of table "contact_info" in database. 
     public function record_count() { 
     return $this->db->count_all("item_inventory_inpharmacy"); 
    } 

    // Fetch data according to per_page limit. 
    public function fetch_data($limit, $id) { 

     $this->db->group_by("item_id"); 
     $mainquery = $this->db->get('item_inventory_inpharmacy'); 
     foreach ($mainquery->result() as $row4) 
     { 

       $this->db->limit($limit, $id-1); 
       $this->db->where('item_id', $row4->item_id);     
       $query = $this->db->get("items"); 
      } 
       if ($query->num_rows() > 0) { 
        foreach ($query->result() as $row) { 
         $data[] = $row; 
        } 

        return $data; 
       } 


     return false; 
    } 
} 
?> 

Это на самом деле работает, но это только показывает 1 строку, где на самом деле, он должен отображать 5 строк, так как в базе данных есть пять строк.

Надеюсь, кто-то может помочь. Спасибо

ответ

0

, так как вы не предоставили свой снимок данных, будет трудно сказать, почему он показывает одну строку. Я предполагаю, что у вас есть другой item_id в таблице элементов, и если вы посмотрите на код модели, то это проблема (вы запрашиваете таблицу элементов для каждого элемента id, но возвращаете массив $ data только для последнего элемента.)

вы можете легко сделать это с помощью присоединиться :)

public function fetch_data($limit, $id) { 
    $this->db->group_by("item_inventory_inpharmacy.item_id"); 
    $this->db->from("item_inventory_inpharmacy"); 
    $this->db->join("items","items.item_id=item_inventory_inpharmacy.item_id"); 
    $this->db->limit($limit, $id-1); 
    $query = $this->db->get();   
    return $query->result(); 
} 
+0

Это действительно решить мою проблему. Благодаря! –

Смежные вопросы