2011-11-29 57 views
0

首先要溫和我一個begginer。Codeigniter分頁與我自己的查詢

我有一個codeogniter分頁和即時通訊完全clules的問題。

我在網上看了很多東西,從來沒有得到任何權利。

我的問題是,即時建立一個房地產網站,它有2種類型的房地產,出售和出租。

我的查詢看起來像這樣

function for_sale() 
{ 
    $query = $this->db->query(" SELECT city, rand_id, price, image FROM estate WHERE type = 'for_sale' "); 
    if ($query->num_rows() > 0) 
     { 
     foreach ($query->result() as $f) 
     { 
      $for_sale[] = $f; 
     } 
     return $for_sale; 
     } 
    } 

我控制器

function index() 
      { 
       $this->load->view("header"); 
       $this->load->model('estate_model'); 
       $for_sale['result'] = $this->estate_model->for_sale(); 
       $this->load->library('pagination'); 
       $config['base_url'] = 'http://localhost/kpi/for_sale/index'; 
       $config['total_rows'] = 22; 
       $config['per_page'] = 9; 
       $config['num_links'] = 19; 

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

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

       $this->load->view("for_sale_view", $for_sale); 
       $this->load->view("footer"); 
      } 

和我的觀點

foreach($results as $r) { 
     echo '<div class="grid_4">'; 
      echo '<p class="title">Estate for sale</p>'; 
      echo '<div class="thumbnail"> 
      <div class="info"> 
       <p class="bar">'.$r->city.'</p> 
       <p></p> 
      </div> 
      <a href="#">'.$r->image.'</a></div>'; 
      echo '<div class="more"><a href="#">View details</a></div>'; 
     echo '</div>'; 
    } 

所以我的問題是我不能算出這個如何與使用它我查詢,我看了很多tuts,我需要加載表格庫,並傳遞一個像這樣的數據數組

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

anf給每頁這個結果`$ this-> db-> get('estate') - > num_rows();但我想用我的查詢,而不是與表。

那麼有人可以給我一個提示嗎?

謝謝

+0

您可以在控制器中構建包含您的查詢的函數,並從控制器調用該函數以從您的查詢中獲取結果。 – punit

+0

在處理index()時你必須小心。當你調用沒有第二個參數的控制器,或者你明確地定義它(my_controller/index)時,它會被調用。你有沒有嘗試設置分頁的基址url,例如$ base_url = base_url()。'for_sale/index /'; (我假設你的基地址是http:// localhost/kpi /)並將uri_segment設置爲3? – Rooneyl

回答

1

...我需要在表格庫加載,並傳遞一個數據陣列...

你如何顯示您的數據是完全取決於你。 HTML表可以幫助你,但它沒有必要使用它。您的視圖應該可以正常工作,除非您想要遍歷$results,因爲您將數據放入$for_sale['result'](results!= result)將會爲空。

爲了使分頁庫查詢工作,你必須通過你的查詢2個參數:

  1. 多少行/記錄應該從你的數據庫加載(= $config['per_page']
  2. 如何許多行/記錄應在一開始被跳過(也被稱爲「偏移」,該值將被分頁庫提供= $this->uri->segment(3)

所以不是:

$for_sale['result'] = $this->estate_model->for_sale(); 

Model: 

function for_sale() 
{ 
    $query = $this->db->query(" SELECT city, rand_id, price, image FROM estate WHERE type = 'for_sale' "); 
    ... 
} 

你應該嘗試:

$for_sale['result'] = $this->estate_model->for_sale($config['per_page'],$this->uri->segment(3)); 

Model: 

function for_sale($per_page, $offset) { 
    $query = $this->db->query(" SELECT city, rand_id, price, image FROM estate WHERE type = 'for_sale' LIMIT $offset, $per_page"); 
    ... 
    return $query->result(); 
} 

最後一件事:分頁庫已被初始化之前,您查詢數據庫。

而另一最後一件事:$config['total_rows'] = 22;你可能要替換的東西,如$this->estate_model->get_for_sale_total_rows()

希望這有助於。