PHP在提交表单失败后保留表单信息
你好 我在mvc系统视图中构建表单,并且希望在表单提交失败的情况下保留所有插入的值。 如何才能做到这一点:我试着像(例如一个字段):PHP在提交表单失败后保留表单信息
<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; ?>
但当然,它不工作的第一次(当没有动作后完成)。
要做到这一点,最简单的方法是什么?有任何想法吗?
谢谢
我建议是这样的:
<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”]: )
值得注意的是,为了实现这个功能,当提交**失败时,你不能执行POST/Redirect/GET模式。 – 2014-04-28 18:59:23
value="<?php echo isset($_POST['user_firstname'])? $_POST['user_firstname'] : "" ?>"
你是否应该将“”更改为“”? – 2013-11-18 21:45:07
你的意思是你想保持表单的值,当它没有提交?您可以使用$ _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; ?>
只是遍历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>
<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']);}?>"/>
此代码是为了更容易提交表单失败后保留表单信息。
这是什么意思? “但当然,它不会第一次运作”....第一次向用户显示表格时,由于他尚未提交任何内容,因此该值不能存在。或者是有一些PHP错误? – 2011-06-03 10:11:49
1)你为什么说'它第一次不起作用?' 2)你拼错$ _POST ['user_firstmane'],当然应该是$ _POST ['user_firstname'] 3)(小OT)在我看来,更多的“MVC”你不应该直接使用$ _POST变量但是从“控制器”(例如,具有“firstName”属性的“用户”对象)取得的值将是更好的选择。 – ArtoAle 2011-06-03 10:23:31