在一个php中,我定义了两个表单,当第一个表单提交后,生成了第二个表单,提交第二个表单后,就取不到第一个表单的数据了,该怎么办?
<form method="get"><input type="text" name="m"><input type="submit" value="Submit"></form>//第一个表单
<?php
echo "<form method='get'>";
for($i;$i<$m;$i++)
{
echo "<input type='text' name='n".$i."'><br/>";
}
echo "<input type='submit' value='Submit'>";
echo "</form>";//第二个表单
var_dump($m);
?>
提交第二次后就得不到$m了,该怎么做才能将$m传递到最后呢?
本人新手,不懂得cookie、session。谢谢了!表单php提交传递数据

解决方案 »

  1.   

    这个最合理的做法就是用session或cookie保存前一次的提交,不懂的话就干脆以此为契机,学吧
      

  2.   

    恩,我临时学了一下,我的做法是两个表单分别放在两个php文件中,然后在第二个php中写了setcookie("m1",$m,time()+3600);
    $m2=$_COOKIE["m1"];
    然后我就用m2这个变量当做m的值,但是当我准备生成第三个表单的时候,怎么取到m?我觉得php跳转到下一个网页后就得不到前一个php的值了。如果用xml可以解决这种问题吗?
      

  3.   

    他这种需求我很久以前遇到过,就是做问卷调查时一道题一页——回答后才出现下一个问题,最初也是逐个做hidden传下去的,后来发觉十几道题就嫌麻烦了,用session反而简单多了cookie我也觉得麻烦,如果用cookie就干脆做“假提交”,一次把题都发过去,用js把后面的题隐藏,逐个显示,到最后一题才一并提交session的缺点是有时效性,需要在一定时间有动作才不会丢失值
    cookie的缺点是客户端可以造假
      

  4.   

    在 <form> </form> 间加入 php 代码
    foreach($_POST as $k=>$v) echo "<input type=hidden name'$k' value='$v'>";怎么会麻烦呢?使用了 session 的表单页,无论怎么设置,“回退”的表现都不尽人意
     我也有这么想,但是不会隐藏变量啊,希望有代码参考一下,谢谢!
      

  5.   

    他这种需求我很久以前遇到过,就是做问卷调查时一道题一页——回答后才出现下一个问题,最初也是逐个做hidden传下去的,后来发觉十几道题就嫌麻烦了,用session反而简单多了cookie我也觉得麻烦,如果用cookie就干脆做“假提交”,一次把题都发过去,用js把后面的题隐藏,逐个显示,到最后一题才一并提交session的缺点是有时效性,需要在一定时间有动作才不会丢失值
    cookie的缺点是客户端可以造假
    不是吧,我生成的表单是根据上一个表单提交数据才能用的,没有输出上限,hidden不行。
      

  6.   

    一样的,js也能根据“提交”内容生成控件,只是你不熟悉而已实在搞不定就按#6老徐的方法写,这个思路最简单我个人对数组相对熟悉些,所以习惯用session记录,懒得每次都对前面提交的数据再遍历一次
      

  7.   

    你可以这么的。两方式
    一种方式就是分两页面:第一步提交后,到第二步的时候读取出来。
    两步在一个页面:先用js隐藏第二步,ajax提交,那么再第二步也能获取第一步的值。
      

  8.   

    恩,我觉得这个方法最方便,但是没有出结果,你看看我的代码好吗?
    这是第二个php:
    <?php
    foreach($_POST as $k=>$v)
    {
    echo "<input type='hidden' name='".$k."' value='".$v."'/>";
    }
    var_dump($m);
    echo "<form action='demo3.php' method='get'>";
    for($j=1;$j<=$m;$j++)
    {
    {
    echo "请输入n".$j."的值:<input type='text' name='n".$j."'><br/>";
    }
    }
    echo "<input type='submit' value='确认'>";
    echo "</form>";
    ?>
    这是第三个php:
    <?php
    foreach($_POST as $k=>$v)
    {
    echo "<input type='hidden' name='".$k."' value='".$v."'>";
    }
    $n;
    for($i=1;$i<=$m;$i++)
    {
    $h="n".$i;
    $n[]=$_POST["$h"];
    }
    var_dump($n);
    ?>
    跳转到第三个php输出的是null,网址上也仅仅跟着n1、n2、n3...的值,没有出现m,怎么回事呢?
      

  9.   

    <input>放在<form>外面有啥用啊?
      

  10.   

    说的好啊!有一种白写了一个月php的感觉,并且我还发现我的代码里面get和post都没匹配上,非常谢谢你!
      

  11.   

    我要结楼了,这是我第一次在csdn上发帖,问问php相关的问题,没想到效果很好,虽然严重的鄙视了自己的智商,但能学到东西我很感谢,以后我也学习学习cookie还有session,非常感谢xuzuning、snmr_com!
    @xuzuning
    @snmr_com
    撒花啦!O(∩_∩)O