PHP在提交表单失败后保留表单信息

时间:2011-06-03 10:02:51

标签: php forms submit

您好 我正在mvc系统视图中构建一个表单,我希望在表单提交失败的情况下保留所有插入的值。 如何做到这一点:我试着(对于一个领域的例子):

     <label for="user_firstname">Nume</label>
    <input id="user_firstname" type="text" name="user_firstname" value=<?= $_POST['user_firstmane'] ?> >
    <? if (isset($errors['user_firstname'])): ?>
    <span class="error"><?= $errors['user_firstname']; ?></span>
<? endif; ?> 

但当然,它第一次不起作用(没有完成任何后期操作)。

最简单的方法是什么?任何想法?

谢谢

5 个答案:

答案 0 :(得分:2)

在javascript中循环遍历DOM并将PHP $ _POST数据放入input.value

<script type='text/javascript'>

<?php
    echo "var jsArray = new Array();";
    foreach ($_POST as $key=>$value){
        echo "jsArray['$key'] = '$value';";  //turn it into a javascript array
    }
?>


        // Grab all elements that have tagname input
        var inputArr = document.getElementsByTagName("input");

        // Loop through those elements and fill in data
        for (var i = 0; i < inputArr.length; i++){
            inputArr[i].value = jsArray[inputArr[i].name];

        }

</script>

答案 1 :(得分:1)

value="<?php echo isset($_POST['user_firstname'])? $_POST['user_firstname'] : "" ?>"

答案 2 :(得分:1)

我会建议像:

<label for="user_firstname">Nume</label>
    <input id="user_firstname" type="text" name="user_firstname" value=<?(isset($_POST['user_firstname']) ? $_POST['user_firstname'] : ""; ?>>
    <? if (isset($errors['user_firstname'])): ?>
    <span class="error"><?= $errors['user_firstname']; ?></span>
<? endif; ?> 

你在$ _POST [“user_firstmane”]中也有一个拼写错误应该是$ _POST [“user_firstname”]:)

答案 3 :(得分:1)

您的意思是您希望在未能提交表单时保留表单的价值?您可以使用$ _SESSION将值存储在检查页面中。例如:

check.php

<?php
   session_start();
   if (strlen($_POST['user_firstname']) < 5) { //for example
       $_SESSION['user_firstname'] = $_POST['user_firstname'];
   }
?>

以您目前的形式。将value=<?= $_POST['user_firstmane'] ?>更改为value="<?=$_SESSION['user_firstname']?>",所以:

<label for="user_firstname">Nume</label>
    <input id="user_firstname" type="text" name="user_firstname" value="<?=$_SESSION['user_firstname']?>" />
    <? if (isset($errors['user_firstname'])): ?>
    <span class="error"><?= $errors['user_firstname']; ?></span>
<? endif; ?> 

答案 4 :(得分:0)

<input id="FirstName" name="FirstName" placeholder="First name" title="First Name" required="" tabindex="1" type="text" value="<?php if(isset($_POST['FirstName'])){ echo htmlentities($_POST['FirstName']);}?>"/>

在提交表单失败后,此代码更容易保留表单信息。