对于PHP和表单,我有点像菜鸟,但我会尽力解释。
我要做的是创建一系列包含在内容容器中的表单。用户填写表单#1,单击“提交”并继续填写表单#2,依此类推。每个表单中的数据被发送到下一个表单并存储在隐藏字段中,一旦表单#3完成,数据全部插入到MYSQL数据库中。
到目前为止,这一切都很好。我遇到的问题是我似乎无法让提交按钮按预期工作。我设想的是用户会导航到'blah.com/recruit.php?p=form1'并填写表单#1,然后提交按钮会将他们带到'blah.com/recruit.php?p= form2'等等。
<form id="form" action="recruit.php?p=form2" method="post">
这不起作用,但我不明白为什么。我浏览了一下互联网,我发现了一些讨论类似问题的论坛主题,但没有一个真正详细讨论解决方案或为什么这种方法不起作用。
任何人都可以向我解释一下我做错了吗?我觉得这很明显,但我不能把手指放在上面。
非常感谢,
Splatgore
答案 0 :(得分:0)
一些工作示例代码可以执行我认为您要实现的目标:
<?php
$p = intval($_GET['p']);
if ($p == 0)
{
$p = 1; // default to first form
}
if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST')
{
// get / set all forms values here since subsequent forms will be
// posting the previous forms' data via hidden fields
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$tel_number = $_POST['tel_number'];
if ($p == 3)
{
// all forms done, insert to MySQL here
}
if ($p == 2)
{
// form 2's validation
$p = 3; // set so that the form that follows will now show the
// third form
}
if ($p == 1)
{
// form 1's validation
$p = 2; // set so that the form that follows will now show the
// second form
}
}
?>
<form id="form" action="recruit.php?p=<?php echo $p; ?>" method="post">
<h2>Form #<?php echo $p; ?></h2>
<?php
if ($p == 1)
{
?>
<!-- form 1's fields // -->
<p><label for="first_name">First Name:</label>
<input type="text" name="first_name" id="first_name" size="40" value="<?php echo $first_name; ?>" /></p>
<p><label for="last_name">Last Name:</label>
<input type="text" name="last_name" id="last_name" size="40" value="<?php echo $last_name; ?>" /></p>
<?php
}
if ($p == 2)
{
?>
<!-- form 2's fields // -->
<p><label for="tel_number">Tel Number:</label>
<input type="text" name="tel_number" id="tel_number" size="25" value="<?php echo $tel_number; ?>" /></p>
<p><input type="hidden" name="first_name" value="<?php echo $first_name; ?>" />
<input type="hidden" name="last_name" value="<?php echo $last_name; ?>" /></p>
<?php
}
if ($p == 3)
{
?>
<!-- form 3's fields // -->
<div>
<input type="hidden" name="first_name" value="<?php echo $first_name; ?>" />
<input type="hidden" name="last_name" value="<?php echo $last_name; ?>" />
<input type="hidden" name="tel_number" value="<?php echo $tel_number; ?>" />
</div>
<?php
}
?>
<p><input type="submit" value="Submit"></p>
</form>
答案 1 :(得分:0)
看起来你有嵌套表格。 这在HTML中是不可能的。
如果你正在使用你的方法,只需使用相同的提交按钮,这将导致相同的PHP脚本。 在php脚本中,检查已设置哪些隐藏字段以查看该过程的进度。
更好的方法IMO很难将数据存储在会话var中,并且总是导致另一个表单页面。