нумерация страниц кода для запроса - PullRequest
0 голосов
/ 24 ноября 2010

До сих пор было много помощи, чтобы заставить нумерацию работать для команды get(table).

Что мне нужно, так это выбрать только несколько записей из нескольких связанных таблиц на основе оператора sql where.

Я полагаю, что нужно использовать команду query, но в этом случае как выполнить разбиение на страницы, поскольку эта команда не принимает дополнительных параметров, таких как $config['per_page']

Спасибо за помощь

Ответы [ 2 ]

2 голосов
/ 24 ноября 2010

Без дополнительной информации я думаю, что вы ищете что-то вроде следующего.

public function pagination_example($account_id)
{
    $params = $this->uri->ruri_to_assoc(3, array('page'));

    $where = array(
        'account_id'    => $account_id,
        'active'        => 1
    );

    $limit = array(
        'limit'     => 10,
        'offset'    => (!empty($params['page'])) ? $params['page'] : 0
    );

    $this->load->model('pagination_model');
    $data['my_data'] = $this->pagination_model->get_my_data($where, $limit);

    foreach($this->uri->segment_array() as $key => $segment)
    {
        if($segment == 'page')
        {
            $segment_id = $key + 1;
        }
    }

    if(isset($segment_id))
    {
        $config['uri_segment'] = $segment_id;
    }
    else 
    {
        $config['uri_segment'] = 0;
    }

    $config['base_url'] = 'http://'.$_SERVER['HTTP_HOST'].'/controller_name/method_name/whatever_your_other_parameters_are/page/';              
    $config['total_rows'] = $this->pagination_model->get_num_total_rows();// Make a method that will figure out the total number
    $config['per_page']     = '10';

    $this->load->library('pagination');
    $this->pagination->initialize($config);
    $data['pagination'] = $this->pagination->create_links();

    $this->load->view('pagination_example_view', $data);

}

    // pagination_model
public function get_my_data($where = array(), $limit = array())
{
    $this->db
        ->select('whatever')
        ->from('wherever')
        ->where($where)
        ->limit($limit['limit'], $limit['offset']);
    $query = $this->db->get();

    if($query->num_rows() > 0)
    {
        $data = $query->result_array();
        return $data;
    }
    return FALSE;
}

Это должно, по крайней мере, привести вас на правильный путь. Если это не то, о чем вы просите, я с радостью помогу вам, если вы будете немного более конкретны.Как насчет вашего кода.

0 голосов
/ 26 ноября 2010

Единственные другие варианты, о которых я могу подумать, это либо кодировать число в вашем операторе select, либо не ограничивать запрос и использовать array_slice для выбора части возвращаемого массива.

...