【发布时间】:2013-10-04 22:45:32
【问题描述】:
我有一个棘手的问题要解决,让我看看你能不能帮我...
我正在使用 CodeIgniter + MySQL 开发服务目录,并且由于我客户的业务规则,有 3 种计划类型。 (白金、黄金和白银 - 按从好到坏的顺序排列)
目录中有一张表,其中列出了要宣传的公司,每个公司都可能支付这 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
在这个例子中,刷新,随机改变记录在计划块内的位置,在页面内,没有重复或遗漏的结果。
请有人帮助我。 这是一个挑战;)谢谢,阿德里亚诺。
【问题讨论】:
标签: php mysql codeigniter pagination