代码返回的是最后一次刷新之前的最新值,而不是最新插入的值?
代码返回的是最后一次刷新之前的最新值,而不是最新插入的值?
我在表格中有一列按钮,声明如下:
(文件index.php)
echo '';
然后这个脚本读取被点击按钮所在行的数据,并将其发送到另一个php文件:
这个文件(show_lecturer.php)将读取的数据存储在数据库的一个表(keep_track)中:
(文件show_lecturer.php)
然后我使用jquery创建一个空的对话框,将它用从数据库中取出的数据填充:
(文件index.php)
然后从keep_track表中取出这些数据并在上述对话框中回显:
(文件index.php)
$name; $surname; require_once('connect_db.php'); $firstname = pg_query(connect(), "SELECT name FROM keep_track"); while($row = pg_fetch_array($firstname)){ $name = $row['path']." ".$row['name']; } $lastname = pg_query(connect(), "SELECT surname FROM keep_track"); while($row = pg_fetch_array($lastname)){ $surname = $row['path']." ".$row['name']; } echo ''; echo $name."".$surname; echo ''; ?>
因此,当我点击第x行的按钮时,对话框会打开并显示第x行的数据。
唯一不正确的是:
当我点击按钮x时,它会打开一个对话框,但显示的是一个值,而不是x行的值。然而,当我查看数据库时,x行的值已存储在那里。复选框中的值是在页面最新刷新之前点击的按钮的值。就像我的调用链中有一些错误一样(我无法弄清楚,这就是为什么我在问的原因)。
为了说明我得到的数据:
(最初keep_track表是空的)
按下按钮1 -> 存储第1行,对话框没有内容 按下按钮2 -> 存储第2行,对话框没有内容 按下按钮3 -> 存储第3行,对话框没有内容 手动刷新页面 按下按钮4 -> 存储第4行,对话框显示第3行的内容 按下按钮5 -> 存储第5行,对话框显示第3行的内容 手动刷新页面 按下按钮6 -> 存储第6行,对话框显示第6行的内容 按下按钮7 -> 存储第7行,对话框显示第3行的内容
问题的出现原因:
在之前的代码中,页面加载时div元素被创建并填充了内容,而并没有点击按钮进行请求。因此,当点击按钮时,显示的是上次页面加载时(上次刷新)的div内容。
解决方法:
改变代码,使用$("#div").load("content.php", {x:parameter_1, y:parameter_2, ......});
来请求内容。当按钮被点击时,请求content.php页面进行加载,同时传递搜索参数,这样就能获取到所需的数据。这样的修改使得div元素在页面初始加载时是不可见和空的,只有当按钮被点击时才会加载内容。
此外,还需要进行其他一些次要的修改来使得代码正常工作,但这是解决问题的主要思路。