Codeigniter, нумерация страниц по моему - PullRequest
0 голосов
/ 29 ноября 2011

Сначала будь нежным, я начинающий.

У меня проблема с разбиением на страницы кодогнитера, и я полностью справляюсь.

Я смотрел много роликов в сети и никогда не получал ответа.

Моя проблема заключается в том, что я строю объект недвижимости, на котором есть 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>';
    }

Так что моя проблема в том, что я не могу понять, как использовать его с моим запросом, я просмотрел множество фрагментов, которые мне нужно загрузить в библиотеку таблиц, и передал массив данных, подобный этому

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

и дают на странице этот результат `$ this-> db-> get ('estate') -> num_rows (); но я хотел бы этого с моим запросом, а не с таблицей.

Так может ли кто-нибудь дать мне подсказку?

Спасибо

1 Ответ

1 голос
/ 30 ноября 2011

... мне нужно загрузить библиотеку таблиц и передать массив данных ...

как вы отображаете ваши данные полностью зависит от вас. html-таблица class может помочь вам в этом, но использовать ее необязательно. Ваше представление должно работать просто отлично, за исключением того факта, что вы хотите перебрать $results, который будет пустым, потому что вы помещаете свои данные в $for_sale['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()

Надеюсь, это поможет.

...