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