解決しなければならない難しい問題があります。あなたが私を助けることができるかどうか見てみましょう...
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 ;) ありがとう、アドリアーノ。