【问题标题】:Database Query Takes One Reload After Form Submit To Update表单提交更新后数据库查询需要一次重新加载
【发布时间】:2015-04-16 12:13:20
【问题描述】:

我希望用户更新其个人资料信息后不要立即重新加载输入框。

这是一个例子:

User updates his age box:
User inputs 10
Displays 10
User inputs 20
Displays 10
Page Reload
Displays 20

我不知道为什么会这样。需要重新加载完整页面并刷新页面才能显示正确的信息:(

然而,一旦数据库中的信息被更新,我打印了信息——它是正确的。尽管感觉按钮会重新加载整个页面,但这不起作用。以下是设置的变量:


变量

function utf8_encode_string($value) {
    if (empty($_POST[$value])) {
        $str = "";
        return $str;
    }
    else {
        $str = utf8_encode(htmlspecialchars(trim($_POST[$value]), ENT_QUOTES));
        return $str;
    }
}

$urlquery = new user("username", $accounturl, $connection); 
$locationinput = utf8_encode_string($urlquery->user_information("location"));
if (!$locationinput) {
    $locationinput = utf8_encode(htmlspecialchars(trim($urlquery->user_information("location")), ENT_QUOTES));
}

表格

<form method="post">
    <input 
        type="text" 
        name="location" 
        id="locationinput" 
        value="<?php print utf8_decode($locationinput); ?>" 
     />
</form>

class user {

    public function __construct($row_name_1, $row_value_1, $connection) {
        $this->row_name_1 = $row_name_1;
        $this->row_value_1 = $row_value_1;
        $this->connection = $connection;
    }   

    public function user_update_information($updatecolumn, $updatecolumn_value) {
        $query = "UPDATE users SET $updatecolumn = :updatecolumn WHERE $this->row_name_1 = :row_value_1";
        $stmt = $this->connection->prepare($query);
        $stmt->execute(array(':updatecolumn' => $updatecolumn_value,
                             ':row_value_1' => $this->row_value_1));
    }

    public function user_information($information) {
        $query = "SELECT * FROM users WHERE $this->row_name_1 = :row_value_1";
        $params = array(':row_value_1' => $this->row_value_1);
        try{
            $stmt = $this->connection->prepare($query);
            $result = $stmt->execute($params);
        }
        catch(PDOException $ex){
            echo ("Failed to run query: " . $ex->getMessage());
        }
        $columns = $stmt->fetch();
        return $columns[$information];
    }
}

数据库更新

$location_for_database = "";
if (isset($locationinput)) 
{
    $location_for_database = $locationinput;
}
else 
{
    $location_for_database = "";
}

$updateinfo = new user("id", $_SESSION["logged_in"], $connection);
$updateinfo->user_update_information(
    "location", 
    ($location_for_database)
);

如果你想要我的完整代码,你可以在这里找到它:http://pastebin.com/Cg2LQd7T

如果您希望我更好地解释我的问题,请告诉我。我已经为此工作了一个多月,但我无法修复它! :(

【问题讨论】:

    标签: php html mysql class


    【解决方案1】:

    我知道这只是一个:

    解决方法

    但你可以使用

     header("Refresh:0");
    

    在您完成将值保存在数据库中后重新加载它。

    附: - 这是一种解决方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-21
      • 2020-02-06
      • 2017-05-06
      • 1970-01-01
      相关资源
      最近更新 更多