补充:表单提交<form  id="form_dd" name="form_dd" method="post" action="dd_new_into.php">非常诡异的现像,直接用最简单的表单提交方法,将$row['wp_id']读取到的<input hidden="" style="visibility:hidden" name="wpbh[<? echo $row['wp_id'] ?>]" type="text" value="<? echo $row['wp_bh'] ?>" /> 读取是正常的。然后直接表单提交,dd_new_into.php那边,竟然会获取不到部份$row['wp_id']的值,现在知道的就是如果$row['wp_id']有1、2、3、4、6、7、8、9、10的值,,,只能获取到8-10的,前面的无法在正常获取。如果按上图所示做更改,又可以正常获取。十分不明白错在哪里,请指教!

解决方案 »

  1.   

    子集太小看不清!无法推演
    估计是有重名 name你可查看生成后的 html 文档
      

  2.   


    你好,name的名我都是用自动ID生成的值的,看了一下数据库,也没有重复。后来我把代码分段测试,发现问题就出在这一段里,麻烦你帮我看一下,代码如下:
    表单提交到<form  id="form_dd" name="form_dd" method="post" action="dd_new_into.php">
    <?
    $rowsum=1;
    while($row = mysql_fetch_array($result))

    $rowsum=$rowsum+1;
    ?>
    <tr id="<? echo $row['wp_bh']?>" style="font-size:11px">
    <td><? echo $row['wp_bh'] ?></td>
    <td><? echo $row['wp_name'] ?></td>
    <td><? echo $row['wp_xh'] ?></td>
    <td><? echo $row['wptx1'] ?></td>
    <td><? echo $row['wptx2'] ?></td>
    <td align="center"><input id="<? echo $row['wp_bh'] ?>sl" name="wp_sl[<? echo $row['wp_id'] ?>]" onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}" onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}" type="text" size="20px" style="width:40px" /></td>
    <td align="center"><input name="wp_dj[<? echo $row['wp_id'] ?>]" onblur="clearNoNum(this)" onkeyup="clearNoNum(this)" id="<? echo $row['wp_bh'] ?>dj" type="text" size="20px" style="width:40px" value="<? echo $row['wp_dj'] ?>" /></td>
    <td align="center"><input name="wp_select[]" type="checkbox" value="<? echo $row['wp_id'] ?>" id="<? echo $row['wp_bh'] ?>" class="<? echo $row['wp_bh'] ?>" onchange="check_change(this.id)"  style="font-size:20px" /></td>
    </tr>
    <tr hidden="" style="visibility:hidden"><td>
    <input hidden="" style="visibility:hidden" name="wpbh[<? echo $row['wp_id'] ?>]" type="text" value="<? echo $row['wp_bh'] ?>" />
    <input hidden="" style="visibility:hidden" name="wpname[<? echo $row['wp_id'] ?>]" type="text" readonly="readonly" value="<? echo $row['wp_name'] ?>" />
    <input hidden="" style="visibility:hidden" name="ggxh[<? echo $row['wp_id'] ?>]" type="text" readonly="readonly" value="<? echo $row['wp_xh'] ?>" />
    <input hidden="" style="visibility:hidden" name="wptx1[<? echo $row['wp_id'] ?>]" type="text" readonly="readonly" value="<? echo $row['wptx1'] ?>" />
    <input hidden="" style="visibility:hidden" name="wptx2[<? echo $row['wp_id'] ?>]" type="text" readonly="readonly" value="<? echo $row['wptx2'] ?>" />
    </td></tr>
    在dd_new_into.php里打印出来,$row['wp_id']有1、2、3、4、6、7、8、9、10的值,,,只能获取到8-10的值,1-7的值直接接收不到。但只要把后面那5个隐藏文本框其中一个删除掉,就正常接收所有值。或者把name="wp_dj[<? echo $row['wp_id'] ?>]这个NAME属性不设置,也能正常接收。
      

  3.   

    我让你看看生成后的 HTML 文档(在浏览器中)你看了吗?
      

  4.   


    刚重新看了一次,HTML 文档(在浏览器中)。每个NAME的值我都加了自定义的识别字母+id号(如上),都正常显示,没有发现有重复!请提示
      

  5.   


    刚在HTML 文档(在浏览器中)查看网页源代码中,我查找生成的name值比如“wpbh[1]”,都没有查到有重复的name值
      

  6.   


    问题已经解决,原因出在:$result = mysql_query("SELECT * FROM wpgl wp_bh ORDER BY wp_id desc");多了“wp_bh”但仍想知道,这样的 mysql_query为什么还能得出结果集呢?而且结果集还能正常显示,为什么post传输时,有些可以正常传递,有些又不行?好奇怪
      

  7.   

    对于你现有的应用
    $result = mysql_query("SELECT * FROM wpgl wp_bh ORDER BY wp_id desc");

    $result = mysql_query("SELECT * FROM wpgl ORDER BY wp_id desc");
    没有任何区别FROM wpgl wp_bh 只是给表 wpgl 取个别名 wp_bh
      

  8.   


    刚想说,我把ORDER BY wp_id desc删除后,变成最wpgl表的最大的几个自动ID号,又无法获取。如果加上了ORDER BY wp_id desc,,变成最小的那几个ID号无法获取,,,,,,天啊
      

  9.   

    你把浏览器得到的 html 文档贴出来(不要截图)
      

  10.   

    你给的是什么数据,怎么是多个 html 页面的混合体?而且不能用 浏览器打开(直接显示源码)剥离了一下,你的表单中有 1195 个表单元素
    会有警告
    Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini.即超过了 php.ini 中 max_input_vars 的默认值 1000 的数量,所以多出的表单元素会被截掉。
    这就是你丢失数据的原因!
    你可在 php.ini 中
    max_input_vars = 1200