CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  PHP

请问用php怎么遍历页面中表单的每个文本框?

楼主happyamei(啊梅)2005-11-13 19:59:18 在 Web 开发 / PHP 提问

如题,我想实现通过循环获取页面中每个文本框的值,他们的命名是有规则的,不仅是文本框,还有各种单选,多选按钮。我这里有asp的例子,但我不会改,还请各位高人帮帮忙,谢谢!!  
  for   each   element   in   request.form  
      for   i=1   to   request.form(element).count  
          if   instr(element,"NO")<>0   then  
              id=mid(element,3,3)  
              result=request.form(element)(i)  
              sql="select   *   from   exam_database   where   id="&   clng(id)  
              set   rs=server.createobject("adodb.recordset")  
              rs.open   sql,conn,3,2  
              if   rs("type")="单选题"   then  
                  if   result=rs("answer")   then  
                      score=score+cint(singleper)  
                  end   if  
              end   if  
              if   rs("type")="多选题"   then  
                  if   instr(rs("answer"),result)<>0   then  
                      score=score+cint(multiper)/4  
                      j=j+1  
                      answer=split(rs("answer"),",")  
                      answercount=ubound(answer)+1  
                      if   answercount=j   then  
                          score=score+cint(multiper)*(1-j/4)  
                      end   if  
                  else  
                      score=score-cint(multiper)/4*(j)  
                  end   if  
              end   if  
              if   rs("type")="判断题"   then  
                  if   rs("answer")=result   then  
                      score=score+cint(judgeper)  
                  end   if  
              end   if              
          end   if  
      next  
  next  
  问题点数:30、回复次数:11Top

1 楼happyamei(啊梅)回复于 2005-11-14 16:01:11 得分 0

怎么没有人回答以下呢?求求各位了。Top

2 楼xuzuning(唠叨)回复于 2005-11-14 16:11:17 得分 10

php可没有那么复杂  
  提交后  
  print_r($_POST);  
  你就可以看到所有的数据的分布  
  至于做什么,怎么做。就由你自己定了  
  Top

3 楼happyamei(啊梅)回复于 2005-11-14 19:23:46 得分 0

上面那个位高手,能否详细说来听,举个例子看看吧,还有print_r($_POST)返回的是什么值?Top

4 楼spacet(空格t)回复于 2005-11-14 19:28:13 得分 5

还有print_r($_POST)返回的是什么值?  
  ---------------------------------------  
  楼上的,就不能看看书册里面关于这个函数的介绍吗?  
   
  print_r  
  (PHP   4   ,   PHP   5)  
   
  print_r   --     打印关于变量的易于理解的信息。    
  描述  
  bool   print_r   (   mixed   expression   [,   bool   return])  
   
   
  注:   参数   return   是在   PHP   4.3.0   的时候加上的    
   
  print_r()   显示关于一个变量的易于理解的信息。如果给出的是   string、integer   或   float,将打印变量值本身。如果给出的是   array,将会按照一定格式显示键和元素。object   与数组类似。    
   
  记住,print_r()   将把数组的指针移到最后边。使用   reset()   可让指针回到开始处。    
   
   
   
  <pre>  
  <?php  
          $a   =   array   ('a'   =>   'apple',   'b'   =>   'banana',   'c'   =>   array   ('x','y','z'));  
          print_r   ($a);  
  ?>  
  </pre>      
   
   
   
  上边的代码将输出:   <pre>  
  Array  
  (  
          [a]   =>   apple  
          [b]   =>   banana  
          [c]   =>   Array  
                  (  
                          [0]   =>   x  
                          [1]   =>   y  
                          [2]   =>   z  
                  )  
  )  
  </pre>  
     
   
   
  如果想捕捉   print_r()   的输出,可使用   return   参数。若此参数设为   TRUE,print_r()   将不打印结果(此为默认动作),而是返回其输出。    
   
  例子   1.   return   参数示例  
   
  <?php  
          $b   =   array   ('m'   =>   'monkey',   'foo'   =>   'bar',   'x'   =>   array   ('x',   'y',   'z'));  
          $results   =   print_r   ($b,   true);   //$results   包含了   print_r   的输出结果  
  ?>      
     
   
   
  注:   如果想在   PHP   4.3.0   之前的版本中捕捉   print_r()   的输出,可使用输出控制函数。    
   
  注:   在   PHP   4.0.4   之前的版本中,如果给出的   array   或   object   包含了直接或间接指向自身的引用,print_r()   将永远继续下去。print_r($GLOBALS)   就是一个例子,因为   $GLOBALS   自身即是全局变量,其包含了指向自身的引用。    
  Top

