Codeigniter与我自己的查询分页

时间:2011-11-29 09:50:47

标签: codeigniter pagination

首先要温柔我是一个乞丐。

我有一个codeogniter分页的问题,而且我完全是clules。

我在网上看了很多东西,从来没有得到过任何屁股。

我的问题是,我建立一个房地产网站,它有两种类型的房地产,出售和出租。

我的查询看起来像这样

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>';
    }

所以我的问题是我无法弄清楚如何将它与我的查询一起使用,我看了很多关键词,我需要在表库中加载,并传递像这样的数据数组

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

anf给出每页这个结果`$ this-&gt; db-&gt; get('estate') - &gt; num_rows();但我希望这与我的查询,而不是表。

有人可以给我一个暗示吗?

谢谢

1 个答案:

答案 0 :(得分:1)

  

...我需要加载表库,并传递一个数据数组......

您如何显示数据完全取决于您。 html-table 可以帮助你,但没有必要使用它。您的视图应该正常工作,除非您想要迭代$results,因为您将数据放入$for_sale['result'](结果!=结果),这将是空的。

为了让分页库与您的查询一起使用,您必须传递查询2个参数:

  1. 应从db(= $config['per_page']
  2. 加载多少行/记录
  3. 开头应跳过多少行/记录(也称为'偏移',此值将由分页库提供= $this->uri->segment(3)
  4. 所以而不是:

    $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()

    之类的东西替换它

    希望这有帮助。