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

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

不言
不言オリジナル
2018-06-14 14:17:471443ブラウズ

この記事では、主に 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。