2010-01-24 132 views
3

我正在写一个应用程序到CRUD用户的详细信息。我通过对用户表的查询启动页面 - 并使用数据填充页面中的各种表单元素(并检查重复项)。所有表单提交提交到同一页面。MySQL更新记录,但页面显示不显示新数据

添加,删除和修改记录按预期工作 - 但踢球是显示在页面上一次数据的变化提交不相应地更新 - 我要访问该网页才能看到相关变更。

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:访问页面再次 - 新的数据显示(清爽将触发试图重新提交重复值的误差)

任何人有任何想法是怎么回事?目前,我正在将重定向回页面头部的想法...

+1

显示整个代码取所以人们将能够理解正在发生的事情。从你的话来说,这很难理解。 – nightcoder 2010-01-24 20:45:41

+0

就是这样 - 所有提交过程都发生在表单本身内部。 – sunwukung 2010-01-25 09:25:01

+0

Doh!我现在看到它了......我曾假设因为页面被刷新了,它会从主机发回数据 - 但显然这部分页面不会在主机上执行,直到更新之后... 我现在感觉像一个扳手! – sunwukung 2010-01-25 12:50:22

回答

2
if(form_submitted) { 
    update_database() 
} 

fetch_data(); 

<form></form> 
+0

表单依赖于在页面开始时设置的数据来填充选项(即,要删除的用户) – sunwukung 2010-01-25 09:37:19

+0

在表单显示之前设置数据,这就是您需要的。 – robertbasic 2010-01-25 10:41:49

1

您需要查看您的步骤顺序。 提取用户后可能会发生更新。

1

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

尝试直接在数据库中查看是否正在插入用户以关闭浏览器缓存。如果它不是,它必须是取顺序问题:)

如果没有这些作品的任何,可以尝试在睡觉(1)插入之间,以防万一:)

+0

我会给你一个旋转 – sunwukung 2010-01-25 09:38:25

相关问题