2014-04-07 70 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);