两种形式,一页

时间:2012-06-25 17:35:09

标签: php forms session post input

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

第一个提交涉及提交用户名(通过命令行程序自动填写的姓名和教职员工)。显然,我想保留这些信息,并在填写第二种表格所需的信息时将其显示给用户。这很好。

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

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

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

但是如果提交了第二个表单,那么这些变量就会被删除。我的理解是,这是因为第一种形式是技术上已经提交了。但是,再一次,这不是会话变量的重点 - 不是要消灭吗?

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

2 个答案:

答案 0 :(得分: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>

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

祝你好运

答案 1 :(得分: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>