【问题标题】:How To Show Form Values On Submission (After Reload)?如何在提交时显示表单值(重新加载后)?
【发布时间】:2014-07-31 02:55:27
【问题描述】:

我正在制作一个网络应用程序,目前正在开发用户可以输入其帐户详细信息的页面。

该代码目前允许用户为其帐户信息输入值并提交。当他们点击提交时,它会重新加载页面并将这些值保存到数据库中。但是,在确认表单重新提交后再次手动重新加载页面之前,它不会显示这些新值。

如何解决它,以便信息自动更新?

我的表格如下:

<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 看起来像:

        <?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"); 
}
?>

【问题讨论】:

  • @Darren 它指的是用户名,所以如果发布到数据库中的正确帐户。

标签: php html database forms


【解决方案1】:

我假设您的表单在文件account.php 中或包含在其中。由于表单发布到相同的 URL,我假设您引用的 PHP 也在 account.php 中或包含在其中。

如果是这种情况,您不需要发送 Location 标头,只需确保在成功更新用户信息(填充表单的 $user 数组)数据库。

根据要求进行一些澄清:

<?php
    // update db from $_POST
    // query db to populate $user array
?>
<form>
    <!-- inputs getting values from $user -->
</form>

【讨论】:

  • 谢谢!我摆脱了标题,但它仍然以同样的方式行事。 “确保在成功更新数据库后查询用户信息(填充表单的 $user 数组)”我如何确保这样做?你能给我举个例子吗?
  • 我已经编辑了答案以澄清一点。似乎您的代码的基本部分已被排除在外。尤其是定义数组 $user 的位置,以及与您的数据库更新相关的表单的位置。
【解决方案2】:

我假设您正在获取类似于以下内容的表单数据:

$user = getUserFromSomewhere($userID);
// $user is now an array with the user's data
//... handle post        
<!-- html comes now -->

如果您改为这样做:

//... handle post
$user = getUserFromSomewhere($userID);
// $user is now an array with the user's data
<!-- html comes now -->

您获取用户数据的请求将在更改写入后发生,因此它们可以正确显示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2012-09-21
    • 2020-12-27
    • 2018-07-26
    • 1970-01-01
    相关资源
    最近更新 更多