Как получить и вернуть запись с общим количеством записей в codeigniter - PullRequest
0 голосов
/ 13 февраля 2019

Я работаю с остальным API, используя codeigniter, я хочу получить записи + общее количество записей + на каждую страницу записей, но не работает для меня Вот моя функция в контроллере

<?php 
public function search_shop()
{
    $users['rec'] = $this->Model_users->find_shop($_POST);
    if($users['rec']!="")
        {
            $responseJSON = array("Status" => true,"Result" => $users['rec']);
            header("content-type:application/json");
            $response = json_encode($responseJSON);
            echo $response; 
        }
        else
            {
                $responseJSON = array("Status" => false,"Message" => "There is no matching record");
                header("content-type:application/json");
                $response = json_encode($responseJSON);
                echo $response; 
            }   
}

А вот мой "функция find_shop "в модели. Как я могу получить все записи с общим количеством записей и записей на странице?

public function find_shop()
{       
        $add_data['page_number'] = ($this->input->post('page_number') && !empty($this->input->post('page_number'))) ? $this->input->post('page_number') : NULL;

        $add_data['search'] = ($this->input->post('search') && !empty($this->input->post('search'))) ? $this->input->post('search') : NULL;     

        $records="10";  
        $mins="10";
        if($add_data['page_number']=="" || $add_data['page_number']=="0" || $add_data['page_number']=="1")
            {
                $starting_row="0";
                $last_row="10";
            }
        else
            {
                $last_row="9";
                $cd="1";
                $lim="10";
                $starting_row=$add_data['page_number']*$lim-$last_row-$cd;
                $last_row=$add_data['page_number']*$records-$cd;
            }
        $this->db->select('*');
        $this->db->from('shop s');
        $this->db->like('shop_name',$add_data['search']);
        $this->db->or_like('city',$add_data['search']);
        $this->db->limit($last_row,$starting_row);      
        $query = $this->db->get();
        if ( $query->num_rows() > 0 )
            {
                $row = $query->result_array();
                return $row;
                return $query->num_rows;
            }
        else
            {
                return false;
            }
    }
?>

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Измените условие if следующим образом:

        $records="10";  // This is records per page showing
        if ($add_data['page_number']=="" || $add_data['page_number']=="0" || $add_data['page_number']=="1")
        {
            $starting_row="0";
        } else {
            $starting_row = ($add_data['page_number'] - 1) * $records;            
        }

Вам необходимо установить предел и смещение запроса.Например: предел 0, 10: это покажет первые 10 записей.Здесь 0 - отправная точка, а 10 - длина записей, которые вы хотите показать.10 всегда будет таким же, как вы показываете 10 записей.Предел 10, 10: он покажет записи с 10 до 19. Надеюсь, это очистит ваши сомнения.

0 голосов
/ 13 февраля 2019

Попробуйте, надеюсь, это поможет
в контроллере, пожалуйста, проверьте это после изменений, связанных с моделью

$users = array();
$users = $this->Model_users->find_shop($_POST);
echo'<pre>';print_r($users);die;

в модели, при возврате произошла ошибка, выне может сделать два возврата одновременно

$query = $this->db->get();
if ( $query->num_rows() > 0 )
{
    $data = array();
    $data['row'] = $query->result_array();
    $data['total_records'] = $this->db->count_all_results('shop');
    $data['per_page_records'] = $query->num_rows();
    return $data;
}else{
    return array('row'=>array(),'total_records'=>'0','per_page_records'=>'0');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...