Php 如何在提交时显示表单值(重新加载后)?
我正在制作一个web应用程序,目前正在制作一个用户可以输入其帐户详细信息的页面 该代码当前允许用户为其帐户信息输入值并提交。当他们点击submit时,它会重新加载页面并将这些值保存到数据库中。但是,在确认表单重新提交后手动重新加载页面之前,它不会显示这些新值 我如何修复它,使信息自动更新 我的表单如下所示:Php 如何在提交时显示表单值(重新加载后)?,php,html,database,forms,Php,Html,Database,Forms,我正在制作一个web应用程序,目前正在制作一个用户可以输入其帐户详细信息的页面 该代码当前允许用户为其帐户信息输入值并提交。当他们点击submit时,它会重新加载页面并将这些值保存到数据库中。但是,在确认表单重新提交后手动重新加载页面之前,它不会显示这些新值 我如何修复它,使信息自动更新 我的表单如下所示: <form action="" method="POST"> <div class="row account-details"> <di
<form action="" method="POST">
<div class="row account-details">
<div class="col-md-6">
<div class="form-group">
<p>First Name</p>
<input type="text" name="firstname" class="form-control" style="border-radius:5px;border:1px solid #e9e9e9;" name="firstname" value="<?php echo $user['firstname'];?>">
</div>
<div class="form-group">
<p>Date of birth</p>
<input type="date" name="dob" class="form-control" style="border-radius:5px;border:1px solid #e9e9e9;" name="dob" value="<?php echo $user['dob'];?>">
</div>
<div class="form-group">
<p>Skype</p>
<input type="text" name="skype" class="form-control" style="border-radius:5px;border:1px solid #e9e9e9;" name="skype" value="<?php echo $user['skype'];?>">
</div>
<div class="form-group">
<p>Channel name</p>
<p class="channelname"><?php echo $user['username'];?></p>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<p>Last Name</p>
<input type="text" class="form-control" style="border-radius:5px;border:1px solid #e9e9e9;" name="lastname" value="<?php echo $user['lastname'];?>">
</div>
<div class="form-group">
<p>Country</p>
<select class="form-control" style="border-radius:5px;border:1px solid #e9e9e9;" name="country">
<?php foreach($countries as $c) {
?>
<option value="<?php echo $c;?>" <?php if($user['country'] === $c) echo 'selected';?>><?php echo $c;?></option>
<?php }
?>
</select>
</div>
<div class="form-group">
<p>Contact email</p>
<input type="email" class="form-control" style="border-radius:5px;border:1px solid #e9e9e9;" name="email" value="<?php echo $user['email'];?>">
</div>
<div class="form-group">
<p>Channel niche</p>
<select class="form-control" style="border-radius:5px;border:1px solid #e9e9e9;" name="niche">
<option>Gaming</option>
<option>-</option>
<option>-</option>
</select></div><input onSubmit="location.href='index.html'" style="border-radius:5px;margin-left:-90px;" type="submit" class="btn btn-primary btn-lg" value="Submit"></form>
<?php if(isset($_POST) && !empty($_POST)) {
foreach($_POST as $k => $p) {
$_POST[$k] = htmlspecialchars($p);
}
$db->where('id', $user['id']);
if($db->update('users', $_POST)) header("Location: account.php");
}
?>
名字
姓
我假设您的表单要么在文件account.php
中,要么包含在其中。由于表单发布到相同的URL,我假设您引用的PHP也在account.PHP
中或包含在其中
如果是这种情况,则不需要发送位置标头,只需确保在成功更新数据库后查询用户信息(填充表单的$user
数组)
应要求作出一些澄清:
<?php
// update db from $_POST
// query db to populate $user array
?>
<form>
<!-- inputs getting values from $user -->
</form>
我假设您获取的表单数据类似于:
$user = getUserFromSomewhere($userID);
// $user is now an array with the user's data
//... handle post
<!-- html comes now -->
$user=getuserfromwhere($userID);
//$user现在是包含用户数据的数组
//... 把手柱
如果您改为这样做:
//... handle post
$user = getUserFromSomewhere($userID);
// $user is now an array with the user's data
<!-- html comes now -->
/。。。把手柱
$user=getuserfromwhere($userID);
//$user现在是包含用户数据的数组
您请求获取用户数据的请求将在写入更改后发生,以便正确显示更改。@Darren它指的是用户的名称,因此如果将其发布到数据库中的正确帐户,则会发生。谢谢!我去掉了头球,但它的动作还是一样的。“确保在成功更新数据库后查询用户信息(填充表单的$user数组)”我如何确保这样做?你能给我举个例子吗?我已经编辑了答案来澄清一下。似乎您的代码的关键部分已被排除在问题之外。特别是在定义了数组$user
以及表单包含在数据库更新中的情况下。