2016-02-11 80 views
1

我有一個包含100個問題和多個答案的數據庫。我想以一種測驗格式顯示,一次選擇20個隨機問題。我做了下面這樣的事情獲取隨機記錄並使用PHP和MongoDB以特定格式顯示

$m=new MongoClient(); 
    $db=$m->mydb; 
    $c=$db->quiz; 
$cursor = $c->find() 
     $n = 20; 
      foreach ($cursor as $obj) { 
      $links=array('$obj["question"]<br><br> &nbsp;&nbsp;&nbsp;&nbsp; 
                <input type="radio" name="q1" value="$obj["ch1"]"> $obj["ch1"]<br>&nbsp;&nbsp;&nbsp;&nbsp; 
                <input type="radio" name="q1" value="$obj["ch2"]"> $obj["ch2"]<br>&nbsp;&nbsp;&nbsp;&nbsp; 
                <input type="radio" name="q1" value="$obj[ch3"]"> $obj["ch3"]</p>'); 

    $rand_keys = array_rand($links, $n); 
    echo "<center>". "<br><table><tr><td>"; 

    echo "1.&nbsp;&nbsp;". $links[$rand_keys[0]] . "<br>"; 
    echo "</td></tr><tr><td>"; 
    echo "2.&nbsp;&nbsp;".$links[$rand_keys[1]] . "<br>"; 
    echo "</td></tr><tr><td>"; 
    echo "3.&nbsp;&nbsp;". $links[$rand_keys[2]] . "<br>"; 
    echo "</td></tr><tr><td>"; 


    } 

這是行不通的。 th代碼有什麼問題嗎?請幫助我發現錯誤,使其工作或任何方法,將達到我的目的。

+1

可能的重複[使用mongoDB和PHP迭代](http://stackoverflow.com/questions/35314980/iteration-using-mongodb-and-php) –

+0

@AlexBlex我不確定它是否重複。 –

+0

@Puneeth,你使用的是哪個MongoDB版本? –

回答

2

好吧,考慮其他非重複問題,我會建議學習php的基本知識,並嘗試迭代硬編碼嵌套數組以打印預期輸出。

所以一些問題,在問題的代碼:

  • 不取隨機抽題
  • 不打印輸出,但增加了1個長字符串數組links。請學會difference between ' and "
  • 沒有循環迭代的答案,它是不是在所有

工作代碼有效的PHP代碼(重新考慮從non-duplicated question文檔結構)可能看起來像:

foreach ($cursor as $obj) { 
    echo $obj["question"]; 
    foreach($obj["answers"] as $key=>$answer) { 
     echo '<input type="radio" name="' . $key . '" value="'.$answer.'">'; 
    } 
} 
+0

我編輯了隨機打印的代碼。現在你能給我一些有用的答案嗎?請記住這個工作沒有for循環。可以做些什麼來使其工作。 – Puneeth

+1

No Puneeth。顯然我不能。我放棄。 –

+0

如果是這樣,那麼爲什麼這不工作。 echo'';請記住沒有嵌套的記錄,所以訪問obj [ch1]。 – Puneeth