CodeIgniter分页。总行数

时间:2014-02-24 21:31:22

标签: php codeigniter pagination

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

$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"]上我把它显示的确切记录数量显示出来,但是如果我把它们看作是在那里显示的那样,它并没有向我显示所有这些记录。根本无法理解是什么问题。希望你能帮助我!谢谢!!!

3 个答案:

答案 0 :(得分: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()返回一个整数,指定数据库返回的记录数。

答案 1 :(得分:0)

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的输出。

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

答案 2 :(得分:0)

控制器:

$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();

    }