两个.PHP文件如何共享变量数据?

younet 2006-07-13 05:07:58
第一个文件: first.php
<form name="form1" method="post" action="second.php">

<?php
for($num=0;$num<count($array1);$num++){

?>
<div>
<input type="checkbox" name="cb[]" value="<? echo $array1[$num];?>" />
<input type="hidden" name="username" value="<? echo $username[$num];?>" />
<input type="hidden" name="userage" value="<? echo $userage[$num];?>" />
<input type="hidden" name="useraddr" value="<? echo $useraddr[$num];?>" />

</div>

<?php
}
?>
<input type="submit" value="提交" id="DoSearch" />
</form>

我的问题是,当我选中一个checkbox,如何把对应的username 、userage、useraddr 提交到second.php 。我现在获得的结果是,second.php得到了所有的username值,并没有区分是否checked
...全文
732 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
younet 2006-07-14
  • 打赏
  • 举报
回复
xuzuning(唠叨) 提到的最后一种办法,把信息全部放在checkbox的value中,当value字符串长度达到一定极限时,就会出现异常,value的内容就会显示在页面上,呵呵,乱套了。我最开始想到的就是这个办法。

现在问题已经解决了,谢谢各位!
xuzuning 2006-07-14
  • 打赏
  • 举报
回复
好,spacet(空格t) 已经帮我解释了。

尽管input type="hidden"对象总是会被提交的,但是checkbox只在被选中后才会提交。
你只需通过提交的checkbox的值选取对应的hidden的值就可以了。
表单还要改一下
<input type="checkbox" name="cb[]" value="<? echo $array1[$num];?>" />
<input type="hidden" name="username[<? echo $num;?>]" value="<? echo $username[$num];?>" />
<input type="hidden" name="userage[<? echo $num;?>]" value="<? echo $userage[$num];?>" />
<input type="hidden" name="useraddr[<? echo $num;?>]" value="<? echo $useraddr[$num];?>" />

如果你不需要传递全部数据,在可以把用户信息组装在checkbox的value中,提交后再拆分
<input type="checkbox" name="cb[]" value="<? echo $array1[$num].','.$username[$num].','.$userage[$num].','.$useraddr[$num];?>" />
spacet 2006-07-13
  • 打赏
  • 举报
回复
你的代码中只有一个form,如果仅仅是提交表单,那么所有的数据都会提交过去,你需要得到的和你不需要的都会提交到second.php,可以在second.php页面只用你所需要的,并完成后续逻辑
表单还是按唠叨老大那样改
checkbox只有选中的才会有值传过去,所以你可以根据所得到的checkbox的值就可以知道选择的是数组中的哪个,并相应的取得需要的hidden元素的值:
示例:
<?php
//把你需要的数据分别存在$cb,$username,$userage,$useraddr
//注:仅限于只有一个checkbox被选中
//取得checkbox的值
$cb = $_POST['cb'][0]; //只有一个checkbox被选中时,传递过来的值都放在数组的第一个元素
//根据checkbox的值取得需要的hidden值
$username = $_POST['username'][$cb];
$userage = $_POST['userage'][$cb];
$useraddr = $_POST['useraddr][$cb];
?>


当然还有办法解决,可以把表单分开,每个循环是一个表单,点击checkbox触发相应表单提交
younet 2006-07-13
  • 打赏
  • 举报
回复
能给个JS例子吗?我还是有些不太明白
lantersen 2006-07-13
  • 打赏
  • 举报
回复
可以取关联名,
比方说,你选中的项的为"checkBox1",则
<input type="hidden" name="usernameCHK1" value="<? echo $username[$num];?>" />
<input type="hidden" name="userageCHK1" value="<? echo $userage[$num];?>" />
<input type="hidden" name="useraddrCHK1" value="<? echo $useraddr[$num];?>" />
其它的类似,提交时如果是选中的,比方说"checkBox1"被选中,则到了second.php,可以只选
$_RQUEST['usernameCHK1'],$_RQUEST['userageCHK1'],$_RQUEST['useraddrCHK1'],
方法有点木,应该能解决你的问题,或者,你用JS来控制
ImN1 2006-07-13
  • 打赏
  • 举报
回复
只需要一组hidden就够了,把array写入javascript的一个array
当onsubmit检测哪个checkbox.checked=true,然后把对应的javascript的array值赋给hidden
然后return true提交
younet 2006-07-13
  • 打赏
  • 举报
回复
淘宝的搜索结果列表

http://list.taobao.com/browse/15-1512/t-y---a-y-80-list-ends-0-all-1512.htm

选中商品前面的checkbox,然后点“对比选中的宝贝”,会弹出新页面,这个新页面的数据和结果列表页面的数据有很多是相同的,因此我想,在这两个页面中是不是可以共享数据呢?
younet 2006-07-13
  • 打赏
  • 举报
回复

请注意代码中是有循环的,可以生成多个<div>...</div>,<div>中包含的就是

<input type="checkbox" name="cb[]" value="<? echo $array1[$num];?>" />
<input type="hidden" name="username[]" value="<? echo $username[$num];?>" />
<input type="hidden" name="userage[]" value="<? echo $userage[$num];?>" />
<input type="hidden" name="useraddr[]" value="<? echo $useraddr[$num];?>" />

就比如淘宝的商品搜索结果列表一样,选中其中几个商品前面的checkbox,然后点“比较”按钮,提交checkbox数据到下一个php文件。我的流程和淘宝有一些差别,我不光想提交checkbox数据,还要提交已经被选中checkbox对应的兄弟数据,也就是那些hidden数据 .

不知我说清楚了没有?
我想了很多办法,都没办法做到
xuzuning 2006-07-13
  • 打赏
  • 举报
回复
<input type="checkbox" name="cb[]" value="<? echo $array1[$num];?>" />
<input type="hidden" name="username[]" value="<? echo $username[$num];?>" />
<input type="hidden" name="userage[]" value="<? echo $userage[$num];?>" />
<input type="hidden" name="useraddr[]" value="<? echo $useraddr[$num];?>" />
yangguo_god 2006-07-13
  • 打赏
  • 举报
回复
没看明白
yangguo_god 2006-07-13
  • 打赏
  • 举报
回复
选定就提交,不选定就不提交??

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