在我提交了多个表单后,我想在提交完成后记住表单中的值。
我能想到的最自发的方式是:
<div class="top_child">
<h3>Faktureringsuppgifter:</h3>
<label name="firstname">Förnamn:</label>
<input type="text" name="firstname" value="<?php if(isset($_POST['firstname'])) { echo $_POST['firstname']; } ?>">
<label name="lastname">Efternamn:</label>
<input type="text" name="lastname" value="<?php if(isset($_POST['lastname'])) { echo $_POST['lastname']; } ?>">
<label name="personnmbr">Personnummer:</label>
<input type="text" name="personnmbr">
<label name="address">Gatuadress:</label>
<input type="text" name="address">
<label name="zip">Postnummer:</label>
<input type="text" name="zip">
<label name="city">Postort:</label>
<input type="text" name="city">
<label name="phone">Telefonnummer:</label>
<input type="text" name="phone">
<label name="customernmbr">Kundnummer</label>
<input type="text" name="customernmbr">
</div>
我用PHP检查每个字段?这是一个很好的方法吗?
&GT;
答案 0 :(得分:0)
你可以使用jQuery ajax方法 - &gt;发布,当你获得成功时,没有任何反应,因此表格字段将不受影响。
e.g。
<script>
$(document).ready(function() {
$('#button').click(function() {
$.ajax({
type: "POST",
url: "example.php",
data: "data="data,
success: function(html){
if(html=='true') {
/* nothing */
}
else {
/* nothing */
}
}
});
});
});
</script>
答案 1 :(得分:0)
使用Sessions
session_start()
$_SESSION['YOUR_KEY'] = 'YOUR_VALUE' // Probably $_POST['some_field_name'];
然后像这样访问这些值:
echo $_SESSION['YOUR_KEY'];
答案 2 :(得分:0)
如果您可以使用JS执行此操作,则可以执行以下操作;
var previousData = <?php echo json_encode($_POST); ?>;
for (item in previousData) {
// Check if item is set by you and not is a js property
if (previousData.hasOwnProperty(item)) {
// Set the value to the input with same name
$('input[name='+item+']').val(previousData[item]);
}
}
请注意我在这个例子中使用jQuery。
http://jsbin.com/nadeb/7/edit?html,console,output
有了这个,你不需要在每个输入中添加代码,也不需要修改$ _POST或创建会话等等。所以你需要做更少的更改并且一直工作。如果输入的名称如此[是] [an] [field],则只会出现问题。在这种情况下,你可能需要做更详细的javascript,因为$ _POST将字段存储在一个数组中这个=&gt;是=&gt; an =&gt;字段。
我不确定这是不是最好的做法,但很容易做到并且很有效。
答案 3 :(得分:0)
您可以使用隐藏的输入字段并沿表单传递表单数据:
<?
foreach($_POST as $name=>$value){
?><input type="hidden" name="<?=$name?>" value="<?=$value?>"><?
}
?>
答案 4 :(得分:0)
将$ _POST字段插入HTML是不好的解决方案。
首先,您需要验证并过滤$ _POST值:preg_match,htmlspecialchars等。然后将清除的值复制到其他数组中(例如$ input_data)。
在HTML中,您可以使用:
<input name="lastname" value="<?=$input_data['lastname']?>" />
或
<input name="lastname" value="<?php echo $input_data['lastname']; ?>" />
答案 5 :(得分:0)
对于像这样的持久性数据,最好使用$_SESSION
。提交表单时,请将$_POST
值分配给$_SESSION
变量。
$_SESSION['firstname'] = $_POST['firstname'];
$_SESSION['lastname'] = $_POST['lastname'];
然后在你的HTML中
<input type="text" name="lastname" value="<?php if(isset($_SESSION['lastname'])) { echo $_SESSION['lastname']; } ?>">
然后在提交表单并成功通过验证后,您可以取消设置$_SESSION
变量
unset($_SESSION['firstname']);
unset($_SESSION['lastname']);
答案 6 :(得分:0)
如果将jsp与servlet一起用于请求和响应,则可以在html标记中执行类似的操作。
<div class="top_child">
<h3>Faktureringsuppgifter:</h3>
<form>
<label name="firstname">Förnamn:</label>
<input type="text" name="firstname" value=${firstname}>
<label name="lastname">Efternamn:</label>
<input type="text" name="lastname" value=${lastname}>
<label name="personnmbr">Personnummer:</label>
<input type="text" name="personnmbr" value=${personnmbr}>
<label name="address">Gatuadress:</label>
<input type="text" name="address" value=${address}>
<label name="zip">Postnummer:</label>
<input type="text" name="zip" value=${zip}>
<label name="city">Postort:</label>
<input type="text" name="city" value=${city}>
<label name="phone">Telefonnummer:</label>
<input type="text" name="phone" value=${phone}>
<label name="customernmbr">Kundnummer</label>
<input type="text" name="customernmbr" value=${customernmbr}>
<input type="submit" value="submit>
</form>
</div>
答案 7 :(得分:0)
如果未将py.test
设置为打印通知,则error_reporting
将为空,因此:
$_POST['some_data']
会做,否则您的解决方案会很好。