2

我有两个表单,因此有两个不同的提交按钮,用于一个页面(用于将员工添加到公司数据库的页面)。

第一次提交处理提交用户名(通过命令行程序自动填写姓名和教师)。显然,我想保留这些信息并在用户填写第二个表单所需的信息时将其显示给用户。这工作正常。

问题是第二种形式是否有错误。添加失败并显示一条错误消息,但第一个表单中的所有信息都被清除了。

如果提交第一个表单(没有错误),则设置以下会话变量:

$_SESSION['name'] = $info['displayName'];
$_SESSION['faculty'] = $info['ou']; 
$ownerId = trim(mysql_prep($_POST['ownerId']));
$_SESSION['ownerId'] = $ownerId;

但是,如果提交第二个表单,这些变量就会消失。我的理解是,发生这种情况是因为第一个表单在技术上不再提交。但是,话又说回来,这不是会话变量的重点——不要被消灭吗?

编辑:添加我取消设置所有会话变量可能会有所帮助,但前提是第二个表单提交时没有错误。虽然我认为这不是很相关

4

2 回答 2

3

我能想到两种方法

if($POST['form_name'] == 'form1')
{
   //set my session variables
}
else  //for the second form
{
  //do something else
  //then session is intact
}

我曾经在我的表单中放置一个隐藏字段来存储表单的名称。有些使用提交按钮的名称。

另一种方法是重新填充另一个表单,该表单仍在考虑如何在不使用两个表单的一个按钮的情况下执行此操作

<form name="form1" action="POST" action="xxx">
    <input type="text" values="<?php print($_POST['firstform_val_1']) ?>" name="val_1" />
</form>


<form name="form2" action="POST" action="xxx">
  //these hidden fields preserve the formal values and make sure they are reposted in this second form
  <input type="hidden" name="firstform_val_1" value="<?php print($_POST['firstform_val_1']) ?>" />
  <input type="hidden" name="firstform_val_2" value="<?php print($_POST['firstform_val_2']) ?>" />

  <input type="text" name="secondform_val1" />
  <input type="submit" name="form2" />
</form>

这就是想法。我刚从楼上得到这个,没有测试。在第一种形式中,先前的值由第二种形式的隐藏字段中重复的值重新填充

祝你好运

于 2012-06-25T17:49:04.083 回答
0

如果表单是由 php 页面生成的,您可以使用以下脚本自动填充之前提交的任何字段。

启用短标签;

<input type="text" name="firstName" value="<?=isset($_POST['firstName'])?$_POST['firstName']:'';?>" ></input>

没有短标签;

<input type='text' name="firstName" value="
<?php
    $value=isset($_POST['firstName'])?$_POST['firstName']:'';
    echo($value);
?>
"></input>
于 2012-06-25T18:12:28.887 回答