MySQL更新记录,但页面显示不显示新数据

时间:2010-01-24 20:33:57

标签: php mysql

我正在为CRUD用户详细信息编写应用程序。我通过查询用户表启动页面 - 并使用数据填充页面中的各种表单元素(并检查重复项)。所有表单提交都提交到同一页面。

添加,删除和修改记录按预期工作 - 但是提示是,一旦提交更改,页面上显示的数据就不会相应更新 - 我必须重新访问该页面才能看到相关的变化。

try{
    $user_sql = "SELECT user_ID, user_firstname,user_surname,user_email,user_type FROM users";
    $user_stmt = $db->prepare($user_sql);
    $user_stmt->execute();
    $user_data = $user_stmt->fetchAll(PDO::FETCH_NAMED);
    $i++;
}catch(PDOException $e){
    echo "Error: cannot retrieve user data from the data base";
}

/*
 * DELETE USER
 */
if(isset($_POST['deleteUser'])){
$_SESSION['deleteUser']=true;
}
if(isset($_POST['submitDeleteUserConfirm'])){
//process query
    if($_POST['deleteUserConfirm']=='yes'){
        $deleteRange=implode(',',$_POST['deleteUser']);
        $deleteSql = 'DELETE FROM users WHERE ID_users IN (' . $deleteRange . ')';

        try{$q = $db->prepare($deleteSql);
        $q->execute();
         }
        catch(PDOException $e){
            echo '<p>System Error: '. $e->getMessage() .'</p>';
            }
        }
//once confirmation has been processed:
//remove session trigger to hide confirmation form
    if(isset($_SESSION['deleteUser'])){
        unset($_SESSION['deleteUser']);
    }
}
if(isset($_SESSION['deleteUser'])){
?>
    <fieldset class="radiobox">
        <legend>Confirm</legend>
        <div>
            <label for="deleteUserYes">Yes</label>
            <input type="radio" class="radio" name="deleteUserConfirm" id="deleteUserYes" value="yes">
        </div>
        <div>
            <label for="deleteUserNo">No</label>
            <input type="radio" class="radio" name="deleteUserConfirm" id="deleteUserNo" value="no" checked>
        </div>
    <input type="submit" name="submitDeleteUserConfirm" value="Confirm">
    </fieldset>
<?php
 }
//small function to output all the elements of an array as checkboxes
$delStudentRollOpts = array(
    'key'=>'users',
    'sticky'=>true,
    'data'=>array(
        'values'=>$user_data,# USES DATA FROM START OF SCRIPT - NOT UPDATING ON PAGE REFRESH/FORM SUBMISSION
        'name'=>array('user_firstname','user_surname')
    ),
    'element_name'=>'delStudRoll_'.$n,
    'types'=>array('checkbox'=>array('title'=>'&nbsp;',
                                 'name'=>'deleteUser',
                                 'index'=>'ID_users'
        ))
    );
echo $GA_form->generateRoll($delStudentRollOpts);
echo '<input type="submit" class="submit" name="submitDeleteUser_'.$n.'" value="Delete">';
echo '</fieldset>';
echo '</form>';

这是一项正在进行中的工作,因此需要进行大量的重构......

从用户的角度来看:

1:输入新数据

2:提交表格

3:从MySQL控制台检查数据库 - 插入新数据

4:没有显示新数据

5:再次访问页面 - 出现新数据(刷新会在尝试重新提交重复值时触发错误)

任何人都有任何想法发生了什么?目前我正在想着用标题重定向回页面......

3 个答案:

答案 0 :(得分:2)

if(form_submitted) {
    update_database()
}

fetch_data();

<form></form>

答案 1 :(得分:1)

您需要查看一系列步骤。 获取用户后可能会发生更新。

答案 2 :(得分:1)

要么有一些浏览器缓存问题,要么在插入/更新之前获取。

尝试直接查看数据库以查看是否正在插入用户以解除浏览器缓存。如果不是这样,则必须是提取订单问题:)

如果这些都不起作用,请尝试将sleep(1)置于insert和fetch之间以防万一:)