Home  >  Article  >  Backend Development  >  Example of online test answering using PHP+MySQL

Example of online test answering using PHP+MySQL

coldplay.xixi
coldplay.xixiforward
2020-08-27 16:55:123046browse

Example of online test answering using PHP+MySQL

[Related learning recommendations: jQuery Tutorial, PHP programming (video), mysql tutorial

This example mainly introduces how to use jQuery PHP MySQL To realize online test questions, including dynamic reading of questions, background scoring after answering the questions, and returning the answer results.

##Read the answer list:

$sql = "select * from quiz order by id asc"; 
$query = mysql_query($sql); 
while ($row = mysql_fetch_array($query)) { 
 $answers = explode('###', $row['answer']); 
 $arr[] = array( 
   'question' => $row['id'] . '、' . $row['question'], 
   'answers' => $answers 
 ); 
} 
$json = json_encode($arr);

Generate the answer list:

6e555c22056d5f95a55dc2953291ff2a94b3e26ee717c64999d7867364b1b4a3

By traversing the list, the answering function is generated:

$(function(){ 
  $('#quiz-container').jquizzy({ 
    questions: <?php echo $json;?>, //试题信息 
    sendResultsURL: &#39;data.php&#39; //结果处理地址 
  }); 
});

When the user finishes typing the question and clicks the "Complete" button, an ajax. php sends an Ajax interactive request, and ajax.php will compare the correct answer based on the user's answer, and then give the user's score.

$data = $_REQUEST[&#39;an&#39;]; 

$answers = explode(&#39;|&#39;,$data); 
$an_len = count($answers)-1; //题目数 

$sql = "select correct from quiz order by id asc"; 

$query = mysql_query($sql); 
$i = 0; 
$score = 0; //初始得分 
$q_right = 0; //答对的题数 
while($row=mysql_fetch_array($query)){ 
  if($answers[$i]==$row[&#39;correct&#39;]){ 
    $arr[&#39;res&#39;][] = 1; 
    $q_right += 1; 
  }else{ 
    $arr[&#39;res&#39;][] = 0; 
  } 
  $i++; 
} 
$arr[&#39;score&#39;] = round(($q_right/$an_len)*100); //总得分 
echo json_encode($arr);

quiz table structure:

CREATE TABLE IF NOT EXISTS `quiz` ( 
 `id` int(11) NOT NULL AUTO_INCREMENT, 
 `question` varchar(100) NOT NULL, 
 `answer` varchar(500) NOT NULL, 
 `correct` tinyint(2) NOT NULL, 
 PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ; 
 
-- 
-- 转存表中的数据 `quiz` 
-- 
 
INSERT INTO `quiz` (`id`, `question`, `answer`, `correct`) VALUES 
(1, &#39;罗马帝国曾一度辉煌,令人神往,故有“条条大陆通罗马”一说。那么,今天你是怎样理解这一谚语的准确含义的?&#39;, &#39;A.入乡随俗 ###B.四通八达 ###C.殊途同归 ###D.流连忘返&#39;, 3), 
(2, &#39;找出不同类的一项:&#39;, &#39;A.斑马 ###B.军马 ###C.赛马 ###D.骏马 ###E.驸马&#39;, 5), 
(3, &#39; 蜡烛在空气中燃烧,蜡烛质量逐渐变小。这说明&#39;, &#39;A.物质可以自生自灭###B.发生的不是化学变化###C.不遵守质量守恒定律###D.生成物为气体,散发到空气中了&#39;, 4), 
(4, &#39;以下哪位歌手没有获得过《我是歌手》总冠军?&#39;, &#39;A.羽泉###B.韩磊###C.邓紫棋###D.韩红&#39;, 3), 
(5, &#39;下列哪个标签不是HTML5中的新标签?&#39;, &#39;A.<article>###B.<canvas>###C.<section>###D.<sub>&#39;, 4);

If you want to know more related learning, please pay attention to the

php training column!

The above is the detailed content of Example of online test answering using PHP+MySQL. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:jb51.net. If there is any infringement, please contact admin@php.cn delete