我有一个Codeigniter PHP应用程序,每个页面都会显示一个问题,现在我想随机显示问题序列。我理解可以这样做
SELECT * FROM questions **ORDER BY RAND()**
但问题是我的问题显示每页一页,分页。如果这样做,问题将重复任何想法如何随机序列而不包括先前显示的数据。并且因为系统允许用户返回上一个和下一个最后一个问题。如果随机,问题将受到影响。
答案 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');