设计在线答题时出错

fee 2002-07-22 10:41:44
我想设计一个在线答题,思路是从题库中提出试题,并在每一个答案前加单选扭钮
当用户选择后能给出记录用户的选项,但我不行,以下是我的代码不知错在何处?
请帮忙,

<form name="form1" action="<? $PHP_SELF ?>" method=post>
<input type="submit" name="Submit" value="提交">

</form>
<?
$id=mysql_connect("","B","B");
$select=mysql_select_db("A");
$query=mysql_query("select * from tiku");

while ($array=mysql_fetch_array($query))
{
echo "<form name='form1' action="$PHP_SELF" method=post>";
printf("%s.%s<br> %s %s %s %s<br>",$array[id],$array[timu],
//在每一条记录的选项前加一个单选按钮
"<input type='radio' name='answer[]' value='a'>$array[a]",
//$array[id]---记录号
//$array[timu]----题目
//$array[a]-$array[d]---a.b,c,d四个选项
"<input type='radio' name='answer[]' value='b'>$array[b]",
"<input type='radio' name='answer[]' value='c'>$array[c]",
"<input type='radio' name='answer[]' value='d'>$array[d]");
echo "</form>";
}
?>
...全文
36 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
fee 2002-07-24
  • 打赏
  • 举报
回复
终于懂了谢谢wasy
wasy 2002-07-22
  • 打赏
  • 举报
回复
显示和处理不矛盾

刚才没有仔细看你的代码
我认为你思路不对,难道你所以的题目的答案都用answer[]名称吗,这样岂不是只能选择一个。
改成:
"<input type='radio' name='".$array[id]."' value='a'>$array[a]",
//$array[id]---记录号
//$array[timu]----题目
//$array[a]-$array[d]---a.b,c,d四个选项
"<input type='radio' name='".$array[id]."' value='b'>$array[b]",
"<input type='radio' name='".$array[id]."' value='c'>$array[c]",
"<input type='radio' name='".$array[id]."' value='d'>$array[d]");

用记录号来取名称,这样不更好吗

wasy 2002-07-22
  • 打赏
  • 举报
回复
吃饭先:)
fee 2002-07-22
  • 打赏
  • 举报
回复
我在想是不是错在这里
一般的表单问题都是这样的:先在html中显示问题的选项,再在php中进行处理
我确不是这样, 而是在php中要显示选项,又要处理结果,可能存在逻辑错误,但如何
处理这样的问题呢?
fee 2002-07-22
  • 打赏
  • 举报
回复
>wasy
我的$register_globals=on
wasy 2002-07-22
  • 打赏
  • 举报
回复
可能是你php.ini设置问题
更改register_globals = on
wasy 2002-07-22
  • 打赏
  • 举报
回复
可能是你php.ini设置问题
更改register_globals = on
fee 2002-07-22
  • 打赏
  • 举报
回复
>wasy
我这段程序将正确显示问题
如:
1、1+1=?
a.2 b.3 c.4 d.5
2、3+3=?
a.5 ......
现在问题显示出来了,当用户选择完后,按了提交,我应从$answer中知道用户的选择,但我确实现不了,请帮忙
fee 2002-07-22
  • 打赏
  • 举报
回复
>_shakespeare
我现在的错误好像在$answer上
我用"echo sizeof($anwer) "它始终显示为0.
我想的是只要按提交,就显示用户选项,请帮忙帮助实现
wasy 2002-07-22
  • 打赏
  • 举报
回复
to _Shakespeare(网络骑士) :
不用,mysql_fetch_array返回的是当前纪录的数组,索引为字段名

楼主:
当用户选择后能给出记录用户的选项
这句话是什么意思?
_Shakespeare 2002-07-22
  • 打赏
  • 举报
回复
while ($array=mysql_fetch_array($query))
是不是应该用list列出你需要的字段?
fee 2002-07-22
  • 打赏
  • 举报
回复
对不起,我传错了,我改过后仍不行,
wasy 2002-07-22
  • 打赏
  • 举报
