gpt4 book ai didi

php - 更新数据库时如何强制刷新包含的php

转载 作者:行者123 更新时间:2023-11-29 12:23:02 30 4
gpt4 key购买 nike

关闭。这个问题需要details or clarity .它目前不接受答案。












想改进这个问题?通过 editing this post 添加详细信息并澄清问题.

7年前关闭。




Improve this question




我有一个 php 页面,在页面中间有第二个 php 页面,如下所示:

<?php
main content page
<?php include 'db-info.php';?>
more content
?>

db-info.php 显示一个包含数据库信息的表格。当数据库更新时,我希望主页显示更新的结果。如果我将 db-info.php 页面作为独立页面,我可以使其刷新,但是当 db-info.php 包含在主要内容 php 页面中时,我不知道如何刷新它。

我不希望经常扫描对数据库的更改以触发刷新,因为数据库仅在单击按钮时才会更新。关于如何链接按钮单击或数据库更新以使 db-info.php 页面刷新的任何想法?

=====在下面编辑====

谢谢 Kaleb 和 Steven 我很感激你的建议。即使用户在显示数据库信息的同一页面上单击按钮,该按钮也会像文档写入语法一样创建(此编辑器不会让我放入实际的按钮代码)
按钮单击会在单独的 javascript 文件上触发一个函数。 Kaleb,我可以重写数据库信息在php主页面上显示的方式,但是php主页面不知道数据库已经更新,除非我不断检查数据库。问题是如何在单击按钮或更新数据库时触发主页上的刷新。我不知道如何捕捉该事件或做任何需要的事情。当单击按钮并更新数据库时,db-info.php 页面会更新。 db-info.php 页面已更新,但主要内容 php 页面仍继续显示最初加载主 php 页面时加载的相同(过时)db-info.php 页面。

=================更新=====================

我移动了按钮,使其位于主要内容 php 页面上。该按钮触发 javascript 更新数据库。现在,由于按钮位于具有
<?php include 'db-info.php';?>

我应该能够用 onclick 做两件事,运行 javascript 并以某种方式 onload 并重新加载 db-info.php 页面???可能是?

============更新======================
我将重新编写主要内容 php 页面以将数据库信息表直接构建到主页中。我仍然需要一种方法来将这些数据与整个主页内容分开刷新。

=============请将此问题标记为已回答============

对于我最初的问题缺乏明确性,我深表歉意。此外,起初不理解给出的答案,但现在我意识到他们正在为我指明正确的方向。再次感谢您的帮助。
我计划根据此处的示例重新编写主要内容页面以在 div 的 innerHTML 中显示数据库信息:
http://www.w3schools.com/php/php_ajax_database.asp

db 信息将显示在此 div 中
<div id="dbInfoHere">Database info will be listed here</div>

使用这个 ajax 从数据库中获取更新的信息
document.getElementById("dbInfoHere").innerHTML = xmlhttp.responseText;
xmlhttp.open("GET","save-rankings.php?q="+str,true);

在示例中,使用 select onchange 事件调用 javascript 我可以从按钮 onclick 事件调用 javascript

最佳答案

选项 #1

如果您想要一个简单的 ajax 更新,例如,当用户按下刷新按钮时,请尝试使用 jQuery 的 .get 或 .post 方法

http://api.jquery.com/jquery.get/

$.get( "ajax/test.html", function( data ) { $( ".result" ).html( data ); alert( "Load was performed." ); });



选项 #2

如果您正在寻找实时或“推送”更新,您将需要 websockets 和 mysql 触发器。您需要一个“守护程序”脚本来处理您的连接,并且您需要通知该脚本数据库发生了怎样的变化。

退房 http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html#c10251作为 mysql 触发器的起点

并查看 How to create websockets server in PHP作为守护程序服务的起点。

选项#3
“实时”的另一个选项取决于您需要容纳多少用户和您的服务器统计信息,是执行“拉”方法。在这种情况下,您使用 javascript 计时器每隔 X 秒执行选项 1 中提到的 ajax 请求。

这比构建推送服务或与现有服务集成要容易得多,但缺点显然是如果没有新数据,那么用户正在向服务器发出不必要的请求,而且从技术上讲,这不是“实时”,因为它仅在您设置计时器时更新

- - 更新 - -

您的刷新按钮需要在被刷新的元素之外。所以我会推荐这样的东西:
<div> 
<button onclick="updateData();">Refresh</button>
</div>
<div id="dataContainer">
<?php include "db-info.php"; ?>
</div>

<script>
function updateData(){
$.get( "db-info.php", function(data ) {
$( "#dataContainer" ).html( data );
});
};
</script>

此外,除非有原因,否则我会尽量避免执行额外的 ajax 回调 onload 来加载初始数据。通过使用 php include 进行初始页面加载,您可以为每个页面加载至少节省 1 个额外的请求。

关于php - 更新数据库时如何强制刷新包含的php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28755767/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com