我有一个php页面,在页面中间还有第二个php页面,类似于下面的内容:
<?php
main content page
<?php include 'db-info.php';?>
more content
?>
db-info.php显示一个包含数据库信息的表。更新数据库时,我希望主页面显示更新的结果。如果我将db-info.php页面作为独立页面我可以刷新,但我不知道如何在主内容php页面中包含db-info.php刷新。
我宁愿不经常扫描数据库的更改以触发刷新,因为数据库仅在单击按钮时更新。有关如何链接按钮单击或数据库更新以使db-info.php页面刷新的任何想法?
=====编辑以下====
谢谢Kaleb和Steven我很感激你的建议。即使用户单击显示数据库信息的同一页面上的按钮,也会创建与文档写入语法类似的按钮(此编辑器不允许我将实际按钮代码放入) 按钮单击会在单独的javascript文件上触发一个函数。 Kaleb,我可以重新编写数据库信息显示在主php页面上的方式,但主php页面不知道数据库已经更新,除非我经常检查数据库。问题是如何在单击按钮或更新数据库时触发主页面上的刷新。我不知道如何捕获该事件或无论做什么都需要。单击按钮并更新数据库时,db-info.php页面将更新。 db-info.php页面已更新,但主内容php页面仍然显示相同(过时)的db-info.php页面,该页面在最初加载主php页面时加载。
================= update =====================
我移动了按钮,使其位于主要内容php页面上。该按钮触发javascript以更新数据库。现在,由于该按钮位于具有
的同一页面上<?php include 'db-info.php';?>
我应该可以用onclick做两件事,运行javascript并以某种方式onload并重新加载db-info.php页面???可能?
============ update ===================== 我将重新编写主要内容php页面,将数据库信息表构建到主页面。我仍然需要一种方法来从整个主页内容中单独刷新数据。
=============请将此问题标记为已回答===========
我为我原来的问题缺乏明确性而道歉。此外,起初并不理解所给出的答案,但现在我意识到他们指的是我正确的方向。再次感谢您的帮助。 我计划重新编写主要内容页面,按照以下示例在div的innerHTML中显示数据库信息:
http://www.w3schools.com/php/php_ajax_database.asp
db info将显示在此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
答案 0 :(得分:1)
选项#1
如果你想要一个简单的ajax更新,比如说当用户按下刷新按钮时尝试使用jQuery的.get或.post方法
http://api.jquery.com/jquery.get/
$。get(&#34; ajax / test.html&#34;,function(data){ $(&#34; .result&#34;)。html(数据); 警报(&#34;已执行加载。&#34;); });
选项#2
如果您正在寻找实时或&#34;推送&#34;更新,你需要websockets和mysql触发器。你需要一个&#34;守护进程&#34;用于处理连接的脚本,您需要通知该脚本一些数据库的更改方式。
查看http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html#c10251以获取mysql触发器的起点
并查看How to create websockets server in PHP以获取守护程序服务的起点。
选项#3 &#34;实时&#34;的另一种选择取决于您需要容纳多少用户,您的服务器统计信息是&#34; Pull&#34;方法。在这种情况下,您使用javascript计时器每X秒秒执行选项1中提到的ajax请求。
这比构建推送服务或与现有服务集成要容易得多,但显然如果没有新数据则退回,那么用户正在向服务器发出不必要的请求,从技术上讲,这不是&#34 ;实时&#34;因为它只会像您设置计时器一样快速更新
---更新---
您的刷新按钮需要位于要刷新的元素之外。所以我会推荐这样的东西:
<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个额外请求。
答案 1 :(得分:0)
首先,不要嵌套php标签。这会导致页面失败 其次,使用AJAX是你如何在没有页面刷新的情况下做到这一点。您只需使用AJAX从页面获取数据然后再显示它。
PHP页面:
<?php
$data = array(
"message": "This is JSON data"
);
echo @json_encode($data);
JavaScript的:
$(function()
{
var jdata = { "task": "do_something" };
$.get('db-info.php', {data: jdata}, function(data)
{
// PHP script returns JSON data.
// message is an object that's returned
// and added to the data object.
alert(data.message);
});
});