Php 提交后在文本字段中保留文本

Php 提交后在文本字段中保留文本,php,html,Php,Html,我有一个问题,保持文本字段中的文字,以前有后推提交。我用的是: <input name="date" type="text" id="date" <?php if(isset($_POST['date'])){echo 'value="'.$_POST['date'].'"';} ?>/> 如果遵循PRG原则(POST redirect GET),则需要在会话中跟踪POST数据 我假设您在提交后会这样做: if (POST is fine) { do somet

我有一个问题,保持文本字段中的文字,以前有后推提交。我用的是:

 <input name="date" type="text" id="date" <?php if(isset($_POST['date'])){echo 'value="'.$_POST['date'].'"';} ?>/>

如果遵循PRG原则(POST redirect GET),则需要在会话中跟踪POST数据

我假设您在提交后会这样做:

if (POST is fine) {

  do something;
  redirect;

} else {

  re-render page and show feedback

}
由于服务器将在重定向时丢弃任何POST数据,因此您需要在每次提交时跟踪POST数据,并在页面加载(GET)时重新填充POST数据

在包含要提交的表单的页面上:

if (isset($_SESSION['user_POST']) {
  $_POST = $_SESSION['user_POST'];
}

忽略语法,我对PHP不太感兴趣。

这是您的要求

<?php
session_start();

if(isset($_REQUEST['date'])){

$_SESSION['date'] = $_REQUEST['date'];
echo "Succesfully added transaction. Updating table...";
echo "<META HTTP-EQUIV=\"refresh\" CONTENT=\"6\">";
}
?>

<form method="post">
<input name="date" type="text" id="date" value="<?php echo $_SESSION['date'];?>" />
<input type="submit" name="submit" />
</form>

用于测试

<?php  echo $_POST['date']; ?>

如果上述条件正确,请尝试将设置为等于true

<input name="date" type="text" id="date" <?php if(isset($_POST['date']) === true){echo 'value="'.$_POST['date'].'"';} ?>/>

  • 如果您使用的是会话变量。。使用
    session_start()位于页面顶部

  • 检查表单中是否有method=“POST”,因为默认情况下它是GET

  • 检查表单的操作字段是否正确,例如

  • 如果要将文本放入值中,最好检查value属性中的条件并回显值。因为即使您不在HTML插入标记中写入值。。它取为
    value=”“
    。这将在以后创建一个不明确的条件

  • 所以最好这样做

    <form action="abc.php" method="post" >
    
    <input name="date" type="text" id="date" value="<?php if(isset($_POST['date'])){echo $_POST['date'];} ?>" />
     .......................
    </form
    
    
    
    从未听说过,请注意解释一下,如果您有tiem,我是如何做到的?提交页面后,您正在使用meta-HTTP-EQUIV=“refresh”。页面将刷新,因此如果您希望在提交后获得文本字段,您可以使用$\u SESSION或$\u Cookies。我已编辑了我的代码,请复制完整的代码并在本地系统中进行检查。让我知道工作与否。谢谢
    <?php  echo $_POST['date']; ?>
    
    <input name="date" type="text" id="date" <?php if(isset($_POST['date']) === true){echo 'value="'.$_POST['date'].'"';} ?>/>
    
    <form action="abc.php" method="post" >
    
    <input name="date" type="text" id="date" value="<?php if(isset($_POST['date'])){echo $_POST['date'];} ?>" />
     .......................
    </form
    
    <?php
    
     session_start(); // as you are using session variables..
    
     if (isset($_POST['submit2']))
    
    {
    $con = mysql_connect("xx","xx_xx","xx");
     if (!$con)
     {
          die('Could not connect: ' . mysql_error());
     }
    
     mysql_select_db("xx_xx", $con);
    
    
    $date = $_POST['date'];
    
    $_SESSION['date'] = $_POST['date']; // POST is an array carrying many elements so be specific which element you want. inthis case it is $_POST['date'];
    
    //Writes the to the server 
    
    $sql = mysql_query("INSERT INTO `reservation__date` (`reservation_id`, `reservation_date`) VALUES ('000', '$date')") or die(mysql_error()); 
    $query = mysql_query($sql);
    
     if ($_SERVER['REQUEST_METHOD'] === 'POST')
    {
    
     $_SESSION['DATE'] = $_REQUEST['date'];
    
     echo "Succesfully added transaction. Updating table...";
    
     echo "<META HTTP-EQUIV=\"refresh\" CONTENT=\"6\">";  
    
     mysql_close($con);
    }
    }
    
    ?>