我是Codeigniter的新手,我正在尝试使用pagination
。我的问题是出乎意料的,因为我的分页代码完美地工作,除了URI段总是作为布尔值返回。我的代码是:
/* pagination */
$this->load->library('pagination');
$destination = $data['destination'];
$config = array();
$config["base_url"] = SEARCHHOTELS.$this->uri->segment(3);
$total_row = $this->db->get('hotel')->num_rows();
$config["total_rows"] = $total_row;
$config["per_page"] = 30;
$config['use_page_numbers'] = TRUE;
$config['num_links'] = $total_row;
$config['cur_tag_open'] = '<a class="active">';
$config['cur_tag_close'] = '</a>';
$config['next_link'] = 'Next';
$config['prev_link'] = 'Previous';
$this->pagination->initialize($config);
$str_links = $this->pagination->create_links();
$this->db->select('*');
if(!empty($data['destination'])){
$destination = $data['destination'];
$this->db->like('name',$destination);
$this->db->or_like('regionName',$destination);
}
$hSearch['records'] = $this->db->get('hotel',$config['per_page'],$this->uri->segment(3))->result_array();
$hSearch["links"] = explode(' ',$str_links);
/* paginationEnd */
其中SEARCHHOTELS常量为
define('SEARCHHOTELS', SITE_URL.'search/hotels/');
在我的代码中:$this->uri->segment(3)
总是返回布尔值。
当我点击我的分页时,网址值会改为:
http://localhost/holidays/search/hotels/
到:
http://localhost/holidays/search/hotels/1 (or 2,3,4)
URI段未设置偏移$this->db-get
查询中的值。 #
任何帮助将不胜感激。
答案 0 :(得分:5)
如果有人遇到这种麻烦,我想分享我在两天内找到的解决方案。
我的页面流程是:
search-controller->search-view->alot-of-ajax-request->find-all-hotels();
用于分页的uri段仅在控制器中工作,即它将在加载视图之前获取段。
如果你想在通过ajax调用的函数中获取uri段。
它将无法工作,只能获取控制器和方法的2个段,之后将跳过所有方法。
希望这会帮助其他人
答案 1 :(得分:1)
来自docs:
$ query = $ this-&gt; db-&gt; get(&#39; mytable&#39;,10,20);
//执行:SELECT * FROM mytable LIMIT 20,10
//(在MySQL中。其他数据库的语法略有不同)
那就是说,get()
方法的第三个参数是限制的,但你在那里放了页码。切换第二个和第三个参数的位置。但你需要在那里做一些数学
$offset = (int)$this->uri->segment(3) > 0 ? ($this->uri->segment(3) - 1) * $config['per_page'] : 0;
$hSearch['records'] = $this->db->get('hotel', $offset, $config['per_page'])->result_array();
我认为您的分页基本网址应为
$config['base_url'] = SEARCHHOTELS;
之后没有任何片段。
答案 2 :(得分:0)
您应该使用$ this-&gt; uri-&gt; segment(4)作为保存页面的uri的一部分。 您应该正确设置分页配置:
from itertools import takewhile
string = "716-0"
number = "".join(takewhile(str.isdigit, string))
$ this-&gt; uri-&gt; segment(3)是'酒店'我的代码。我是对的吗?