补充:表单提交<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的,前面的无法在正常获取。如果按上图所示做更改,又可以正常获取。十分不明白错在哪里,请指教!
补充:表单提交<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的,前面的无法在正常获取。如果按上图所示做更改,又可以正常获取。十分不明白错在哪里,请指教!
估计是有重名 name你可查看生成后的 html 文档
你好,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属性不设置,也能正常接收。
刚重新看了一次,HTML 文档(在浏览器中)。每个NAME的值我都加了自定义的识别字母+id号(如上),都正常显示,没有发现有重复!请提示
刚在HTML 文档(在浏览器中)查看网页源代码中,我查找生成的name值比如“wpbh[1]”,都没有查到有重复的name值
问题已经解决,原因出在:$result = mysql_query("SELECT * FROM wpgl wp_bh ORDER BY wp_id desc");多了“wp_bh”但仍想知道,这样的 mysql_query为什么还能得出结果集呢?而且结果集还能正常显示,为什么post传输时,有些可以正常传递,有些又不行?好奇怪
$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
刚想说,我把ORDER BY wp_id desc删除后,变成最wpgl表的最大的几个自动ID号,又无法获取。如果加上了ORDER BY wp_id desc,,变成最小的那几个ID号无法获取,,,,,,天啊
会有警告
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