免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4589 | 回复: 6
打印 上一主题 下一主题

[求助]PHP中复选框的接收值的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-18 21:27 |只看该作者 |倒序浏览
5可用积分
大家好,我现在要做一个在线考试系统,有单项选择题,多项选择题等,答题中的单项选择题我已经做好了,前台的关键代码如下:
<form name="form1" method="post" action="proccess.php" target="_blank">
                <?
                        for($i=1;$i<=5;$i++)
                        {
                                $num_01=radiobutton_01.$i;
                ?>
          <table width="662" border="0">
            <tr>
              <td width="656"> <?=$i?> 超级用户的口令必须:<?=$num?></td>
            </tr>
            <tr>
              <td><input type="radio" name="<?=$num_01?>" value="A">
                A、至少4个字节,并且是大小写敏感的</td>
            </tr>
            <tr>
              <td><input type="radio" name="<?=$num_01?>" value="B">
                B、至少6个字节,并且是大小写敏感的</td>
            </tr>
            <tr>
              <td><input type="radio" name="<?=$num_01?>" value="C">
                C、至少4个字节,并且是大小写不敏感的</td>
            </tr>
            <tr>
              <td><input type="radio" name="<?=$num_01?>" value="D">
                D、至少6个字节,并且是大小写不敏感的</td>
            </tr>
          </table>
                  <?
                                   }
                  ?>
          <div align="center">
            <input type="submit" name="Submit" value="完成提交">
          </div>
        </form>
而接受处理传过来的值的后台页面proccess.php的关键代码为:
一、单选题:
              <?
                for($i=1;$i<=5;$i++)
                {
                        $num_01=radiobutton_01.$i;
        ?>
            <?=$i?>
            <? echo $$num_01;?> &nbsp;&nbsp;&nbsp;&nbsp;
            <?
                }
        ?>
这样已经能正常的按照一定的格式把题目的答案传过来,可是到多项选择题的时候就出了问题,我也想用同单项选择题的思路及类似方法来做,前台关键代码如下:
<form name="form2" method="post" action="proccess.php" target="_blank">
                <?
                        for($i=1;$i<=2;$i++)
                        {
                                $num="num".$i;
                ?>
            <table width="662" border="0">
              <tr>
                <td width="656"><?=$i?>
                  通常Internet上存在的全隐患有:</td>
              </tr>
              <tr>
                <td><p>
                  <label>                  
                  <input name="<?=$num?>[]" type="checkbox" id="<?=$num?>[]" value="A">
                  </label>
                  A、网络建立缺乏安全防范措施,没有安装防护设备<br>
                </p>
                  </td>
              </tr>
              <tr>
                <td>                  <input name="<?=$num?>[]" type="checkbox" id="<?=$num?>[]" value="B">
                  B、系统不完备的安全配置?</td>
              </tr>
              <tr>
                <td>                  <input name="<?=$num?>[]" type="checkbox" id="<?=$num?>[]" value="C">
                  C、不完
                    
                  善的系统管理</td>
              </tr>
              <tr>
                <td>                  <input name="<?=$num?>[]" type="checkbox" id="<?=$num?>[]" value="D">
                  D、通信协议上存在的基本安全问题(IP,TCP,UDP等)</td>
              </tr>
            </table>
            <?
                                   }
                  ?>
            <input type="checkbox" name="checkbox[]" value="checkbox01">
            <input type="checkbox" name="checkbox[]" value="checkbox02">           
            <div align="center">
              <input type="submit" name="Submit" value="完成提交">         
              </div>
          </form>
而接受处理传过来的值的后台页面proccess.php的关键代码为:
二、多选题:
<?
                echo "<br>";
                for($i=1;$i<=2;$i++)
                {
?>
            <?=$i?>
                       
        <?
                for($j=0;$j<=3;$j++)
                {
                                    echo $num1[$j];      //用这句时已经能把第一个多选题的值正确显示,但只能显示一题
                       $num_02="num".$i."[".$j."]";    //我想通过循环定义多个变量
                 echo $num_02;    //这样已经能把前台复选框的变量符号显示出来,如num1[0]num1[1]num1[2]                                          //                 num1[3] ; 2      num2[0]num2[1]num2[2]num2[3]
                                 //于是我就想用同单项选择时的一下,再在其变量符号前加上  $  符号就可显示其值
                      echo $$num_02;  //可是当用这句是什么都显示不了     
                        }
        ?>
            &nbsp;&nbsp;&nbsp;&nbsp;
    <?
                echo "<br>";
                }
        ?>

关键的问题是多项选择题中的前台的页面倒是已经能顺利地把值传到后台的页面来了,可以在后台的页面中就不能用循环语句来接收,关键的问题就在如下代码:
        <?
                for($j=0;$j<=3;$j++)
                {
                                    echo $num1[$j];      //用这句时已经能把第一个多选题的值正确显示,但只能显示一题
                       $num_02="num".$i."[".$j."]";    //我想通过循环定义多个变量
                 echo $num_02;    //这样已经能把前台复选框的变量符号显示出来,如num1[0]num1[1]num1[2]                                          //                 num1[3] ; 2      num2[0]num2[1]num2[2]num2[3]
                                 //于是我就想用同单项选择时的一下,再在其变量符号前加上  $  符号就可显示其值
                      echo $$num_02;  //可是当用这句是什么都显示不了     
                        }
        ?>
请问就用这样的方法怎么样才能实现用循环语句来接收多道多项选择题传过来的值?
谢谢!

最佳答案

查看完整内容

checkbox命名为:answer_题目IDPHP中循环题目,即可获得$_POST['answer_'.题目ID]的数组。处理即可

论坛徽章:
0
2 [报告]
发表于 2007-09-18 21:27 |只看该作者
checkbox命名为:answer_题目ID

PHP中循环题目,即可获得$_POST['answer_'.题目ID]的数组。处理即可

论坛徽章:
0
3 [报告]
发表于 2007-09-18 21:32 |只看该作者
<input type="checkbox" name="foobar[]">
<input type="checkbox" name="foobar[]">
<input type="checkbox" name="foobar[]">
<input type="checkbox" name="foobar[]">
<input type="checkbox" name="foobar[]">
<?php
foreach($_POST["foobar"] as $foobar)
{
    echo $foobar;
}
?>

论坛徽章:
0
4 [报告]
发表于 2007-09-18 21:34 |只看该作者
这样:

提交页面用 name="var[]"

接受页面用 $_GET['var'] 或者 $POST['var'],接收过来就是数组,即可进行处理。

论坛徽章:
0
5 [报告]
发表于 2007-09-19 08:17 |只看该作者
非常感谢楼上两位朋友的回答,不过我说的是接收前台的多道多项选择题传过来的答案,你们所说的好象只能一次接收一个多项选择题传过来的值,而有几十道多项选择题的理需要处理呢?我想接收的页面需要使用循环定义变量来实现,可是这样就问题了!
当然,可能是我在上面表达不清,还望各位再次为小弟解答!三Q!

论坛徽章:
0
6 [报告]
发表于 2007-09-19 09:52 |只看该作者
原帖由 a_coder 于 2007-9-18 21:27 发表
checkbox命名为:answer_题目ID

PHP中循环题目,即可获得$_POST['answer_'.题目ID]的数组。处理即可


非常感谢非常感谢,就按这位朋友说的已经解决!
胡主席说了,这位朋友是好同志!
:wink:

论坛徽章:
0
7 [报告]
发表于 2007-09-19 10:19 |只看该作者
谢谢送分
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP