我正在写一个应用程序到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'=>' ',
'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:访问页面再次 - 新的数据显示(清爽将触发试图重新提交重复值的误差)
任何人有任何想法是怎么回事?目前,我正在将重定向回页面头部的想法...
显示整个代码取所以人们将能够理解正在发生的事情。从你的话来说,这很难理解。 – nightcoder 2010-01-24 20:45:41
就是这样 - 所有提交过程都发生在表单本身内部。 – sunwukung 2010-01-25 09:25:01
Doh!我现在看到它了......我曾假设因为页面被刷新了,它会从主机发回数据 - 但显然这部分页面不会在主机上执行,直到更新之后... 我现在感觉像一个扳手! – sunwukung 2010-01-25 12:50:22