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
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"] :)
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>
value="<?php echo isset($_POST['user_firstname'])? $_POST['user_firstname'] : "" ?>"
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; ?>
<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.