Codeigniter URI段返回布尔值

时间:2016-06-24 16:28:14

标签: php codeigniter pagination

我是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('&nbsp;',$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查询中的值。 #

任何帮助将不胜感激。

3 个答案:

答案 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)是'酒店'我的代码。我是对的吗?