ci分页查询ajax,CI支持AJAX分页

隔了几年又接触了CI框架,需要做个AJAX分页,以前也就是懂个皮毛,现在是现学活用了。

首先来个正常分页的demo

public function querylog(){

$data = [];

if(!empty($_GET["stime"])){

$current_url= 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

}

else{

$current_url= 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'?noparam=1';

}

!empty($_GET["user"]) && $this->db->where("user",$_GET["user"]);

!empty($_GET["host"]) && $this->db->where("host",$_GET["host"]);

$stime = !empty($_GET["stime"])? $_GET["stime"]: date('Y-m-d H:i',time()-3600*24*30);

$etime = !empty($_GET["etime"])? $_GET["etime"]: date('Y-m-d H:i',time()+60);

$this->db->where("create_time >=",$stime);

$this->db->where("create_time <=",$etime);

// 分页

$this->load->library('pagination');

$config['base_url'] = $current_url;

$config['total_rows'] = $this->log->get_total_rows();

$config['per_page'] = 30;

$config['num_links'] = 5;

$config['page_query_string'] = TRUE;

$config['use_page_numbers'] = TRUE;

$this->pagination->initialize($config);

$offset = !empty($_GET['per_page']) ? $_GET['per_page'] : 1;

!empty($_GET["user"]) && $this->db->where("user",$etime);

$this->db->order_by("id","desc");

$data['datalist'] = $this->log->get_total_record_paging($config['per_page'],($offset-1)*$config['per_page']);

$setval["host"]=isset($_GET["host"]) ? $_GET["host"] : "";

$setval["user"]=isset($_GET["user"]) ? $_GET["user"] : "";

$setval["stime"]=$stime;

$setval["etime"]=$etime;

$data["setval"]=$setval;

$this->layout->view("inception/querylog",$data);

}

接下来,就是正题了,去system/libraries/Pagination.PHP添加个create_ajax_links方法

/**

* Generate the pagination links

*

* @access public

* @return string

*/

function create_ajax_links()

