首页 > 解决方案 > 如何在codeigniter中获取和返回记录总数

问题描述

我正在使用codeigniter使用rest api,我想获取记录+总记录+每页记录,但对我不起作用这是我在控制器中的功能

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

标签: phpcodeigniter

解决方案


像这样更改您的 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;            
        }

您需要设置查询的限制和偏移量。例如:limit 0, 10:这将显示前 10 条记录。这里 0 是起点,10 是您要显示的记录的长度。10 将始终与您显示 10 条记录相同。限制 10、10:它将显示 10 到 19 的记录。希望它能消除您的疑问。


推荐阅读