Heim  >  Artikel  >  Backend-Entwicklung  >  php+mysql的在线答题

php+mysql的在线答题

WBOY
WBOYOriginal
2016-08-08 09:29:551251Durchsuche

寒假在公司实习做了一个小东西,用php实现一个在线答题的项目,用户的答题数用switch进行关联,一开始思考用ajax实现页面的自刷新,之后觉得太大材小用了,可以在当前页面做一个自循环,用js来进行计时,当时写完后发现整个逻辑还是存在一定的问题,js中的跳转和表单的操作是分离的导致判断正确题目时会少进行一次,最后只能采取用两个界面分别显示结果。希望在将来能够对此进行改进,下面贴上代码

connetvar.php

<?php // Define database connection constants
  define(&#39;DB_HOST&#39;, &#39;localhost&#39;);
  define(&#39;DB_USER&#39;, &#39;root&#39;);
  define(&#39;DB_PASSWORD&#39;, &#39;&#39;);
  define(&#39;DB_NAME&#39;, &#39;test&#39;);
?>

index.php

<?php session_start();?>



<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>问答</title>


<script type="text/javascript">
	window.onload=function(){
	setInterval(function(){
		var text=document.getElementById("text");
		var value=text.value;//innerHTML
		if(value>0){
			value-=1;
			text.value=value;
		}else{
			location.href="show_js.php";
			return false;
		}
	},1000);
	
}
</script>
<?php require_once(&#39;connectvars.php&#39;);
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
mysqli_set_charset($dbc,&#39;utf8&#39;);
	
if(isset($_POST[&#39;index&#39;])){
	$index= $_POST[&#39;index&#39;];
	$choice=$_POST[&#39;choice&#39;];
	//check
	$arr = $_SESSION[&#39;arr&#39;];
	//$arrconut = $_SESSION[&#39;conut($arr)&#39;];
	$query = "SELECT * FROM question where id=$arr[$index]";
	$results = mysqli_query($dbc, $query);
	$row = mysqli_fetch_row($results);
	$answer=$row[&#39;5&#39;];
	$_SESSION[&#39;index&#39;] = $index;
    if ($choice == $answer)
	{
		echo"<script type=&#39;text/javascript&#39;>alert('答对了,下一题');";//location='index1.php';

	}
	else
	{
		echo"<script type="'text/javascript'">alert(&#39;你答错了,游戏结束&#39;);location=&#39;show.php&#39;;</script>";
	}

	if($index == count($arr)-1) {

		$index=$index+1;
		$_SESSION['index'] = $index;
		echo"<script type="'text/javascript'">alert(&#39;题都给你答完了&#39;);location=&#39;show.php&#39;;</script>";exit;
	}
	else {
		$index++;
		//var_dump($index);
		//var_dump($_SESSION['index']);
		//var_dump(count($arr));

	}

}
else {
	$arr = range(1, 5);
	shuffle($arr);
	$_SESSION['arr'] = $arr;
	$index = 0;
}
?>
<?php $query = "SELECT * FROM question where id=$arr[$index]";
$results = mysqli_query($dbc, $query);
$row = mysqli_fetch_row($results);
?>

A.
B.
C.
D.

您还有秒的答题时间

show.php

<?php session_start();?>



  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Guitar Wars - High Scores</title>
  <link rel="stylesheet" type="text/css" href="style.css">


<?php $id = $_SESSION[&#39;index&#39;] ;
echo &#39;你一共答对了&#39;.$id.&#39;题&#39;;
//var_dump($id);
switch ($id)
{
	case 0 :              
		echo &#39;你的折扣为9.5折&#39;;//用户自行修改case和相应的折扣参数
		break;
    case 1 :
		echo &#39;你的折扣为9折&#39;;
		break;
	case 2 :
		echo &#39;你的折扣为8.5折&#39;;
		break;
	case 3 :
		echo &#39;你的折扣为8折&#39;;
		break;
	case 4 :
		echo &#39;你的折扣为7.5折&#39;;
		break;
	case 5 :
		echo &#39;你的折扣为7折&#39;;
		break;
}
?>
 
  <hr>
   

<?php unset($_SESSION[&#39;index&#39;]);

?>

show_js.php

<?php session_start();?>



  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Guitar Wars - High Scores</title>
  <link rel="stylesheet" type="text/css" href="style.css">


<?php $id = $_SESSION[&#39;index&#39;]+1 ;
echo &#39;你一共答对了&#39;.$id.&#39;题&#39;;
//var_dump($id);
switch ($id)
{
	case 0 :              
		echo &#39;你的折扣为9.5折&#39;;//用户自行修改case和相应的参数
		break;
    case 1 :
		echo &#39;你的折扣为9折&#39;;
		break;
	case 2 :
		echo &#39;你的折扣为8.5折&#39;;
		break;
	case 3 :
		echo &#39;你的折扣为8折&#39;;
		break;
	case 4 :
		echo &#39;你的折扣为7.5折&#39;;
		break;
	case 5 :
		echo &#39;你的折扣为7折&#39;;
		break;
}
?>
 
  <hr>
   

<?php unset($_SESSION[&#39;index&#39;]);

?>

以上就介绍了php+mysql的在线答题,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn