CI分頁搜索實現(xiàn)

?

CI分頁搜索實現(xiàn)

分類:?php?學習筆記2013-10-28 16:13?992人閱讀?評論(2)?收藏?舉報

ci分頁搜索ci條件搜索分頁ci編寫條件分頁搜索ci編寫條件搜索codeigniter條件搜索

一动看、背景說明

  由于公司新啟動了一個項目,在開發(fā)的前期,老大說這次用CI框架來做布持,于是就開始了各種研究筐眷。因為是管理系統(tǒng)的項目肿孵,所以會有很多的搜索分頁實現(xiàn)澳眷,但是在用CI原生的分頁時候發(fā)覺達不到效果胡嘿。比如說,有些時候需要同時保存username和gender的條件查詢而進行分頁境蔼,試了用session和get的方法灶平,最后折騰了一天,終于搞定了箍土,現(xiàn)在記錄一下這個過程吧逢享。

二、實現(xiàn)說明

利用URI類的segment來判斷是否為第一次加載吴藻,以致設(shè)置相應(yīng)的查詢條件瞒爬;

利用session來保存相應(yīng)的查詢條件;

設(shè)置分頁類來達到效果沟堡;

三侧但、具體步驟

  1.設(shè)置公共函數(shù),進行分頁設(shè)置選項航罗,具體代碼如下:

[php]?view plaincopy

/**?

?????*?分頁生成?

?????*?@param?string?$base_url??當前分頁URL?

?????*?@param?int?$total_rows???數(shù)據(jù)總條數(shù)?

?????*?@param?int?$per_page?????每頁顯示數(shù)據(jù)條數(shù)?

?????*?@param?int?$uri_segment??分頁方法自動測定你?URI?的哪個部分包含頁數(shù)?

?????*?@param?int?$cur_page?????當前頁碼禀横,用于條件查詢時初始返回第一頁?

?????*?@return?mixed????????????分頁信息?

?????*/??

????public?function?getPageConfigInfo($base_url?=?null,?$total_rows?=?0,?$per_page?=?0,?$uri_segment?=?0,$offset=0)?{??

????????$config?=?array();??


????????if?($offset?==?0)?{??

????????????$cur_page?=?1;??

????????}??


????????if(isset($cur_page)){??

????????????$config['cur_page']?=?$cur_page;??

????????}??


????????$config['base_url']?=?site_url()?.?$base_url;??

????????$config['total_rows']?=?$total_rows;??


????????$config['per_page']?=?$per_page;??

????????$config['uri_segment']?=?$uri_segment;??


????????$config['full_tag_open']?=?"<table?width='100%'>?<tr??style=\"background-color:#eee;line-height:25px;\"?align='right'><td>";??

????????$config['full_tag_close']?=?'</td></tr></table>';??


????????$config['first_link']?=?'首頁';??

????????$config['first_tag_open']?=?'?<span?class="page_link">[';??

????????$config['first_tag_close']?=?']</span>?';??


????????$config['last_link']?=?'尾頁';??

????????$config['last_tag_open']?=?'?<span?class="page_link">[';??

????????$config['last_tag_close']?=?']</span">?';??


????????$config['next_link']?=?'下一頁';??

????????$config['next_tag_open']?=?'?<span?class="page_link">[';??

????????$config['next_tag_close']?=?']</span">?';??


????????$config['prev_link']?=?'上一頁';??

????????$config['prev_tag_open']?=?'<span?class="page_link">[';??

????????$config['prev_tag_close']?=?']</span">';??


????????$config['num_tag_open']?=?'?<span?class="page_link">[';??

????????$config['num_tag_close']?=?']</span">?';??


????????$config['cur_tag_open']?=?'?[<span?style="color:red;font-weight:bold;">';??

????????$config['cur_tag_close']?=?'</span>]?';??

????????return?$config;??

????}??

  大概說一下,除了基本CI要求的參數(shù)之外粥血,還有一個參數(shù):

[php]?view plaincopy

$config['cur_page']?=?$cur_page;??

????????這個是設(shè)置當前頁碼的參數(shù)柏锄,多設(shè)置這個參數(shù)有一個原因,當用戶點擊查詢重新加載新的數(shù)據(jù)的時候复亏,需要分頁顯示的頁碼設(shè)置成第一頁趾娃,所以用了如下代碼來判斷:

[php]?view plaincopy

????if?($offset?==?0)?{??

????????$cur_page?=?1;??

????}??

??????即偏移量為0則跳轉(zhuǎn)到第一頁;

  2.在Controllers設(shè)置相應(yīng)處理

  部分代碼如下:

[php]?view plaincopy

????//計算偏移量缔御,保留和刪除session條件??

????$offset?=?0;??


