0

解決しなければならない難しい問題があります。あなたが私を助けることができるかどうか見てみましょう...

CodeIgniter + MySQL を使用してサービス ディレクトリを開発しています。クライアントのビジネス ルールにより、3 つのプラン タイプがあります。(プラチナ、ゴールド、シルバー - この順で良いものから悪いものへ)

ディレクトリに広告を掲載している会社の表があり、それぞれがこの 3 つのプランのいずれかを支払っている可能性があります。

問題は:

このルールに従って結果を提示する必要があります。

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ページになります。

誰か助けてください。その挑戦 1 ;) ありがとう、アドリアーノ。

4

1 に答える 1