PHP keep form info after submit form failed

2019-05-16 15:18发布

问题:

Hello I am building a form in a mvc system view, and i want that all the inserted values will be kept,in case of form submit failure. How can this be done: i tried like (example for a field):

     <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; ?> 

but of course, it doesn't work the first time (when no post action is done).

what is the simplest way to do this? any ideas?

thank you

回答1:

I would suggest something like:

<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; ?> 

You also had a typo in the $_POST["user_firstmane"] should be $_POST["user_firstname"] :)



回答2:

Just loop through the DOM in javascript and put the PHP $_POST data into the 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>


回答3:

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


回答4:

You mean you want to keep the value of the form when it failed to submit? You can use $_SESSION to store the value in the check page. For example:

check.php

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

In your current form. change value=<?= $_POST['user_firstmane'] ?> to value="<?=$_SESSION['user_firstname']?>", so:

<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; ?> 


回答5:

<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']);}?>"/>

This code is much more easier to keep form info after submit form failed.



标签: php forms submit