????if?($this->uri->segment($this->uri_segment)?!=?'')?{??

????????$offset?=?(int)?($this->uri->segment($this->uri_segment)?-?1)?*?$this->per_page;??

????????if?($this->session->userdata('search')?!=?'')?{??

????????????$where?=?$this->session->userdata('search');?//保持條件查詢??

????????}??

????}?else?{??

????????$this->session->unset_userdata('client_ver');??

????????$this->session->unset_userdata('deal_state');??

????????$this->session->unset_userdata('phone_type');??

????????$this->session->unset_userdata('begin_dt');??

????????$this->session->unset_userdata('end_dt');??

????????$this->session->unset_userdata('search');??

????}??


????//客戶端版本條件查詢??

????if?($this->input->post('client_version')?!=?'')?{??

????????$_client_ver?=?$this->input->post('client_ver');??

????????$where?.=?"?AND?client_version?LIKE?'%"?.?$_client_ver?.?"%'";??

????????$this->session->set_userdata('client_ver',?$_client_ver);??

????}?else?{??

????????$this->session->unset_userdata('client_ver');??

????}??


????//操作狀態(tài)條件查詢??

????if?($this->input->post('deal_state')?!=?'')?{??

????????$_deal_state?=?$this->input->post('state');??

????????$where?.=?"?AND?deal_state='"?.?$_deal_state?.?"'";??

????????$this->session->set_userdata('deal_state',?$_deal_state);??

????}?else?{??

????????$this->session->unset_userdata('deal_state');??

????}??

????? 至此抬闷,獲取前臺傳入數(shù)據(jù)已經(jīng)基本結(jié)束

  3.修改Pagination.php類

???????1)先$use_page_numbers將此變量設(shè)置為TRUE,用頁碼代替偏移量耕突,即顯示分頁時候1笤成,2,3...

???????2)來到create_links()方法有勾,對如下代碼:

[php]?view plaincopy

????if?($CI->uri->segment($this->uri_segment)?!=?$base_page)??

????{??

????????$this->cur_page?=?$CI->uri->segment($this->uri_segment);??


????????//?Prep?the?current?page?-?no?funny?business!??

????????$this->cur_page?=?(int)?$this->cur_page;??

????}??

if語句進行修改為:

[php]?view plaincopy

if?(($CI->uri->segment($this->uri_segment)?!=?$base_page)&&?$this->cur_page?==?0)??

用這個判斷來修復(fù)當用戶點擊查詢時疹启,實際為第一頁,但是頁碼顯示第二頁的BUG蔼卡;

???? 3)最后一個地方的修改喊崖,

[php]?view plaincopy

$first_url?=?($this->first_url?==?'')???$this->base_url?:?$this->first_url;??

這條語句是用來首頁的代碼,因為本方法是通過判斷segment來判斷是否為首次加載雇逞,原生CI分頁當點擊首頁時出現(xiàn)的鏈接地址此部分segment為空荤懂,就會導(dǎo)致當已經(jīng)選擇條件查詢分頁時,點擊首頁把所有條件刪除塘砸,所以改為如下即可:

[php]?view plaincopy

$first_url?=?($this->first_url?==?'')???$this->base_url.'1'?:?$this->first_url;??

四节仿、總結(jié)

到現(xiàn)在已經(jīng)完成了CI的分頁搜索,因為接觸時間也不長掉蔬,有錯誤之處歡迎指正:-)

版權(quán)聲明:本文為博主原創(chuàng)文章廊宪,未經(jīng)博主允許不得轉(zhuǎn)載矾瘾。

來源:?<http://blog.csdn.net/zhaoyu7777777/article/details/13295249>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市箭启,隨后出現(xiàn)的幾起案子壕翩,更是在濱河造成了極大的恐慌,老刑警劉巖傅寡,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件放妈,死亡現(xiàn)場離奇詭異,居然都是意外死亡荐操,警方通過查閱死者的電腦和手機芜抒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來托启,“玉大人宅倒,你說我怎么就攤上這事〖葜校” “怎么了唉堪?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肩民。 經(jīng)常有香客問我唠亚,道長,這世上最難降的妖魔是什么持痰? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任灶搜,我火速辦了婚禮,結(jié)果婚禮上工窍,老公的妹妹穿的比我還像新娘割卖。我一直安慰自己,他們只是感情好患雏,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布鹏溯。 她就那樣靜靜地躺著,像睡著了一般淹仑。 火紅的嫁衣襯著肌膚如雪丙挽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天匀借,我揣著相機與錄音颜阐,去河邊找鬼。 笑死吓肋,一個胖子當著我的面吹牛凳怨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼肤舞,長吁一口氣:“原來是場噩夢啊……” “哼紫新!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起李剖,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤弊琴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后杖爽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡紫皇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年慰安,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聪铺。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡化焕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出铃剔,到底是詐尸還是另有隱情撒桨,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布键兜,位于F島的核電站凤类,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏普气。R本人自食惡果不足惜谜疤,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望现诀。 院中可真熱鬧夷磕,春花似錦、人聲如沸仔沿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽封锉。三九已至绵跷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間烘浦,已是汗流浹背抖坪。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闷叉,地道東北人擦俐。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像握侧,于是被迫代替她去往敵國和親蚯瞧。 傳聞我的和親對象是個殘疾皇子嘿期,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容