簡體   English   中英

3個條件+隨機順序+分頁(Code Igniter + MySQL)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM