- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
我有一个函数,它将州名称作为参数并显示该特定州的所有城市。由于城市列表很长,我在同一个函数中使用了分页,但是当我单击“下一步”或任何其他分页链接时,该函数接受 $state 变量中的偏移值。函数是
public function load_Page($state){
$this->load->database();
$this->load->library('pagination');
$a = 1;
$this->db->select("*")->where("userstate" , $a)->where("state" , $state);
$query0 = $this->db->get("city");
$this->db->select("*")->where("userstate" , $a)->where("state" , $state);
$query1 = $this->db->get('city' , 10 , $this->uri->segment(3));
$config["base_url"] = base_url()."index.php/city/load_Page";
$total_row = $query0->num_rows();
$config['page_query_string'] = TRUE;
$config["total_rows"] = $total_row;
$config["per_page"] = 10;
$this->pagination->initialize($config);
$data["state"] = $state;
$data["result"] = $query1->result();
//$data["rows"] = $query1->num_rows();
$this->load->view('header');
$this->load->view('city', $data);
$this->load->view('footer');
}
还有其他办法吗?还是我完全错了?
câu trả lời hay nhất
首先,当您进行分页时,页码必须来自 URL,并且它始终作为 Controller 方法中的参数提供。它应该默认为第 1 页。
defined('BASEPATH') OR exit('No direct script access allowed');
class City extends CI_Controller {
public function load_page( $state, $page = 1 ){
// I'm going to use an alias for this model
$this->load->model('example_model', 'model');
// Use the URL helper for site_url()
$this->load->helper('url');
// Set pagination config
$config['pagination_settings'] = [
'per_page' => 10,
'use_page_numbers' => TRUE,
'uri_segment' => 4, // This is very important!!!
'base_url' => site_url('city/load_page/' . $state)
];
// Get the total rows
$config['pagination_settings']["total_rows"] = $this->model->pagination_count( $state );
// Load and initialize pagination
$this->load->library('pagination');
$this->pagination->initialize($config['pagination_settings']);
$data = [
'state' => $state,
'rows' => $this->model->get_cities( $state, $page, $config['pagination_settings']['per_page'] ),
'links' => $this->pagination->create_links()
];
// Use data in views or wherever needed ...
$this->load->view('city', $data);
}
/**
* Create the rows to paginate
*/
public function setup()
{
// I'm going to use an alias for this model
$this->load->model('example_model', 'model');
$this->model->setup();
}
// -----------------------------------------------------------------------
}
接下来,您应该将数据库查询移动到模型中。您不需要为 2 个选择类型查询使用事务。
defined('BASEPATH') or exit('No direct script access allowed');
class Example_model extends CI_Model{
chức năng công cộng __construct()
{
cha mẹ::__construct();
$this->load->database();
}
public function pagination_count( $state )
{
return $this->db->where("state" , $state)
->count_all_results('city');
}
public function get_cities( $state, $page, $limit )
{
$offset = ( $page * $limit ) - $limit;
$query = $this->db->where("state" , $state)
->limit( $limit, $offset )
->get('city');
if( $query->num_rows() > 0 )
return $query->result();
trả về NULL;
}
/**
* Setup for testing
*/
public function setup()
{
$this->load->dbforge();
$fields = array(
'id' => array(
'type' => 'INT',
'constraint' => 5,
'unsigned' => TRUE,
'auto_increment' => TRUE
),
'state' => array(
'type' => 'VARCHAR',
'constraint' => '32',
),
'city' => array(
'type' => 'VARCHAR',
'constraint' => '32',
),
);
$this->dbforge->add_field($fields);
$this->dbforge->add_key('id', TRUE);
$this->dbforge->create_table('city', TRUE);
for( $x = 1; $x <= 40; $x++ )
{
$this->db->insert('city', array(
'state' => 'ca',
'city' => 'x' . $x
));
}
}
}
这是我使用的 View :
echo '' . $state . '
';
echo $links . '
';
foreach( $rows as $row )
{
echo $row->city . '
';
}
为了设置用于测试的数据库,我去了:
http://localhost/index.php/city/setup
然后为了检查分页是否有效,我去了:
http://localhost/index.php/city/load_page/ca
它应该对你有用,因为这段代码现在已经过全面测试。
更新--------------------
如果您想为分页添加更多参数,请使用查询字符串。您将需要使用此额外设置来设置分页配置:
$config['pagination_settings']['reuse_query_string'] = TRUE;
这意味着配置看起来像这样:
$config['pagination_settings'] = [
'per_page' => 10,
'use_page_numbers' => TRUE,
'uri_segment' => 4, // This is very important!!!
'base_url' => site_url('city/load_page/' . $state),
'reuse_query_string' => TRUE
];
然后使用参数创建指向第一页的链接:
http://localhost/index.php/city/load_page/ca?a=1&b=2&c=3
并且由于 reuse_query_strings
被设置为 TRUE
,这意味着 ?a=1&b=2&c=3
将全部附加到分页链接。
关于php - 如何在分页 CodeIgniter 函数中使用参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45809464/
Hàm sscanf() của ngôn ngữ C: đọc tệp tiêu đề dữ liệu theo định dạng đã chỉ định từ chuỗi: ?
Gần đây, tôi có một câu hỏi về đánh giá trước công việc mà tôi không biết cách giải quyết ngay cả khi đã truy vấn cách thức hoạt động của từng tính năng. Đây là một mã giả. Dưới đây là một hàm có tên foo() sẽ được truyền một giá trị và trả về một giá trị. Nếu bạn chuyển giá trị sau cho hàm foo,
Hàm CStr trả về một biểu thức đã được chuyển đổi thành Biến thể của kiểu con Chuỗi. Tham số biểu thức CStr(biểu thức) là bất kỳ biểu thức hợp lệ nào. Lưu ý rằng thông thường, bạn có thể
Hàm CSng trả về một biểu thức đã được chuyển đổi thành Biến thể của kiểu con Đơn. Tham số biểu thức CSng(biểu thức) là bất kỳ biểu thức hợp lệ nào. Mô tả Thông thường, nó có thể được
Hàm CreateObject tạo và trả về một tham chiếu đến đối tượng Tự động hóa. CreateObject(servername.typename [, location]) Dịch vụ tham số
Hàm Cos trả về cosin của một góc. Cos(số) Đối số số có thể là bất kỳ biểu thức số hợp lệ nào biểu thị một góc theo radian. Mô tả Hàm Cos lấy một góc và trả về tỷ lệ hai cạnh của một tam giác vuông. Tỷ lệ này là
Hàm CLng trả về một biểu thức đã được chuyển đổi thành Biến thể của kiểu con Dài. Tham số biểu thức CLng(biểu thức) là bất kỳ biểu thức hợp lệ nào. Mô tả Thông thường, bạn có thể sử dụng
Hàm CInt trả về một biểu thức đã được chuyển đổi thành Biến thể của kiểu con Số nguyên. Tham số biểu thức CInt(biểu thức) là bất kỳ biểu thức hợp lệ nào. Mô tả Thông thường, nó có thể được
Hàm Chr trả về ký tự tương ứng với mã ký tự ANSI đã chỉ định. Chr(charcode) Tham số charcode là một số xác định ký tự. Mô tả Các số từ 0 đến 31 thể hiện tiêu chuẩn không thể in được
Hàm CDbl trả về một biểu thức đã được chuyển đổi thành kiểu con Variant của Double. Tham số biểu thức CDbl(biểu thức) là bất kỳ biểu thức hợp lệ nào. Mô tả Thông thường, bạn có thể
Hàm CDate trả về một biểu thức đã được chuyển đổi thành kiểu con Biến thể của Ngày. CDate(date) Tham số ngày là bất kỳ biểu thức ngày hợp lệ nào. Giải thích rằng hàm IsDate được sử dụng để xác định d
Hàm CCur trả về một biểu thức đã được chuyển đổi thành Biến thể của kiểu con Tiền tệ. Tham số biểu thức CCu(biểu thức) là bất kỳ biểu thức hợp lệ nào. Mô tả Thông thường,
Hàm CByte trả về một biểu thức đã được chuyển đổi thành Biến thể của kiểu con Byte. Tham số biểu thức CByte(biểu thức) là bất kỳ biểu thức hợp lệ nào. Lưu ý rằng thông thường, bạn có thể
Hàm CBool trả về một biểu thức đã được chuyển đổi thành Biến thể của kiểu con Boolean. Biểu thức CBool(biểu thức) là bất kỳ biểu thức hợp lệ nào. Giải thích nếu cũ
Hàm Atn trả về arctang của một số. Tham số số Atn(number) có thể là bất kỳ biểu thức số hợp lệ nào. Mô tả: Hàm Atn tính tỷ lệ (số) hai cạnh của một tam giác vuông và trả về cung của góc tương ứng.
Hàm Asc trả về mã ký tự ANSI tương ứng với chữ cái đầu tiên của chuỗi. Asc(string) Tham số chuỗi là bất kỳ biểu thức chuỗi hợp lệ nào. Nếu tham số chuỗi không chứa ký tự thì sẽ xảy ra lỗi thời gian chạy.
Hàm Array trả về một Biến thể chứa một mảng. Array(arglist) Tham số arglist là danh sách các giá trị được phân tách bằng dấu phẩy để gán cho các phần tử mảng có trong Biến thể. Nếu tham số này không được chỉ định thì
Hàm Abs trả về giá trị tuyệt đối của một số. Abs(số) Đối số số có thể là bất kỳ biểu thức số hợp lệ nào. Nếu số chứa Null thì trả về Null; nếu biến chưa được khởi tạo thì trả về 0.
Hàm FormatPercent trả về một biểu thức đã được định dạng dưới dạng phần trăm có dấu % ở cuối (nhân với 100). FormatPercent(biểu thức[,NumDigitsAfterD
Hàm FormatNumber trả về một biểu thức đã được định dạng dưới dạng giá trị số. FormatNumber( biểu thức [,NumDigitsAfterDecimal [,Inc
Tôi là một lập trình viên xuất sắc, rất giỏi!