我想做一个网页英语单词测验的程序
这思路不知道正确不正确
运行不出,请教各位
代码如下<?php
session_start();header("Content-Type: text/html; charset=utf-8");$connect = mysql_connect("localhost","root","123456");mysql_query("set names 'utf8'");$select = mysql_select_db("ceyan");if($_POST['xcs'] != 'send') //如果按下 send 按纽
{ $i = $_SESSION['i']; $dcb = $_SESSION['dcb']; $zwb = $_SESSION['zwb']; $key = $_POST['key']; $dt = $_SESSION['dt'];
if($key == $dcb[$i])
{
$dt[$i] = 1;
}
else
{
$dt[$i] = 0;
} $i++;}if($_POST['xcs'] != 'over') //如果按下over按钮
{
$i = $_SESSION['i']; $dcb = $_SESSION['dcb']; $zwb = $_SESSION['zwb']; $key = $_POST['key']; $dt = $_SESSION['dt']; $allt = sizeof($dt); //计算一共有多少题目 $zq = array_count_values ($dt); //取答对的题目数 $fenshu = 100 / $all * $zq; echo "得分是".$fenshu; //计算得分 unset($dcb); unset($zwb); unset($dt);
}else
{ $sql = "select * from `chb` order by rand()"; $tmpch = mysql_query($sql,$connect); while($ch=mysql_fetch_array($tmpch))
{
$dcb[] = ch['dc']; //存放数据库词汇表的英文单词部分
$zwb[] = ch['zw']; //存放数据库词汇表的中文解释部分
}
$i=0; //计数器 $dt = array(); //存放用户提交的答题对错,1为答对,2为答错} $_SESSION['i'] = $i; $_SESSION['dcb'] = $dcb; $_SESSION['zwb'] = $zwb; $_SESSION['dt'] = $dt; echo "<div style='margin:0px 0px 0px 600px>"; echo "<span style='margin:5px 0px 5px 0px'>".$zwb[$i]."</span><br />"; echo "</div>"; echo "<div style='margin:0px 0px 0px 600px>
<form action='http://localhost/danci/pxll.php?i='".$i."' name='xcs' method='post'>
<span><input type='text' name='key' size='10' maxlength='15' /></span><br>
<span><input type='submit' name='send' value='提交并进入下一题' /></span>
<span><input type='submit' name='over' value='结束评分' /></span>
</form>
</div>"; mysql_close($connect);?>
这思路不知道正确不正确
运行不出,请教各位
代码如下<?php
session_start();header("Content-Type: text/html; charset=utf-8");$connect = mysql_connect("localhost","root","123456");mysql_query("set names 'utf8'");$select = mysql_select_db("ceyan");if($_POST['xcs'] != 'send') //如果按下 send 按纽
{ $i = $_SESSION['i']; $dcb = $_SESSION['dcb']; $zwb = $_SESSION['zwb']; $key = $_POST['key']; $dt = $_SESSION['dt'];
if($key == $dcb[$i])
{
$dt[$i] = 1;
}
else
{
$dt[$i] = 0;
} $i++;}if($_POST['xcs'] != 'over') //如果按下over按钮
{
$i = $_SESSION['i']; $dcb = $_SESSION['dcb']; $zwb = $_SESSION['zwb']; $key = $_POST['key']; $dt = $_SESSION['dt']; $allt = sizeof($dt); //计算一共有多少题目 $zq = array_count_values ($dt); //取答对的题目数 $fenshu = 100 / $all * $zq; echo "得分是".$fenshu; //计算得分 unset($dcb); unset($zwb); unset($dt);
}else
{ $sql = "select * from `chb` order by rand()"; $tmpch = mysql_query($sql,$connect); while($ch=mysql_fetch_array($tmpch))
{
$dcb[] = ch['dc']; //存放数据库词汇表的英文单词部分
$zwb[] = ch['zw']; //存放数据库词汇表的中文解释部分
}
$i=0; //计数器 $dt = array(); //存放用户提交的答题对错,1为答对,2为答错} $_SESSION['i'] = $i; $_SESSION['dcb'] = $dcb; $_SESSION['zwb'] = $zwb; $_SESSION['dt'] = $dt; echo "<div style='margin:0px 0px 0px 600px>"; echo "<span style='margin:5px 0px 5px 0px'>".$zwb[$i]."</span><br />"; echo "</div>"; echo "<div style='margin:0px 0px 0px 600px>
<form action='http://localhost/danci/pxll.php?i='".$i."' name='xcs' method='post'>
<span><input type='text' name='key' size='10' maxlength='15' /></span><br>
<span><input type='submit' name='send' value='提交并进入下一题' /></span>
<span><input type='submit' name='over' value='结束评分' /></span>
</form>
</div>"; mysql_close($connect);?>
{
$dt[$i] = 1;
}
else
{
$dt[$i] = 0;
}看你这里,应该是 1为答对,0为答错吧
可是你这里的注视说1为答对,2为答错。$dt = array(); //存放用户提交的答题对错,1为答对,2为答错
另外,你似乎把对题和错题都存在了$dt这个数组里,那你下面又取了$dt整个数组的长度,这样怎么判断答对题的数量?要么错题就不存,要么就判断一下这个数组里为1的有几个值。
$zq = array_count_values ($dt); //取答对的题目数
你的整个程序设计的很不好,你可以不用答一题提交一次,可以将所有答案都暂时存在客户端,用js的数组保存或存在一个hidden域里面。然后一次性提交到服务器端与数据库比较进行判分。不过这样设计还是有缺陷,如果你的所有题目分数都一样还可以,如果有不一样的怎么办?只存1或0肯定不行。你需要存一个题目id和答对这题的分数。
计算分数时应该写成$fenshu = 100 / $all * $zq[1];
我是这么想的,答对题的分数是按照有多少题目来算的,所以用这个方法来做了.
因为看到开心网上有类似的答题方法,所以想试着做做
看来一定要用JS了?
没分
以后有分补上
顺便一问
报
Parse error: syntax error, unexpected '[' in E:\Apache2.2\htdocs\danci\left\pxll.php on line 79
这个错误
是哪不对吗
我这个程序逻辑上有问题吗
2 设置一个开始答题的按钮,当用户点击这个按钮后,设置一个倒计时时间,为答题时间。
3 用户输入的选项或填写的答案,临时存在js的一个哈希表或数组中。结构为:题目id => 答案。
4 当用户答完所有题目或点击一个结束答题按钮时。先将数组转化为json格式,然后用ajax把这个数组以及答题时间提交到服务器端
5 服务器端对json进行解析,判题,然后根据答题时间以及答题的正确数量计算得分。按照一个固定格式拼成一个结果字符串返回给客户端。
6 客户端获得reponse,将结果显示在一个div里面。
谢谢ShadowSniper
顺便BS下剑心哈哈