当我尝试添加分页链接时,出现不受支持的操作数类型错误
这是我的代码
public function getCategory($limit,$offset){
$this->db->select("*");
$this->db->from("tbl_category");
$this->db->limit($limit,$offset);
$row = $this->db->get()->result_array();
return $row;
}
public function num_rows(){
$this->db->select('*');
$this->db->from('tbl_category');
$row = $this->db->get()->result_array();
return $row;
}
public function category($script="list",$id=""){
$data['script'] = $script;
if($script == 'list'){
$config = [
'base_url' => base_url('http://localhost/training/admin/'),
'per_page' => 2,
'total_rows' => $this->admin_model->num_rows(),
];
$this->pagination->initialize($config);
$rows = $this->admin_model->getCategory($config['per_page'], $this->uri->segment(3));
$data['rows'] = $rows;
}
在查看文件中,我这样做是为了获取链接
<?php $this->pagination->create_links(); ?>
遇到未捕获的异常 类型:错误
消息:不支持的操作数类型
文件名:C:\ xampp \ htdocs \ training \ system \ libraries \ Pagination.php
行号:412
回溯:
文件:C:\ xampp \ htdocs \ training \ application \ views \ category.php 线:101 功能:create_links
文件:C:\ xampp \ htdocs \ training \ application \ controllers \ Admin.php 线:150 功能:查看
文件:C:\ xampp \ htdocs \ training \ index.php 线:315 功能:require_once
答案 0 :(得分:0)
在Controller函数中,当您获得结果时,必须按如下所示将其传递到View文件中。
<Host name="nn" appBase="C:\eWebsitesWS\nmj"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="jweb">
然后在您的视图文件中,您可以获得分页链接。
$data['rows'] = $rows;
// load the view
$this->load->view('category_view', $data);
编辑=> 在这里,您在配置数组<?php echo $this->pagination->create_links(); ?>
中分配一个数组而不是计数。
您的模型功能是
'total_rows' => $this->admin_model->num_rows(),
在上述函数中,您将返回public function num_rows(){
$this->db->select('*');
$this->db->from('tbl_category');
$row = $this->db->get()->result_array();
return $row; //This $row is an Array, NOT count no. of rows
}
,它是一个数组。而这就是您遇到诸如不支持的操作数类型错误之类的错误的原因
因此有2种解决方案。 仅尝试任何一种解决方案。
1),您必须将结果集的计数返回到total_rows变量:
return $row;
或 2)。您可以更改功能。
$config = [
'base_url' => base_url('http://localhost/training/admin/'),
'per_page' => 2,
'total_rows' => count($this->admin_model->num_rows()), //Pass the count of returned array.
];
注意:- 如果只想计算行数,则可以使用 $ this-> db-> count_all_results()作为在下面。
public function num_rows(){
$this->db->select('*');
$this->db->from('tbl_category');
$row = $this->db->get()->result_array();
return $row->num_rows(); //Return count result instead of array.
}
num_rows():-使用 num_rows()首先执行查询,然后可以检查获得了多少行。 在需要表数据时很有用。
count_all_results():-使用 count_all_results(),您可以获得查询将产生的行数,但没有提供实际的结果集。 在仅需要行计数(例如分页)时很有用,显示否。记录等。
在这里参考我的另一个答案。 Codigniter Query Returning wrong count
答案 1 :(得分:-1)
$mess_fees = $this->db->query("SELECT sum(t2.amount) as mess_fees FROM `mess_fee_head` as t1 JOIN mess_fee_detail as t2 ON t1.id=t2.mess_fee_head_id WHERE t1.batch=$student_batch_id AND t1.academic_year_id=$newstudent_acedemic_year_id AND t2.status='Y'")->result();
$num=4;
$mess_fee_amount=($mess_fees)/$num;