2011-10-26 17 views
-4
$answers=array(); 
$rightanswer=array(); 
echo '<form action="question_check.php" method="post">'; 
$result=mysql_query("select * from sual where sual_id='1'"); 

if(mysql_num_rows($result)) 
{ 
    $row=mysql_fetch_row($result); 
{ 
$question_id=$row[0]; 
$question=$row[1]; 
$answers[0]=$row[2]; 
$answers[1]=$row[3]; 
$answers[2]=$row[4]; 
$rightanswer=$row[4]; 

$rand_keys=array_rand($answers,3); 
$answer0=$answers[$rand_keys[0]]; 
$answer1=$answers[$rand_keys[1]]; 
$answer2=$answers[$rand_keys[2]]; 



echo "question:".$row[1]."<br>"; 
echo '<input type="radio" value="'.$answer0.'">'.$answer0."<br>"; 
echo '<input type="radio" value="'.$answer1.'">'.$answer1."<br>"; 
echo '<input type="radio" value="'.$answer2.'">'.$answer2."<br>"; 
echo '<input type=hidden value="'.$rightanswer.'">'; 
echo '<input type="submit" value="answer">';echo '<input type="reset" value="sil">'; 
} 

} 
echo "</form>"; 

我想創建在線考試項目。但有一個問題。我寫了question_check.php頁面,但它不工作,我該怎麼寫它。上面的代碼是我的index.php ...問題是我不知道如何比較我選擇的答案與正確的答案在數據庫..請幫助我enter code here如何寫在線測驗項目代碼

+1

方式太寬泛的一個問題... –

+0

這確實是一個廣泛的問題。但是,這可能是一種模糊的方法:執行數據庫查詢以查找用戶被問到的問題的答案,通過查看'$ _POST []'來檢查用戶的答案,然後查看查詢的結果並進行比較到用戶提交的答案。 – marnir

+5

我們不打算爲你寫一整頁。你需要更具體的你需要什麼。根據您提出的問題,您可以通過'$ _POST'訪問提交的表單,然後您可以使用PDO或mysqli函數訪問正確答案的數據庫。除此之外,請在您的問題中更具體。 – imkingdavid

回答

3

你不想包括隱藏值正確的答案,任何人都可以檢查來源。 你想添加一個參數'名稱'到你的單選按鈕幷包含一個隱藏值的問題編號,以檢查它在check_value.php中的正確值。在你的例子中你做了一個SELECT * // WHERE sual_id = 1;我認爲該ID與問題編號有關。 另外,你應該將你的單選按鈕看作0,1,2,而不是將整個字符串存儲在那裏,因爲比較字符串需要更長的時間。

<input type="radio" name="answer" value="'.$answer0.'">'.$answer0."<br>"; 
<input type="radio" name="answer" value="'.$answer1.'">'.$answer1."<br>"; 
<input type="radio" name="answer" value="'.$answer2.'">'.$answer2."<br>"; 
<input type="hidden" name="question_number" value="'.$question_number.'" /> 

發佈到question_check.php時,你將有機會獲得$ _ POST [ '答案']和$ _ POST [ 'QUESTION_NUMBER']。

if(isset($_POST['answer']) && isset($_POST['question_number'])) { 
$answer=$_POST['answer']; 
$question_number=$_POST['question_number']; 

$result=mysql_query("select 'rightanswer' from sual where sual_id='$question_number'"); 

if(mysql_num_rows($result)) 
{ 
$row=mysql_fetch_row($result); 
if($row[0]==$answer){ 
//correct answer 
//$answer_result++; 
} 

else { 
//$answer_result--; 
} 
} 

} 
else { 
//no answer and a question number was posted 
} 

編輯:我也同意,你應該看看PDO(PHP數據對象),因爲它是parametrised查詢(SELECT一些東西的地方在那裏的東西=?)可以綁定變量和它背後的機制將使SQL注入攻擊毫無用處。 永遠不要相信用戶!

+0

謝謝你..我明白了我的錯誤。:)我的代碼正在工作。再次感謝你.. – user616115

相關問題