[英]3 Conditions + Random Order + Pagination (Code Igniter + MySQL)
我有一個棘手的問題要解決,請讓我看看您是否可以幫助我...
我使用CodeIgniter + MySQL開發了一個服務目錄,並且由於我客戶的業務規則,這里有3種計划類型。 (白金,金和銀-從好到壞按此順序排列)
目錄中有一張桌子,上面有做廣告的公司,每個公司可能都在付這三個計划中的一個。
問題是:
我必須遵循以下規則來陳述結果:1.鉑金比黃金高,銀比銀高。2.每個結果范圍本身必須是隨機的
Platinum 2
Platinum 1
Platinum 3
Gold 3
Gold 1
GOld 2
Silver 2
Silver 3
Silver 1
刷新,我得到:
Platinum 1
Platinum 3
Platinum 2
Gold 2
Gold 1
GOld 3
Silver 2
Silver 1
Silver 3
php中的查詢是這樣的:
// after a Select and several joins to filter city, provinces, service types
// i do this to randomize , order and group
$query = $this->db->order_by('plan.level', 'desc');
$query = $this->db->order_by('busines.id', 'random');
$query = $this->db->group_by('business.id');
return $query->result_array();
到現在為止,到目前為止還算不錯。 問題是,要獲得如此多的結果,我必須對它們進行分頁:)在記住這一點的情況下,我該如何做到這一點:
我必須實現這樣的目標(例如,每頁分頁為4)
Page I:
Platinum 1
Platinum 4
Platinum 5
Platinum 3
Page II:
Platinum 2
Gold 5
Gold 3
Gold 1
Page III:
Gold 4
Gold 2
Silver 2
Silver 5
Page IV:
Silver 1
Silver 3
Silver 4
在此示例中,刷新,隨機更改頁面內計划塊內部的記錄的位置,而沒有重復或遺漏會導致4頁。
請有人可以幫助我。 這是一個挑戰;)謝謝,阿德里亞諾。
由於必須在會話之間保留結果的隨機性(用於分頁),因此為什么不存儲在PHP中而不是MySQL中呢?
初始查詢以獲取MySQL中的隨機查詢:
$this->db->select('id');
// The rest of your ActiveRecord query here, randomized
也許將ID存儲在PHP中:
$this->session->set_userdata('random_query', $array_of_random_ids);
然后每頁查詢一次
$array_of_random_ids = $this->session->userdata('random_query');
$this->db->from('business');
$this->db->where_in('id', array_slice($array_of_random_ids, $page_number * $length, $views_per_page);
$this->db->limit($views_per_page, $page_number * $length);
當然,如果您選擇這樣做的話,稍后再重置會話。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.