我有2个表单,第一个获取数据库表中人员的ID。第二个获取名称和/或地址以更新该ID。刷新页面时,我将失去ID的值。下面是我如何声明并向id发布值。如何在提交下一个表单并刷新页面时阻止重写? (session_start()位于文档的顶部)
$_SESSION['ID'] = $_POST['id'];
$id = $_SESSION['ID'];
表格1:
<form method="post">
<p style="margin-top: 70px;">Please type the ID of the person you wish to add to change their data</p>
<p style="margin-bottom: 0px;">ID</p>
<input style="color:black" type="text" name="id" placeholder="10001">
<input style="color:lightblue;background-color: rgb(80,80,80);margin-top: 7px;" type="submit" value="Submit">
</form>
表格2:
<form method="post">
<p>New Information for Customer with ID entered above</p>
<input style='color:black;' type="text" name="newName" placeholder="New Name">
<input style="color:black;" type="text" name="newAddress" placeholder="New Address">
<input style="color:lightblue;background-color: rgb(80,80,80);margin-top: 7px;" type="submit" value="Submit">
</form>
答案 0 :(得分:2)
由于两个表单都缺少action
的{{1}}属性,我认为两者都在同一页面上。这导致了问题,即您一次只能提交一个表单。
在您提交第二个表单时,form
数据将设置为该表单中可用的字段,因此$_POST
将被删除。由于您似乎总是调用$_POST['id']
,因此您将使用$_SESSION['ID'] = $_POST['id'];
重写它,因此会删除该条目。您可以改为检查NULL
是否真的已提交:
id
像这样你的会话将保留id。
或者,因为您的第二个表单中没有任何字段,需要从指定用户加载数据,您还可以将输入字段合并到第一个表单。像这样,if (array_key_exists('id', $_POST)) {
$_SESSION['ID'] = $_POST['id'];
}
$id = $_SESSION['ID'];
将始终再次提交并保留,因为它是提交的id
的一部分。
form
另外,您应该将给定的值提交给用户,因此表单会保留字段:
<form method="post">
<p style="margin-top: 70px;">Please type the ID of the person you wish to add to change their data</p>
<p style="margin-bottom: 0px;">ID</p>
<input style="color:black" type="text" name="id" placeholder="10001">
<p>New Information for Customer with ID entered above</p>
<input style='color:black;' type="text" name="newName" placeholder="New Name">
<input style="color:black;" type="text" name="newAddress" placeholder="New Address">
<input style="color:lightblue;background-color: rgb(80,80,80);margin-top: 7px;" type="submit" value="Submit">
</form>