回复
echo "<form name='form1' action="$PHP_SELF" method=post>";
这一行改为
echo "<form name='form1' action='$PHP_SELF' method=post>";

语法错误,"要转义
wasy 2002-07-22
  • 打赏
  • 举报
回复
接上:
$str.="  <input type=radio name=answer".$ques[$n][id]." value=b>B.".$ques[$n]['b']."<BR>";
$str.="  <input type=radio name=answer".$ques[$n][id]." value=c>C.".$ques[$n]['c']."<BR>";
$str.="  <input type=radio name=answer".$ques[$n][id]." value=d>D.".$ques[$n]['d']."<BR>";
}
?>
<FORM METHOD=POST ACTION="<?=$PHP_SELF?>" name=form1>
<?=$str?>
<input type=submit name=sub value="send">
</FORM>
wasy 2002-07-22
  • 打赏
  • 举报
回复
eg:
<?
if($HTTP_POST_VARS[sub]){//选择的答案
while(list($k,$v)=each($HTTP_POST_VARS))
if(substr($k,0,6)=="answer")
echo "第".substr($k,6)."题选择了".$v."<BR>";
exit();
}

$ques=array(array('id'=>1,'title'=>"选择城市",'a'=>"武汉",'b'=>"北京",'c'=>"重庆",'d'=>"南京"),
array('id'=>5,'title'=>"选择国家",'a'=>"中国",'b'=>"日本",'c'=>"美国",'d'=>"韩国"));
for($n=0;$n<count($ques);$n++){
$str.=$ques[$n][id].".".$ques[$n][title]."<BR>";
$str.="  <input type=radio name=answer".$ques[$n][id]." value=a>A.".$ques[$n]['a']."<BR>";
wasy 2002-07-22
  • 打赏
  • 举报
回复
eg:
<?
if($HTTP_POST_VARS[sub]){//选择的答案
while(list($k,$v)=each($HTTP_POST_VARS))
if(substr($k,0,6)=="answer")
echo "第".substr($k,6)."题选择了".$v."<BR>";
exit();
}

$ques=array(array('id'=>1,'title'=>"选择城市",'a'=>"武汉",'b'=>"北京",'c'=>"重庆",'d'=>"南京"),
array('id'=>5,'title'=>"选择国家",'a'=>"中国",'b'=>"日本",'c'=>"美国",'d'=>"韩国"));
for($n=0;$n<count($ques);$n++){
$str.=$ques[$n][id].".".$ques[$n][title]."<BR>";
$str.="  <input type=radio name=answer".$ques[$n][id]." value=a>A.".$ques[$n]['a']."<BR>";
vivanboy 2002-07-22
  • 打赏
  • 举报
回复
up
wasy 2002-07-22
  • 打赏
  • 举报
回复
建议你只用一个form,不用每个题目都要一个form。不然你岂不是每次只能校验一个题目的答案.
而且既然是单选题,不用取名answer[],用answer+id号命名就行了。
wasy 2002-07-22
  • 打赏
  • 举报
回复
我的意思是说你所有的radio控件名称都为name='answer[]',那岂不是所有的radio控件只能选择一个,也就是用户只能回答一道题!
我的代码的意思是让具体每一个题目的答案的控件名称才取一样的名称。而这个名称最好用以$array[id]为基础动态取名称。
如:
"<input type='radio' name='answer".$array[id]."' value='b'>$array[b]"
如果这个题目的id为23,那么它的答案的控件名称都为answer23,提交以后id为23的题目所选择的答案就是$answer23,明白吗?
wasy 2002-07-22
  • 打赏
  • 举报
回复
我的意思是说你所有的radio控件名称都为name='answer[]',那岂不是所有的radio控件只能选择一个,也就是用户只能回答一道题!
我的代码的意思是让具体每一个题目的答案的控件名称才取一样的名称。而这个名称最好用以$array[id]为基础动态取名称。
如:
"<input type='radio' name='answer".$array[id]."' value='b'>$array[b]"
如果这个题目的id为23,那么它的答案的控件名称都为answer23,提交以后id为23的题目所选择的答案就是$answer23,明白吗?
加载更多回复(1)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