使用php提交后,将表单数据保留在字段中


Keep form data inside the field after submission using php

我使用下面的代码来创建html表单。(它有两个表单)我可以在第一次和第二次提交表单后保留textarea字段。但我在这里面临的问题是下拉菜单的选择。

代码:

<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="<?php if(isset($_POST['myname'])) { echo htmlentities ($_POST['myname']); }?>" /></span> </div>

        <div class="input">Your Place</div>
        <div class="response"><span><input  class="textbox" id="myplace" name="myplace" type="text" value="<?php if(isset($_POST['myplace'])) { echo htmlentities ($_POST['myplace']); }?>" /></span> </div>
        <div class="input-quest">Graduation Status</div>
        <div class="input-resp"><select id="graduation" name="graduation" OnChange="CMT();"><option class="dropdown-options">Graduate</option><option class="dropdown-options">Non Graduate</option></select></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']) || !empty($_POST['output_textarea'] ) )
{
$myname = $_POST['myname'];
$myplace = $_POST['myplace'];
$graduation = $_POST['graduation'];
?>

<form  id="form2" name="form2" action=" " method="post" >
<textarea onclick="this.select()" name="output_textarea" id="output_textarea" cols="100" rows="25" readonly value="<?php if(isset($_POST['output_textarea'])) { echo htmlentities ($_POST['output_textarea']); }?>">

<?php
echo "My name is $myname and I am from $myplace, and I am $graduation";
?>
</textarea>
<input  id="submit1" type="submit"  name="name_field" value="submit1" />
<input  id="submit2" type="submit"  name="place_field" value="submit2" />
<input  id="myname_hidden" name="myname" type="hidden" value="<?php if(isset($_POST['myname'])) { echo htmlentities ($_POST['myname']); }?>"/>
<input  id="myplace_hidden" name="myplace" type="hidden" value="<?php if(isset($_POST['myplace'])) { echo htmlentities ($_POST['myplace']); }?>" />
<input  id="graduation_hidden" name="graduation" type="hidden" value="<?php if(isset($_POST['graduation'])) { $graduation = $_POST['graduation']; }?>" />
</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>

例如,如果我放置name = Johnplace : UK,并将毕业状态选择为graduate,它将为我提供第一个表单输出,如在我的output textarea

My name is John and I am from UK, and I am Graduate

我有两个单独的提交按钮用于第二个表单,使用它我可以在output textarea的帮助下执行其他功能如果我按下第二个按钮中的任何一个,我可以将条目保留在我的姓名和地点区域,但不会保留下拉选择。所以它只会像提交submit1submit2 一样显示

My name is John and I am from UK, and I am

这里,

  1. 如何将下拉选择与输出文本区域一起保留
  2. 在第二次提交表单后,我是否可以只显示output_textarea内容而不保留第一个表单数据

PHP FIDDLE

"grade"元素的隐藏输入中存在逻辑错误
这是你在第53-55行看到的。第55行没有回声,而是有一个$graduation = $_POST['graduation'];,这对你没有帮助:

<input  id="myname_hidden" name="myname" type="hidden" value="<?php if(isset($_POST['myname'])) { echo htmlentities ($_POST['myname']); }?>"/>
<input  id="myplace_hidden" name="myplace" type="hidden" value="<?php if(isset($_POST['myplace'])) { echo htmlentities ($_POST['myplace']); }?>" />
<input  id="graduation_hidden" name="graduation" type="hidden" value="<?php if(isset($_POST['graduation'])) { $graduation = $_POST['graduation']; }?>" />

相反,这个代码应该可以工作:

<input  id="myname_hidden" name="myname" type="hidden" value="<?php if(isset($_POST['myname'])) { echo htmlentities ($_POST['myname']); }?>"/>
<input  id="myplace_hidden" name="myplace" type="hidden" value="<?php if(isset($_POST['myplace'])) { echo htmlentities ($_POST['myplace']); }?>" />
<input  id="graduation_hidden" name="graduation" type="hidden" value="<?php if(isset($_POST['graduation'])) { echo htmlentities($_POST['graduation']); }?>" />