【问题标题】:CodeIgniter pagination. Total rowsCodeIgniter 分页。总行数
【发布时间】:2014-02-25 06:44:36
【问题描述】:

我有这个问题,我找不到问题所在。 所以,我的控制器:

$config = array();
$config["base_url"] = base_url() . "products/page/";
$config["total_rows"] = count($this->model_add->countProducts());
$config["per_page"] = 12;
$config["uri_segment"] = 4;
$config["num_links"] = 2;
$config["use_page_numbers"] = true; 

型号:

public function countProducts() {
    $query = $this->db->query("SELECT * FROM `tdt_articles` WHERE `deleted` = 0 AND `article_type` = 3");
    return $query->result();
}

我的问题是,在我的网页中,它显示的页面较少。如果在$config["total_rows"] 上,我输入了准确的记录数,它显示得很好,但如果我像那里显示的那样计算它们,它不会显示所有的记录。完全无法理解是什么问题。希望你能帮助我!谢谢!!!

【问题讨论】:

  • 你自己检查count($this->model_add->countProducts())返回的结果是否正确?

标签: php codeigniter pagination


【解决方案1】:

您返回的是一个数据对象,而不是实际的 int 行数。将您的模型方法更改为:

public function countProducts() 
{
    $query = $this->db->query("SELECT * FROM `tdt_articles` WHERE `deleted` = 0 AND `article_type` = 3");
    return $query->num_rows();
}

或者,您可以使用活动记录构建查询:

public function countProducts()
{
    $result = $this->db->from('tdt_articles')
                       ->where('deleted', 0)
                       ->where('article_type', 3)
                       ->get();

    return $result->num_rows();
}

您需要使用num_rows() 方法来获取结果中的记录数。

  • result_array() 返回结果的多维数组。
  • row_array() 返回结果的一维数组 - 一条记录
  • results() 返回一个 stdClass 对象
  • num_rows() 返回一个整数,表示数据库返回的记录数。

【讨论】:

    【解决方案2】:
    public function countProducts() {
        $query = $this->db->query("SELECT * FROM `tdt_articles` WHERE `deleted` = 0 AND `article_type` = 3");
        return $query->result();
    }
    

    select 子句不应该是这样的吗:

    SELECT count(id) as record_count
    

    方法/函数应该返回record_count的输出。

    [编辑] 现在您不需要在之后执行 count(...) 了。另外,您让数据库处理它,这比让 php 处理它更快。 [/编辑]

    【讨论】:

      【解决方案3】:

      控制器:

      $total_rows = $this->model_add->countresults()->num_rows();
      
      $config = array();
      $config["base_url"] = base_url() . "products/page/";
      $config["total_rows"] = $total_rows;
      $config["per_page"] = 12;
      $config["uri_segment"] = 4;
      $config["num_links"] = 2;
      $config["use_page_numbers"] = true; 
      

      型号:

      function countresults() {
      
            $this->db->select('*');
            $this->db->from($this->table);
      
            return $this->db->get();
      
          }
      

      【讨论】:

        猜你喜欢
        • 2020-04-28
        • 1970-01-01
        • 1970-01-01
        • 2011-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-01
        • 2018-02-01
        相关资源
        最近更新 更多