5 楼happyamei(啊梅)回复于 2005-11-14 20:27:54 得分 0

Array   (   [NO79]   =>   A   [NO75]   =>   C   [NO1]   =>   C   [NO86]   =>   B   [NO67]   =>   [NO20]   =>   [NO25]   =>   [NO72]   =>   [NO68]   =>   [NO70]   =>   [NO65]   =>   [NO73]   =>   [NO62]   =>   [NO26]   =>   [starttime]   =>   20:25:46   [endtime]   =>   22:25:46   [testtime]   =>   2   [mystarttime]   =>   20:25:46   [myendtime]   =>   22:25:46   [lefttime]   =>   1:59:54   [B3]   =>   我要交卷   )  
   
  这是我用print_r($HTTP_POST_VALS);   得到的结果,但我想要的是把它们每个都单独拿出来,不知道怎么实现Top

6 楼missago(世事沧桑,却怎比得上我心瞬间,那顷刻的微光!)回复于 2005-11-14 21:35:58 得分 2

echo   $HTTP_POST_VALS['NO79'];  
  看看能获得什么Top

7 楼zalvsa(水米)回复于 2005-11-15 08:52:21 得分 2

echo   $_REQUEST['元素名']Top

8 楼xuzuning(唠叨)回复于 2005-11-15 08:57:20 得分 0

foreach($HTTP_POST_VALS   as   $key=>$value)  
      echo   $key   .   '   =   '   .   $value   .   '<br>';  
  Top

9 楼LoveChina2008(牧野春笛)回复于 2005-11-15 10:39:40 得分 8

大家都那么麻烦做什么?如此做,表单中的文本框都命名为"data[]",然后再处理的页面中如此做:$data   =   $_POST['data'];  
          for($i=0;$i<count($data);$i++)  
          {  
                  echo   "----------------->".$data[$i];  
          }  
  看看,你的问题是不是完美地解决了啊!Top

10 楼happyamei(啊梅)回复于 2005-11-15 10:41:59 得分 0

谢谢各位,在大家的帮助下,我自己解决了问题,我用到了两个函数,如下:  
  array_walk($HTTP_POST_VARS,'test_print');  
   
  function   test_print   ($item2,   $key)           //循环进行判断后加分  
  {  
          global   $score;  
  $aa=substr($key,2);  
  //echo   $aa."<br>".count($item2);  
  for($i=0;$i<count($item2);$i++)  
  {  
    $bb.=$item2[$i].",";  
  }  
  $bb=substr($bb,0,strlen($bb)-1);  
  //echo   $bb;  
  $query="select   *   from   exam_database   where   ID=".$aa;  
  $result=mysql_query($query);  
  if($result)  
  {  
        while($array=mysql_fetch_array($result))  
        {  
                if($array['Type']=='单选题')  
        {  
              if($array['Anwser']==$item2)    
                      $score=$score+$array['Mark'];         //add   the   score  
        }  
        elseif($array['Type']=='多选题')  
        {  
              //$cc=split(",",$array['Anwser']);  
    //   echo   $cc[0].$cc[1].$bb;  
      if(!strpos($array['Anwser'],$bb))  
      {  
            $score=$score+$array['Mark'];  
      }  
        }  
        elseif($array['Type']=='判断题')  
        {  
              if($array['Anwser']==$item2)  
      $score=$score+$array['Mark'];  
        }  
        else  
        {  
              if(!strpos($array['Anwser'],$item2))  
      $score=$score+$array['Mark'];  
        }  
        }  
  }  
  }  
  谢谢各位了,结帖。Top

11 楼LoveChina2008(牧野春笛)回复于 2005-11-15 10:42:03 得分 3

当然还有别的办法,如表单中的文本框也可命名为=====   data<?=$i?>                           =======  
  当然,$i是循环变量,呵呵,接收处理我就不多说了Top

相关问题

  • 表单中的文本框问题。
  • 表单验证文本框的问题,文本框的数量不定。
  • 遍历表单的问题
  • 怎样判断表单中的文本框是否为空?
  • 怎样防止表单的文本框中贴网页代码……
  • 表单里的文本框中VALUE值如何靠右显示?
  • 急!!!!!!!关于表单中的文本框的disabled属性问题
  • 如何控制表单内文本框动态加上只读?
  • form表单里的text文本框问题
  • PHP如何遍历表单,表单中控件的名称和个数都不知道。

关键词

  • 页面
  • 函数
  • php
  • 打印
  • 文本框
  • 变量
  • multiper
  • score
  • cint
  • print

得分解答快速导航

  • 帖主:happyamei
  • xuzuning
  • spacet
  • missago
  • zalvsa
  • LoveChina2008
  • LoveChina2008

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo