PHP CodeIgniter 페이징 및 다중 조건 쿼리를 구현하는 방법

不言
풀어 주다: 2023-04-01 07:46:02
원래의
1479명이 탐색했습니다.

이 글은 주로 PHP CodeIgniter 페이징 예제와 다중 조건 쿼리 아이디어에 대한 자세한 설명을 소개합니다. 매우 좋고 참고할만한 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있습니다.

최근에는 CI 프레임워크를 사용할 때 CI 페이징 클래스를 사용했습니다. 예전에는 페이징을 위해 프론트 엔드를 사용했는데 이번에는 잊어버린 마음으로 프레임워크와 함께 제공되는 것을 사용했습니다.

페이지에 조건부 필터링 양식이 있기 때문에 원하는 효과는 조건 입력 후 페이지 이동 후에도 입력한 조건을 유지할 수 있다는 것입니다. 잠시 고민한 끝에 아래와 같은 코드를 생각해냈습니다.

컨트롤러 코드

class Monitors extends CI_Controller {
public function warning(){
    $config= array();
    $config['per_page'] = 15; //每页显示的数据数
    $current_page = intval($this->input->get("per_page")); //获取当前分页页码数
   
 $status=$this->input->get("filter-status",TRUE);
 $level=$this->input->get('filter-level',TRUE);
 $timestamp=$this->input->get('filter-timestamp',TRUE);
    $all = $this->monitors_m->getAllData($current_page,$config['per_page'],$status,$timestamp,$level);
   //这里返回的有总条数和具体的数据,根据自己的情况略加修改即可
 $data['allevent'] = $all['content'];
 $config['total_rows']   = $all['count'];//总条数
    $config['num_links'] = 3;//页码连接数
 $config['use_page_numbers'] = TRUE; 
 $config['page_query_strings'] = TRUE;//关键配置
 $config['base_url'] = base_url().'index.php/monitors/warning?'&filter-status='.$status.'&filter-level='.$level.'&filter-timestamp='.$timestamp;//关键配置
 $this->load->library('pagination');//加载ci pagination类
 $this->pagination->initialize($config);
 $data['page'] = $this->pagination->create_links();//关键代码
 $this->load->view("monitors_v",$data);
}
로그인 후 복사

주요 구성 매개변수

$config[‘page_query_string']
로그인 후 복사

true로 설정하면 URL은 다음과 같이 "index.php/monitors/warning?per_page=20"이 됩니다

【참고】 "per_page"는 기본적으로 전달되는 쿼리 문자열이지만 $config['query_string_segment'] = 'your string'을 사용하여 구성할 수도 있습니다.

제 솔루션에서는 TRUE로 설정되어 있습니다. 물론 기본값은 TRUE입니다. , 관계없이 가능합니다;

$config[‘base_url']
로그인 후 복사

처음에 다음과 같은 상황으로 설정하면 특정 페이지에 대해 조건부 필터링이 가능하지만 점프 후 새로고침 문제로 인해 조건이 사라집니다.

$config['base_url'] = base_url().'index.php/monitors/warning;
로그인 후 복사

다음 방법을 사용할 수 있습니다. hohoho

$status=$this->input->get("filter-status",TRUE);
$level=$this->input->get('filter-level',TRUE);
$timestamp=$this->input->get('filter-timestamp',TRUE);
$config['base_url'] = base_url().'index.php/monitors/warning?'&filter-status='.$status.'&filter-level='.$level.'&filter-timestamp='.$timestamp;//关键配置
로그인 후 복사

페이지 코드 보기

단 한 문장으로, 페이징 요소를 배치해야 하는 곳에 이 문장을 추가하세요. 여기 $ 페이지 변수가 있습니다. 컨트롤러에 저장됩니다$this->pagination->create_links();

<?php echo $page?>
로그인 후 복사

페이징 스타일 설정

여기서 부트스트랩 스타일이 사용됩니다

$config[&#39;first_link&#39;]   = "<<";//首页
$config[&#39;prev_link&#39;]   = "<";//上一页
$config[&#39;next_link&#39;]   = ">";//下一页
$config[&#39;last_link&#39;]   = ">>";//尾页
$config[&#39;full_tag_open&#39;] = &#39;<ul class="pagination pagination-split">&#39;; 
$config[&#39;full_tag_close&#39;] = &#39;</ul>&#39;; 
$config[&#39;first_tag_open&#39;] = &#39;<li>&#39;;//第一个链接的起始标签。
$config[&#39;first_tag_close&#39;] = &#39;</li>&#39;;//第一个链接的结束标签。
$config[&#39;next_tag_open&#39;] = &#39;<li>&#39;;//下一页链接的起始标签。
$config[&#39;next_tag_close&#39;] = &#39;</li>&#39;;//下一页链接的结束标签。
$config[&#39;prev_tag_open&#39;] = &#39;<li>&#39;;//上一页链接的起始标签。
$config[&#39;prev_tag_close&#39;] = &#39;</li>&#39;;//上一页链接的结束标签。
$config[&#39;cur_tag_open&#39;] = &#39;<li class="active"><a>&#39;;
$config[&#39;cur_tag_close&#39;] = &#39;</a></li>&#39;;//当前页链接的结束标签。
$config[&#39;num_tag_open&#39;] = &#39;<li>&#39;;//数字链接的起始标签。
$config[&#39;num_tag_close&#39;] = &#39;</li>&#39;;//数字链接的结束标签。
로그인 후 복사

위 내용은 이 글의 전체 내용입니다. 모든 사람에게 유용하길 바랍니다. 도움말 학습, 더 많은 관련 콘텐츠를 보려면 PHP 중국어 웹사이트에 주목하세요!

관련 권장 사항:

Ajax 페이징을 구현하고 모두 선택, 선택 반전, 선택 취소 및 일괄 삭제 코드를 구현하는 CI 프레임워크 정보

CI 프레임워크를 사용하여 프런트엔드와 백엔드를 분리하는 방법 프레임워크

위 내용은 PHP CodeIgniter 페이징 및 다중 조건 쿼리를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