PHP Codeigniter随机化db记录序列

时间:2014-01-17 06:57:46

标签: codeigniter random

我有一个Codeigniter PHP应用程序,每个页面都会显示一个问题,现在我想随机显示问题序列。我理解可以这样做

SELECT * FROM questions **ORDER BY RAND()**

但问题是我的问题显示每页一页,分页。如果这样做,问题将重复任何想法如何随机序列而不包括先前显示的数据。并且因为系统允许用户返回上一个和下一个最后一个问题。如果随机,问题将受到影响。

2 个答案:

答案 0 :(得分:0)

将以前的所有问题都放到数组中,当你使用rand()方法得到新问题时,检查数组上的那些值退出

答案 1 :(得分:0)

您可以在会话中存储以前显示的数据($ previous_ids):

//after retrieving add to session
$previous_ids = $this->session->userdata('previous_ids');
$previous_ids[] = $randomly_retrieved_id;

$this->session->set_userdata('previous_ids', $previous_ids);

//use session data when retrieving next id
$this->db->where_not_in('id', $previous_ids)
         ->order_by('id', 'RANDOM')
         ->get('questions');