Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php sql更新后刷新页面_Php_Html - Fatal编程技术网

Php sql更新后刷新页面

Php sql更新后刷新页面,php,html,Php,Html,将信息提交到数据库后,我希望刷新页面以显示这些更改,就像处理表单一样。页面在提交后“重新加载”,但不反映更改,因此我假设在按下提交时需要添加刷新命令,但这似乎太快了 所以我增加了一个刷新时间,但即使把它提高到50,我也得到了同样的结果 如果我按两次按钮,它将刷新正确的信息。有更好的方法吗 <?php ini_set('display_errors',1); error_reporting(E_ALL); include_once '../includes/conn.php'; if(!

将信息提交到数据库后,我希望刷新页面以显示这些更改,就像处理表单一样。页面在提交后“重新加载”,但不反映更改,因此我假设在按下提交时需要添加刷新命令,但这似乎太快了

所以我增加了一个刷新时间,但即使把它提高到50,我也得到了同样的结果

如果我按两次按钮,它将刷新正确的信息。有更好的方法吗

<?php
ini_set('display_errors',1);
error_reporting(E_ALL);

include_once '../includes/conn.php';

if(!$user->is_loggedin()){
    $user->redirect('../users/login.php');
}

$id = $_SESSION['session'];
$stmt = $conn->prepare("SELECT * FROM users WHERE id=:id");
$stmt->execute(array(":id"=>$id));

$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
$location = isset($_POST['location']) ? $_POST['location'] : '';
$about = isset($_POST['about']) ? $_POST['about'] : '';
$title = isset($_POST['title']) ? $_POST['title'] : '';

if($title!=''){
    $sql = "UPDATE users SET title=:title WHERE id=:id";    
    $stmt = $conn->prepare($sql); 
    if($stmt == false){ 
        $error = "User Title update failed. Please try again.";
    } 

    $result = $stmt->execute(array(":title"=>$title, ":id"=>$id));

    if($result == false) { 
        $error = "User Title update failed. Please try again.";
    } 
    $count = $stmt->rowCount();
} 

if($location!=''){
    $sql = "UPDATE users SET location=:location WHERE id=:id";  
    $stmt = $conn->prepare($sql); 
    if($stmt == false){ 
        $error = "User Location update failed. Please try again.";
    } 

    $result = $stmt->execute(array(":location"=>$location, ":id"=>$id));

    if($result == false) { 
        $error = "User location update failed. Please try again.";
    } 
    $count = $stmt->rowCount();
} 

if($about!=''){
    $sql = "UPDATE users SET about=:about WHERE id=:id";    
    $stmt = $conn->prepare($sql); 
    if($stmt == false){ 
        $error = "about Me update failed. Please try again.";
    } 

    $result = $stmt->execute(array(":about"=>$about, ":id"=>$id));

    if($result == false) { 
        $error = "about Me location update failed. Please try again.";
    } 
    $count = $stmt->rowCount();
} 
?>
<!DOCTYPE html>
<html lang="en">    
<head>
    <title>EpicOwl UK | CMS Users Edit Profile</title>
    <meta charset="utf-8">
    <link rel="shortcut icon" href="../images/favicon.ico" type="image/x-icon" />
    <link rel="stylesheet" type="text/css" href="../css/main.css">
</head>
<body>
<div id="header">
    <a href="index.php"><img id="logo" src="../images/logo.png" /></a>
    <div id="navigation">
        <ul>
            <a href="../index.php"><li>Home</li></a>
            <a href="./profile.php"><li>My Profile</li></a>
            <a href="../admin/index.php"><li>Admin Panel</li></a>
        </ul>
    </div>
</div>
<div id="content">
<form method="post"><br />
    <h2>Edit Profile</h2>
    <label><strong>User Title:</strong></label><br />
    <input type="text" name="title" maxlength="50" placeholder="<?php echo ($userRow['title']); ?>" /><br /><br />
    <label><strong>My Location:</strong></label><br />
    <input type="text" name="location" maxlength="50" placeholder="<?php echo ($userRow['location']); ?>" /><br /><br />
    <label><strong>About Me:</strong><label><br />
    <textarea name="about" rows="13" cols="60" maxlength="255" placeholder="<?php echo ($userRow['about']); ?>"></textarea><br /><br />
    <button type="submit" name="update">Update</button><br /><br /><br />
    <?php
    if(isset($_POST['submit'])){
        header('refresh:20; Location: '.$_SERVER['REQUEST_URI']);
    }
    ?>
</form>
</div>
<div id="footer">
    <p class="copyright">&copy; EpicOwl UK. All Rights Reserved.</p>
</div>
</body>
</html>

EpicOwl UK | CMS用户编辑配置文件

编辑配置文件 用户标题:
只需使用JavaScript的-

window.location.reload().
在PHP中,您可以使用-

$page = $_SERVER['PHP_SELF'];
$sec = "10";
header("Refresh: $sec; url=$page");

如果您做得不对,您必须在显示HTML之前处理表单提交。PHP正在逐行执行,因此在您的示例中,您首先显示数据,然后检查表单是否已提交。只需将此代码上移到其余PHP代码所在的位置(您甚至可以删除refresh stuff命令):


编辑:

人们发明MVC是因为像你这样的例子,当你混合HTML和PHP的时候,他们想知道为什么事情不起作用。将PHP代码放在文件的顶部,尽量不要在HTML中的任何地方编写PHP代码,这样会为自己省去很多麻烦。另外,在调用
头后使用
exit
,进一步停止代码执行。这是您的代码的更新版本,简化了,更“算法化”(我希望您能看到并理解代码流程):


EpicOwl UK | CMS用户编辑配置文件

编辑配置文件 用户标题:

我通过添加
header('Location:./editprofile.php')获得了想要的结果。见下文:

if($title!=''){
    $sql = "UPDATE users SET title=:title WHERE id=:id";    
    $stmt = $conn->prepare($sql); 
    if($stmt == false){ 
        $error = "User Title update failed. Please try again.";
    } 

    $result = $stmt->execute(array(":title"=>$title, ":id"=>$id));

    if($result == false) { 
        $error = "User Title update failed. Please try again.";
    } 
    $count = $stmt->rowCount();
} 
之后:

if($title!=''){
    $sql = "UPDATE users SET title=:title WHERE id=:id";    
    $stmt = $conn->prepare($sql); 
    if($stmt == false){ 
        $error = "User Title update failed. Please try again.";
    } 

    $result = $stmt->execute(array(":title"=>$title, ":id"=>$id));

    if($result == false) { 
        $error = "User Title update failed. Please try again.";
    } 
    $count = $stmt->rowCount();
    header('Location: ./editprofile.php');  
} 

sql结果在何处/何时加载到页面?抱歉,我不完全理解您的意思?编辑问题以显示所有代码。这意味着当您重新加载页面时,获取信息的sql查询在“提交”按钮后不会加载,新结果不会显示在页面上。我编辑了我的问题,我相信无论头球在哪里,它都不会改变结果。此外,查询几乎位于页面顶部的所有内容之上。无论我将上述代码放在何处,我都会遇到同样的问题。为什么不将所有与更新相关的代码放在
if
中检查表单是否已提交?一旦表单被提交,它们就需要被更新……太好了,现在把你所有的三个查询合并成一个查询,这样你的代码将至少缩短3倍。它一定很长,而且你有很多重复的代码。我很感谢你的帮助,但我宁愿让刷新工作,然后清理。你的代码在这一点上看起来怎么样?标题放在哪里了?谢谢你的建议,但我正在寻找一种更好的方法,只在PHP中使用。@DanielMinett我刚刚编辑了我的答案。您尝试过这种方法吗?在标题中使用刷新不是一个很好的解决方案。更好的选择是使用内置函数,但这仍然是一个我不会推荐的解决方案。不需要花哨,只是为了工作,这一个没有帮助。插入页面顶部<代码>如果(isset($\u POST['submit']){$page=$\u SERVER['PHP\u SELF'];$sec=“10”标题(“刷新:$sec;url=$page”);}
if($title!=''){
    $sql = "UPDATE users SET title=:title WHERE id=:id";    
    $stmt = $conn->prepare($sql); 
    if($stmt == false){ 
        $error = "User Title update failed. Please try again.";
    } 

    $result = $stmt->execute(array(":title"=>$title, ":id"=>$id));

    if($result == false) { 
        $error = "User Title update failed. Please try again.";
    } 
    $count = $stmt->rowCount();
} 
if($title!=''){
    $sql = "UPDATE users SET title=:title WHERE id=:id";    
    $stmt = $conn->prepare($sql); 
    if($stmt == false){ 
        $error = "User Title update failed. Please try again.";
    } 

    $result = $stmt->execute(array(":title"=>$title, ":id"=>$id));

    if($result == false) { 
        $error = "User Title update failed. Please try again.";
    } 
    $count = $stmt->rowCount();
    header('Location: ./editprofile.php');  
}