第1节
我在“显示10条记录中的1 - 5条”中遇到了问题。我有一段代码只能在第一页上工作,当我点击第二页然后它显示相同的结果“显示1 - 5的10条记录”而不是“显示10条记录中的10条”。
控制器中的代码
$total=$config["total_rows"];
$per_page=$config['per_page'];
$curpage=floor(($this->uri->segment(1)/$config['per_page']) + 1);
$result_start = ($curpage - 1) * $per_page + 1;
if ($result_start == 0) $result_start= 1; // *it happens only for the first run*
$result_end = $result_start+$per_page-1;
if ($result_end < $per_page) // happens when records less than per page
{ $result_end = $per_page; }
else if ($result_end > $total) // happens when result end is greater than total records
{ $result_end = $total;}
$data['show']="displaying $result_start to $result_end of $total";
我不知道它有什么问题,我尝试过其他代码,我从不同的网站上找到它们,但它们无法正常工作。
第2节
我有一个过滤器部分,用户可以按尺寸,颜色和价格过滤产品, 如何实现这一部分?
我的主要/索引控制器
public function index($page=1)
{
$config = array();
$keyword = $this->input->post('search');
if ($keyword === null){ $keyword = $this->session->userdata('search');}
else{ $this->session->set_userdata('search',$keyword);}
$config["base_url"] = base_url();
$config["total_rows"] = $this->crt->total_items($keyword);
$config['use_page_numbers'] =true;
$config['cur_tag_open'] = '<a class="page-numbers current">';
$config['cur_tag_close'] = '</a>';
$config["per_page"] =5;
$config["uri_segment"] = 1;
$this->pagination->initialize($config);
$page = ($page - 1) * $config['per_page'];
// showing x to y of z records
$total=$config["total_rows"];
$per_page=$config['per_page'];
$curpage=floor(($this->uri->segment(1)/$config['per_page']) + 1);
$result_start = ($curpage - 1) * $per_page + 1;
if ($result_start == 0) $result_start= 1; // *it happens only for the first run*
$result_end = $result_start+$per_page-1;
if ($result_end < $per_page) // happens when records less than per page
{ $result_end = $per_page; }
else if ($result_end > $total) // happens when result end is greater than total records
{ $result_end = $total;}
$data['show']="displaying $result_start to $result_end of $total";
$data['sidebar']=$this->crt->sidebar_cat();
$data['products']=$this->crt->get_product($config["per_page"], $page,$keyword);
$data["links"] = $this->pagination->create_links();
$this->load->view('header');
$this->load->view('index',$data);
$this->load->view('footer');
}
我的模特
// Paginitions for Items
function total_items($keyword)
{
//return $this->db->count_all("product");
$this->db->like('product_name',$keyword);
$this->db->from('product');
return $this->db->count_all_results();
}
//Fetching Products
public function get_product($limit,$start,$keyword){
// $this->db->where('Is_Hidden',0);
// $this->db->select('*');
// $this->db->from('product');
$this->db->order_by('product_id', 'DESC');
$this->db->limit($limit, $start);
$this->db->like('product_name',$keyword);
$query = $this->db->get_where('product');
if(!$query->num_rows()>0)
{
echo '<h1>No product available</h1>';
}
else
{
foreach ($query->result() as $row) {
$data[] = $row;
}
return $data;
}
}
我如何获得过滤器部分?
更新1
第1节问题已通过替换这两行来解决
$curpage=floor(($this->uri->segment(1)/$config['per_page']) + 1);
if ($result_start == 0) $result_start= 1; //
以
$curpage=$this->uri->segment(1);
if ($result_start == 0 || $result_start<0) $result_start= 1; //
更新2
我以某种方式做了过滤器部分,但现在我陷入了ajax问题。问题是当颜色或大小复选框为空时,它会抛出foreach循环的错误。 我只需要控制空或空部分,就像未选中该复选框一样,它不会将值发送/发布到控制器......
我的Ajax代码
function clr(){
var selected = new Array();
var size = new Array();
var url="<?php echo base_url('Cart/filt_color');?>";
// alert(url);
$("input:checkbox[name=color]:checked").each(function() {
selected.push($(this).val());
//console.log(selected);
});
// Sizes
$("input:checkbox[name=size]:checked").each(function() {
size.push($(this).val());
//console.log(selected);
});
$.ajax({
url:url,
method:"post",
data:{'colors':selected,'sizes':size},
success:function(data)
{
//
//console.log(data);
$("#mdv").html(data);
}
});
}
我尝试了很多检查,例如undefined
或==''
或data.length <-1
等。data.length
会做一些检查,但我无法单独检查变量比如,我发送了两个变量data: color,size
如何单独检查变量,如: if(data.color.length < 0 )
。
答案 0 :(得分:0)
初始化分页配置时,尝试使用$config[base_url]
中的控制器/方法,并从$this->uri->segment(3)
获取页码
答案 1 :(得分:-1)
已回答为Here,所有详细信息和代码都会在上述链接问题中发布。