PHP中表单名name和类型type都相同,提交后如何取得它们的值?这是我在做一个表单时遇到的问题,最佳的解决方法如下:
从数据库中取出一组数据以列表形式显示在页面上,每条记录前有一个”checkbox”供多选记录,而这个checkbox的name是相同的。在jsp中所有被选中的”checkbox”将以数组形式传递到服务器端,这是一个理所应当的方便程序员的设计,但是php恰恰没有这么做……他只传递了最后一个”checkbox”的值!真是不明白为什么要这么设计……
那么我们该如何处理呢?checkbox肯定还是要用的,只需将checkbox的name设定为php的数组形式即可:
<input type="checkbox" name="pid[]" value="1" />
这样所有选中的checkbox的值就会以数组形式传递到服务器端,
- $name_arr=$_POST['pid'];
- $num=count($name_arr);
- for($i=0;$i<$num;$i++)
- {
- $name=$name_arr[$i];
- .........
- }
但是这里又引发了另外一个问题,就是javascript通过name访问checkbox时会发生错误。解决的办法也很简单就是再给checkbox的id赋值,
<input type="checkbox" name="pid[]" id="pid" value="1" />
javascript通过id访问checkbox,这就绕过了前面的问题。
订阅评论
xie xie le o ,ni jiejue le wo de wenti .thx
可是当你未选择改checkbox时 是不传递值的
譬如有5个checkbox,而你只选了三个,那pid[]这个数组也只有3个元素。这样你又如何用PHP判断是哪几个checkbox被选中了呢?
你说呢
每个元素都有一个唯一的 value 值,这不是很容易就知道是哪个 checkbox 了吗?