2014-04-07 103 views
0

我有以下表结构:Mysql的随机化行的测验

标识问题正确答案为ANSWER2 ANSWER3 Answer4

正确答案为是永远正确的答案,所以我想能够显示四个答案以随机顺序使用PHP。

这怎么可能?

+2

这是有点超出你的问题,但我认为你的表结构有点问题。我会有一个问题表和一个答案表。然后,您可以根据需要为每个问题提供尽可能多的答案,并且可以轻松地洗牌您的答案。 –

+0

我的系统创建的方式,只有每个问题的意思是4个答案,没有更多,没有更多。 – ThePixelPony

回答

3

您可以使用PHP shuffle功能这样,:

首先创建答案$answers的数组,然后你得洗这个数组shuffle($answers);

$query=mysqli_query($db_conn, "SELECT Question, Answer1, Answer2, Answer3, Answer4 FROM questions_table WHERE id=1"); 

    $array=mysqli_fetch_assoc($query); 
    $question=$array['Question']; 
    $answers=array($array['Answer1'], $array['Answer2'], $array['Answer3'], $array['Answer4']); 
    shuffle($answers); 
3

认沽答案为阵,而且比洗牌阵列使用:shuffle

1

你的表结构将会使数据库在未来的一大问题的管理。
用你目前的设计,通常选择你的问题,然后将答案放在一个数组中,然后shuffle($answers)将洗牌的答案。
正确的解决方案将规范化您的数据库,从questions分开answers。使用question_id将问题链接到他们的答案。它将使你的数据库设计非常灵活,管理将变得更容易。

+0

请再次阅读该问题。他不想洗牌的问题,但答案和答案是在最后4列 –

+0

好吧,他的分贝没有正常化......谢谢。 – IROEGBU

+0

@AntonGildebrand你现在可以登录吗? – IROEGBU

0

您将无法使用要做到这一点做MYSQL,因为答案都在同一行。作为ThePixelPony你应该在PHP

使用 shuffle功能
2

我建议得到结果为数组,然后用下面的代码洗牌它们(如果你使用准备好的语句,你最好使用它们):

$SQL = $db -> prepare("SELECT * FROM table WHERE id = :id"); 
$SQL -> execute(array(':id' => $id)); 

$results = $SQL -> fetch(); 
$question = $results['question']; 

$answers = array($results['answer1'],$results['answer2'],$results['answer3'],$results['answer4']; 

shuffle($answers);