{

// If our item count or per-page total is zero there is no need to continue.

if ($this->total_rows == 0 OR $this->per_page == 0)

{

return '';

}

// Calculate the total number of pages

$num_pages = ceil($this->total_rows / $this->per_page);

// Is there only one page? Hm... nothing more to do here then.

if ($num_pages == 1)

{

return '';

}

// Set the base page index for starting page number

if ($this->use_page_numbers)

{

$base_page = 1;

}

else

{

$base_page = 0;

}

// Determine the current page number.

$CI =& get_instance();

if ($CI->config->item('enable_query_strings') === TRUE OR $this->page_query_string === TRUE)

{

if ($CI->input->get($this->query_string_segment) != $base_page)

{

$this->cur_page = $CI->input->get($this->query_string_segment);

// Prep the current page - no funny business!

$this->cur_page = (int) $this->cur_page;

}

}

else

{

if ($_REQUEST['page'] != $base_page)

{

$this->cur_page = $_REQUEST['page'];

// Prep the current page - no funny business!

$this->cur_page = (int) $this->cur_page;

}

}

// Set current page to 1 if using page numbers instead of offset

if ($this->use_page_numbers AND $this->cur_page == 0)

{

$this->cur_page = $base_page;

}

$this->num_links = (int)$this->num_links;

if ($this->num_links < 1)

{

show_error('Your number of links must be a positive number.');

}

if ( ! is_numeric($this->cur_page))

{

$this->cur_page = $base_page;

}

// Is the page number beyond the result range?

// If so we show the last page

if ($this->use_page_numbers)

{

if ($this->cur_page > $num_pages)

{

$this->cur_page = $num_pages;

}

}

else

{

if ($this->cur_page > $this->total_rows)

{

$this->cur_page = ($num_pages - 1) * $this->per_page;

}

}

$uri_page_number = $this->cur_page;

if ( ! $this->use_page_numbers)

{

$this->cur_page = floor(($this->cur_page/$this->per_page) + 1);

}

// Calculate the start and end numbers. These determine

// which number to start and end the digit links with

$start = (($this->cur_page - $this->num_links) > 0) ? $this->cur_page - ($this->num_links - 1) : 1;

$end = (($this->cur_page + $this->num_links) < $num_pages) ? $this->cur_page + $this->num_links : $num_pages;

// Is pagination being used over GET or POST? If get,add a per_page query

// string. If post,add a trailing slash to the base URL if needed

if ($CI->config->item('enable_query_strings') === TRUE OR $this->page_query_string === TRUE)

{

$this->base_url = rtrim($this->base_url).'&'.$this->query_string_segment.'=';

}

else

{

$this->base_url = rtrim($this->base_url,'/') .'/';

}

// And here we go...

$output = '';

// Render the "First" link

if ($this->first_link !== FALSE AND $this->cur_page > ($this->num_links + 1))

{

$first_url = ($this->first_url == '') ? $this->base_url : $this->first_url;

$output .= $this->first_tag_open.'anchor_class.'href="javascript:void(0)">'.$this->first_link.''.$this->first_tag_close;

}

// Render the "prevIoUs" link

if ($this->prev_link !== FALSE AND $this->cur_page != 1)

{

if ($this->use_page_numbers)

{

$i = $uri_page_number - 1;

}

else

{

$i = $uri_page_number - $this->per_page;

}

if ($i == 0 && $this->first_url != '')

{

$output .= $this->prev_tag_open.'anchor_class.'href="javascript:void(0)">'.$this->prev_link.''.$this->prev_tag_close;

}

else

{

$i = ($i == 0) ? '' : $this->prefix.$i.$this->suffix;

$output .= $this->prev_tag_open.'anchor_class.'href="javascript:void(0)">'.$this->prev_link.''.$this->prev_tag_close;

}

}

// Render the pages

if ($this->display_pages !== FALSE)

{

// Write the digit links

for ($loop = $start -1; $loop <= $end; $loop++)

{

if ($this->use_page_numbers)

{

$i = $loop;

}

else

{

$i = ($loop * $this->per_page) - $this->per_page;

}

if ($i >= $base_page)

{

if ($this->cur_page == $loop)

{

$output .= $this->cur_tag_open.$loop.$this->cur_tag_close; // Current page

}

else

{

$n = ($i == $base_page) ? '' : $i;

if ($n == '' && $this->first_url != '')

{

$output .= $this->num_tag_open.'anchor_class.'href="javascript:void(0)">'.$loop.''.$this->num_tag_close;

}

else

{

$n = ($n == '') ? '' : $this->prefix.$n.$this->suffix;

$output .= $this->num_tag_open.'anchor_class.'href="javascript:void(0)">'.$loop.''.$this->num_tag_close;

}

}

}

}

}

// Render the "next" link

if ($this->next_link !== FALSE AND $this->cur_page < $num_pages)

{

if ($this->use_page_numbers)

{

$i = $this->cur_page + 1;

}

else

{

$i = ($this->cur_page * $this->per_page);

}

$ajax_p = $this->prefix.$i.$this->suffix;

$output .= $this->next_tag_open.'anchor_class.'href="javascript:void(0)">'.$this->next_link.''.$this->next_tag_close;

}

// Render the "Last" link

if ($this->last_link !== FALSE AND ($this->cur_page + $this->num_links) < $num_pages)

{

if ($this->use_page_numbers)

{

$i = $num_pages;

}

else

{

$i = (($num_pages * $this->per_page) - $this->per_page);

}

$ajax_p = $this->prefix.$i.$this->suffix;

$output .= $this->last_tag_open.'anchor_class.'href="javascript:void(0)">'.$this->last_link.''.$this->last_tag_close;

}

// Kill double slashes. Note: Sometimes we can end up with a double slash

// in the penultimate link so we'll kill all double slashes.

$output = preg_replace("#([^:])//+#","\\1/",$output);

// Add the wrapper HTML if exists

$output = $this->full_tag_open.$output.$this->full_tag_close;

return $output;

} 其实也很简单,大致就是把create_links方法里的啊标签里的html改了下,借鉴TP的。

总结

以上是编程之家为你收集整理的CI支持AJAX分页全部内容,希望文章能够帮你解决CI支持AJAX分页所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值