2012-05-26 90 views
1

我有一個使用數組存儲問題的測驗:結合陣列和MySQL結果

$array=array(
     '1'=> array('1','What does everyone know when they see it?','quest1','Good  publicity','Bad punctuation', 'Good business writing', 'Bad spelling','../images/example03.jpg'), 
     '2'=> array('2','What do people write instead of \'now\'?','quest2','Presently','At this moment in time', 'Currently', 'At the present time','../images/example03.jpg'), 
); 

然後我用這個循環顯示問題:

foreach($array as $quiz) 
{ 
echo    
       '<div class="question"> 
         <div class="questionList"> 
          <h4>' . $quiz[0] . '. <strong>' . $quiz[1] .   '</strong></h4> 
           <ul> 
            <li><input type="radio" name="' . $quiz[2] . '" value="1"> '. $quiz[3] . '</li> 
            <li><input type="radio" name="' . $quiz[2] . '" value="2"> '. $quiz[4] . '</li> 
            <li><input type="radio" name="' . $quiz[2] . '" value="3"> '. $quiz[5] . '</li> 
            <li><input type="radio" name="' . $quiz[2] . '" value="4"> '. $quiz[6] . '</li> 
           </ul> 
         </div> 
        <img src="'. $quiz[7] . '" class="questionImg01" /> 
        <div class="clr"></div> 
       </div> 
       '; 
    } 

} 

如果有人不回答所有的問題第一次,我將每個問題的值存儲在MySQL中,如果沒有答案,則存儲「0」。我想檢查用戶已經回答的單選按鈕,但是無法確定如何組合測驗數組和MySQL結果。

表結構的結果是:

quiz_id |用戶名| quest1 | quest2 | quest3 | quest4 | quest5 | quest6 | quest7 | quest8 | quest9 | quest10 |完成

其中quiz_id是該測驗的參考號碼,complete是用於記錄用戶是否已回答所有問題的標誌。我正在檢索這樣的結果:

$results = mysql_query("SELECT * FROM quiz_results_baseline WHERE username = ('$username')"); 

有沒有一種方法可以將這兩種方法結合?

我也有這個問題,我不能讓這個查詢包括WHERE語句 - 我想存儲在一個表中的所有測驗結果,然後使用quiz_id是指每個用戶的測驗結果:

mysql_query("INSERT INTO quiz_results_baseline (quest1,quest2,quest3,quest4,quest5,quest6,quest7,quest8,quest9,quest10,username,quiz_id,complete) VALUES $queryData ON DUPLICATE KEY UPDATE quest1=VALUES(quest1),quest2=VALUES(quest2),quest3=VALUES(quest3),quest4=VALUES(quest4),quest5=VALUES(quest5),quest6=VALUES(quest6),quest7=VALUES(quest7),quest8=VALUES(quest8),quest9=VALUES(quest9),quest10=VALUES(quest10),complete=VALUES(complete)"); 

任何幫助,將不勝感激!

+0

我的回答很有幫助,還是您仍然有問題? – christurnerio

回答

0

爲了讓您的一半完成測驗結果與測驗一起呈現,請嘗試以下代碼。

$questions=array(
    '1'=> array('1','What does everyone know when they see it?','quest1','Good  publicity','Bad punctuation', 'Good business writing', 'Bad spelling','../images/example03.jpg'), 
    '2'=> array('2','What do people write instead of \'now\'?','quest2','Presently','At this moment in time', 'Currently', 'At the present time','../images/example03.jpg'), 
); 

// do your query for the row of answers 
// $answers = mysql_fetch_assoc(...); 

// for testing 
$answers = array(
'quest1' => '1', 
'quest2' => '4'); 


for($i = 1; $i <= count($questions); $i++) 
{ 
    $quiz = $questions[$i]; 
    $answer = $answers[$quiz[2]]; 

    echo    
    '<div class="question"> 
     <div class="questionList"> 
      <h4>' . $quiz[0] . '. <strong>' . $quiz[1] . '</strong></h4> 
      <ul> 
      <li><input type="radio" name="' . $quiz[2] . '" value="1" ' . (($answer == '1') ? 'checked' : '') . '> '. $quiz[3] . '</li> 
      <li><input type="radio" name="' . $quiz[2] . '" value="2" ' . (($answer == '2') ? 'checked' : '') . '> '. $quiz[4] . '</li> 
      <li><input type="radio" name="' . $quiz[2] . '" value="3" ' . (($answer == '3') ? 'checked' : '') . '> '. $quiz[5] . '</li> 
      <li><input type="radio" name="' . $quiz[2] . '" value="4" ' . (($answer == '4') ? 'checked' : '') . '> '. $quiz[6] . '</li> 
      </ul> 
     </div> 
     <img src="'. $quiz[7] . '" class="questionImg01" /> 
     <div class="clr"></div> 
    </div> 
    '; 
} 

你必須做你的查詢來獲取$answers數組,但我把一個例子,所以你可以看到如何使用結果。

我跑的代碼,結果是這樣的:

results

希望幫助!

+0

謝謝 - 這真是太棒了。你知道如何使這個查詢特定於用戶名和quiz_id:'mysql_query(「INSERT INTO quiz_results_baseline(quest1,quest2,quest3,quest4,quest5,quest6,quest7,quest8,quest9,quest10,username,quiz_id,complete)VALUES $ (quest2),quest3 = VALUES(quest3),quest4 = VALUES(quest4),quest5 = VALUES(quest5),quest6 = VALUES(quest6),quest7 = VALUES(quest2) (quest7),quest8 = VALUES(quest8),quest9 = VALUES(quest9),quest10 = VALUES(quest10),complete = VALUES(complete)「);' – tomp

+0

很高興工作!你應該發佈一個新的問題來解決這個問題。當你發佈它時,描述你的表格結構,並更多地描述你正在嘗試做什麼。我不明白基於只看到該查詢。 – christurnerio