Как получить неограниченное количество строк, а также ограниченные результаты для разбиения на страницы с помощью построPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как получить неограниченное количество строк, а также ограниченные результаты для разбиения на страницы с помощью постро

Сообщение Anonymous »

У меня есть две таблицы.
order_log

Код: Выделить всё

order_id  order_status provider_id more
1              2            2     ...
2              2            1     ...
3              0            1     ...
4              3            2     ...
5              1            3     ...
6              1            1     ...
7              4            2     ...
...
и таблица поставщиков

Код: Выделить всё

   provider_id   provider_name
1               vodafone
2                   xyz
3                   abc
4                   njk
...
Вот мой код для получения данных из таблицы

Код: Выделить всё

$this->load->model('ordermodel');
$order_status = $this->ordermodel->getOrderStatus();

$this->db->select($this->orderLogTable . '.operator_id,' . $this->orderLogTable . '.order_status,COUNT(' . $this->db->dbprefix($this->orderLogTable) . '.order_status) AS numofstatus, SUM(' . $this->db->dbprefix($this->orderLogTable) . '.order_customer_amount) AS totalamount,' . $this->operatorTable . '.operator_name, SUM(' . $this->db->dbprefix($this->orderLogTable) . '.order_retailer_discount_amount) AS totaldiscountamount');
$this->db->from($this->operatorTable);
$this->db->join($this->orderLogTable, $this->orderLogTable . '.operator_id =' . $this->operatorTable . '.operator_id AND ' . 'date(' . $this->db->dbprefix($this->orderLogTable) . '.order_complete_date) BETWEEN "' . date('Y-m-d', strtotime($fromdate)) . '" and"' . date('Y-m-d', strtotime($todate)) . '" AND '.$this->orderLogTable.'.order_status IN ('.$order_status['cancel'] . ',' . $order_status['success'] . ',' . $order_status['pending'] .')', 'left');
$this->db->group_by(array($this->orderLogTable . '.order_status', $this->operatorTable . '.operator_id'));
$this->db->order_by($this->operatorTable . '.operator_id');
if ($limit !== NULL && $offset !== NULL) {
$this->db->limit($limit, $offset);
}
$query=$this->db->get();
return $query->result_array();
и получаю отличный результат
но когда я пытаюсь получить количество страниц

Код: Выделить всё

$this->load->model('ordermodel');
$order_status = $this->ordermodel->getOrderStatus();
$this->db->select($this->operatorTable . '.operator_id,' . $this->orderLogTable . '.order_status');
$this->db->from($this->operatorTable);
$this->db->join($this->orderLogTable, $this->orderLogTable . '.operator_id =' . $this->operatorTable . '.operator_id AND ' . 'date(' . $this->db->dbprefix($this->orderLogTable) . '.order_complete_date) BETWEEN "' . date('Y-m-d', strtotime($fromdate)) . '" and"' . date('Y-m-d', strtotime($todate)) . '" AND '.$this->orderLogTable.'.order_status IN ('.$order_status['cancel'] . ',' . $order_status['success'] . ',' . $order_status['pending'] . ')', 'left');
//$this->db->group_by(array($this->orderLogTable . '.order_status', $this->operatorTable . '.operator_id'));
/*here group by is off for count_all_results()*/
//$query = $this->db->get();
return $this->db->count_all_results();
он ​​возвращает 1
и когда я использую группу по, он возвращает 3
но там 84 строки
Как я могу решить эту проблему?
Я не могу/не хочу использовать num_rows().>

Подробнее здесь: https://stackoverflow.com/questions/404 ... pagination
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»