提交后如何在文本输入中保留值


How can I keep a value in a text input after a submit?

我用PHP编写此代码,单击"提交"后,我希望将值保存在texbox中。 当我第一次打开页面时,我在textfild中看到一些错误?我该如何解决这个问题?

<html>
<body>
<form action="" method="GET">
First number<input type="text" name="num1" placeholder="<?php echo $_GET['num1']  ; }?>"/>
Second number<input type="text" name="num2" placeholder="<?php echo $_GET['num2'] ; ?>"/>
<input type="submit" name="submit" value="Submit"/>
</form>
<?php
if(isset($_POST['submit']))
{
$num1=$_GET['num1'];
$num1=$_GET['num2'];
$sum=($num1+$num2);
echo "Sum is :<input type='text' value='$sum'/>";   
}
?>
</body>
</html>

首次打开页面时,尚未设置 GET 变量。

请改为执行以下操作:

First number<input type="text" name="num1" placeholder="<?php echo (isset($_GET['num1']))? $_GET['num1'] : ""; ?>"/>
Second number<input type="text" name="num2" placeholder="<?php echo (isset($_GET['num2']))? $_GET['num2'] : ""; ?>"/>

这将验证(使用三元表达式)是否设置了 get 变量,如果是,则将值应用于文本框。

此外,正如 mopo 下面提到的,这是 PHP7 中的一个新功能,也可以以一种更简单的方式工作。

First number<input type="text" name="num1" placeholder="<?php echo $_GET['num1'] ?? ""; ?>"/>
Second number<input type="text" name="num2" placeholder="<?php echo $_GET['num2'] ?? ""; ?>"/>

另外,您不应该检查提交按钮是否使用 POST 设置......它不应该工作。

if(isset($_POST['submit']))
{ ...
}

您可以验证是否同时设置了$_GET['num1']$_GET['num2']