使用php提交html表单不起作用


submitting html form using php not working

这是我上一期的延续。我把代码做得很简单,怀疑问题出在提交第二张表格上。

这是代码结构:

  1. 一个表单(form1),有两个输入字段用于名称和地点
  2. 表单提交后,(仅当在两个字段中,用户输入数据时)创建另一个具有text area的表单(form2),以显示上一个表单的php echo和另外两个提交按钮
  3. 实际上,我使用第二个表单的提交按钮来保存文本和发送电子邮件(在这里,我只是用一个简单的文本区域回声来代替它,使它变得简单)

代码:

<html>
<body>
<div class="emcsaninfo-symcli-main">
    <form  id="form1" name="form1" action=" " method="post" > 

        <div class="input">Your Name</div>
        <div class="response"><span><input  class="textbox" id="myname" name="myname" type="text" value="" /></span> </div>

        <div class="input">Your Place</div>
        <div class="response"><span><input  class="textbox" id="myplace" name="myplace" type="text" value="" /></span> </div>

<div class="submit">
        <input  id="first_submit" type="submit"  name="first_submit" value="first_submit" />
</div>
</form>

<?php
if(!empty($_POST['myname']) && !empty($_POST['myplace']) )
{
$myname = $_POST['myname'];
$myplace = $_POST['myplace'];
?>

<form  id="form2" name="form2" action=" " method="post" >
<textarea onclick="this.select()" name="output_textarea" id="output_textarea" cols="100" rows="25" readonly>

<?php
echo "My name is $myname and I am from $myplace";
?>
</textarea>
<input  id="submit1" type="submit"  name="name_field" value="submit1" />
<input  id="submit2" type="submit"  name="place_field" value="submit2" />
</form> 
<?php
function name()
{
    echo $_POST["output_textarea"];
}
if(isset($_POST['name_field']))
{
   name();
} 

function place()
{
    echo $_POST["output_textarea"];
}
if(isset($_POST['place_field']))
{
   place();
} 
}
?>

</div>      
</html>
</body>

问题:form1提交的第一个表单运行良好。它将使用另外两个提交按钮submit1submit2创建输出文本区域。但是,当我使用这两个按钮提交第二个表单form2时,表单没有正确提交,它只是用初始代码刷新html。

我的要求是,当我按下第二个表单提交按钮时,它必须在保持第一个表单文本区域的位置后,再次回显文本区域的输出。

PHP FIDDLE:

我已经设置了一个php fiddle来理解这个问题php fiddle MAINPHP FIDDLE执行结果-

您需要测试提交的表单。最好检查提交字段而不是输入字段。

if(isset($_POST['first_submit'])) )
{
// Do stuff with first form
}
if (isset($_POST['submit1'], $_POST['submit2']))
{
// Do stuff with second form
}

要保持表单值的填写状态,可以使用post值进行填写。在第一种形式中,将输入更改为:

<input  class="textbox" id="myname" name="myname" type="text" value="<?php if(isset($_POST['myname']) echo $_POST['myname']; ?>" />

在第二种形式中,添加复制值的隐藏输入:

<input  id="myname_hidden" name="myname" type="hidden" value="<?php if(isset($_POST['myname']) echo $_POST['myname']; ?>" />

注意,我更改了ID,添加了_hidden,因为不能有两个具有相同ID的元素。我删除了类,因为CSS与隐藏字段无关。

您的if条件只包含第一个形式。用替换if条件

if(!empty($_POST['myname']) && !empty($_POST['myplace']) || !empty($_POST['output_textarea']))

hidden input保存form1数据,如下所示:

<form id="form2" name="form2" action="" method="post">
   .....
   <input type="hidden" name="myname" value="$myname" />
   <input type="hidden" name="myplace" value="$myplace" />
</form>