ホームページ > バックエンド開発 > PHPチュートリアル > PHP CodeIgniter ページングと複数条件クエリを実装する方法

PHP CodeIgniter ページングと複数条件クエリを実装する方法

不言
リリース: 2023-04-01 07:46:02
オリジナル
1509 人が閲覧しました

この記事では、主に 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']
ログイン後にコピー

If true に設定すると、URL は次のように「index.php/monitors/warning?per_page=20」になります。

[注] 「per_page」はデフォルトで渡されるクエリ文字列ですが、$ を使用することもできます。 config[ 'query_string_segment'] = '設定する文字列'

私のソリューションでは、もちろん、TRUE がデフォルト値です。そのままにしておくことができます。

$config[‘base_url']
ログイン後にコピー

最初に以下の状況に設定されている場合、特定のページで条件をフィルタリングすることができますが、ジャンプ後は更新の問題により条件が適用されなくなります。

$config['base_url'] = base_url().'index.php/monitors/warning;
ログイン後にコピー

次のメソッドを使用して、ほほほほほほほほほほほほほほほほほほほほと高く人気が高くなります。

$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;//关键配置
ログイン後にコピー

ページを表示します。 コード

は 1 つの文です。ここの $page 変数はコントローラーに保存されます。

<?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 中国語 Web サイトをご覧ください。

関連する推奨事項:

Ajax ページングとすべての選択、逆選択、選択なし、一括削除を実装する CI フレームワークのコードについて

##CI フレームワークを使用してフレームワークのフロントエンドとバックエンドの分離を実現する方法

以上がPHP CodeIgniter ページングと複数条件クエリを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート