Php 每30秒获取一次表数据 如何每隔30秒从数据库行获取所有数据并仅显示一个数据,30秒后显示下一行?

Php 每30秒获取一次表数据 如何每隔30秒从数据库行获取所有数据并仅显示一个数据,30秒后显示下一行?,php,mysql,pdo,Php,Mysql,Pdo,目前我的问题是: <?php require_once 'dbconfig.php'; $query = $db_con->query('SELECT * FROM rds ORDER BY news_id DESC'); $fetch = $query->fetch(); echo $fetch['message']; ?> 我需要显示来自数据库的一条消息,30秒后显示来自数据库的下一条消息您将要执行的

目前我的问题是:

    <?php
    
    require_once 'dbconfig.php';

    $query = $db_con->query('SELECT * FROM rds ORDER BY news_id DESC');
    $fetch = $query->fetch();
    echo $fetch['message']; 
    ?>


我需要显示来自数据库的一条消息,30秒后显示来自数据库的下一条消息

您将要执行的操作有两个不同的组件。一种是浏览器中数据的图形表示。这也是每隔30秒向服务器请求新数据的原因。第二部分是它的要求。如果您希望它每次都不一样,则此部分必须知道对它的要求

现在我们将把它们放在不同的文件中。web部件称为“web.php”,获取部件称为“fetch.php”。下面是“fetch.php”的关键功能:


这与第一个脚本相同,只是现在可以告诉它返回数据库的哪一行。在URL中传递的数据可以像我在这里做的那样使用$\u GET获取。在本例中,如果我请求URL“fetch.php?row=7”,那么$\u GET['row']的值将是7

“web.php”包含如下内容:

<div id='content'></div>

<script>
    i = 1;
    setInterval(getdata,30000);
    getdata(){
        microAjax("fetch.php?row="+i,printdata);
        i++;
        }
    printdata(a) {
        document.getElementById("content").innerHTML = document.getElementById("content").innerHTML + "<p>"+a+"</p>";
        }
</script>

<script>function microAjax(B,A){this.bindFunction=function(E,D){return function(){return E.apply(D,[D])}};this.stateChange=function(D){if(this.request.readyState==4){this.callbackFunction(this.request.responseText)}};this.getRequest=function(){if(window.ActiveXObject){return new ActiveXObject("Microsoft.XMLHTTP")}else{if(window.XMLHttpRequest){return new XMLHttpRequest({mozSystem: true})}}return false};this.postBody=(arguments[2]||"");this.callbackFunction=A;this.url=B;this.request=this.getRequest();if(this.request){var C=this.request;C.onreadystatechange=this.bindFunction(this.stateChange,this);if(this.postBody!==""){C.open("POST",B,true);C.setRequestHeader("X-Requested-With","XMLHttpRequest");C.setRequestHeader("Content-type","application/x-www-form-urlencoded");C.setRequestHeader("Connection","close")}else{C.open("GET",B,true)}C.send(this.postBody)}};</script>

i=1;
设置间隔(getdata,30000);
getdata(){
microjax(“fetch.php?row=“+i,printdata”);
i++;
}
打印数据(a){
document.getElementById(“内容”).innerHTML=document.getElementById(“内容”).innerHTML+“”+a+”

”; } 函数microjax(B,A){this.bindFunction=function(E,D){return function(){return E.apply(D[D])};this.stateChange=function(D){if(this.request.readyState==4){this.callbackFunction(this.request.responseText)};this.getRequest=function(){if(window.ActiveXObject){return new ActiveXObject(“Microsoft.XMLHTTP”)}否则{if(window.XMLHttpRequest){return new XMLHttpRequest({mozSystem:true}}}return false};this.postBody=(参数[2]| | |“”);this.callbackFunction=A;this.url=B;this.request=this.getRequest();if(this.request){var C=this.request;C.onreadystatechange=this.bindFunction(this.stateChange),this;if(this.postbodbody!==“”){C.open(“POST”,B,true);C.setRequestHeader”(“X-request-With”,“XMLHttpRequest”);C.setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);C.setRequestHeader(“连接”,“关闭”)}否则{C.open(“GET”,B,true)}C.send(this.postBody)};
在这里,我们使用setInterval()告诉JavaScript每30秒调用一次函数getdata()。它使用我附加到第二组脚本标记中的一个非常轻量级的Ajax解析来请求数据。一旦MicroAjax接收到数据,它调用printdata(),将其添加到HTML的末尾

如果你加入JQuery,它当然会让事情变得更好。这些只是基础,即使一旦你加入CSS,它们看起来会略有不同,但它们仍然适用。最后,这就是现在许多好网站所做的,而不是重新加载或将你传递到另一个页面;它们只是使用AJAX来获取新内容

根据您计划做的其他事情,您可能希望切换AJAX库。我使用MicroAjax是因为它体积小、重量轻,我可以将它直接复制到脚本中(Google似乎已经删除了他们以前在它上面的页面,所以我找不到CDN)


希望这能有所帮助。

您将要执行的操作有两个不同的组件。一个是浏览器中数据的图形表示。这也是每隔30秒向服务器请求新数据的内容。第二个部分是它从服务器请求的内容。如果您希望,此部分必须知道请求的内容每次都不一样

我们现在将它们放在单独的文件中。web部件将被称为“web.php”,获取部件将被称为“fetch.php”。以下是“fetch.php”的关键功能:


这与您的第一个脚本相同,只是现在可以告诉它返回数据库的哪一行。URL中传递的数据可以像我在这里做的那样使用$\u GET获取。在这种情况下,如果我请求URL“fetch.php?row=7”,那么$\u GET['row']的值将是7

“web.php”包含如下内容:

<div id='content'></div>

<script>
    i = 1;
    setInterval(getdata,30000);
    getdata(){
        microAjax("fetch.php?row="+i,printdata);
        i++;
        }
    printdata(a) {
        document.getElementById("content").innerHTML = document.getElementById("content").innerHTML + "<p>"+a+"</p>";
        }
</script>

<script>function microAjax(B,A){this.bindFunction=function(E,D){return function(){return E.apply(D,[D])}};this.stateChange=function(D){if(this.request.readyState==4){this.callbackFunction(this.request.responseText)}};this.getRequest=function(){if(window.ActiveXObject){return new ActiveXObject("Microsoft.XMLHTTP")}else{if(window.XMLHttpRequest){return new XMLHttpRequest({mozSystem: true})}}return false};this.postBody=(arguments[2]||"");this.callbackFunction=A;this.url=B;this.request=this.getRequest();if(this.request){var C=this.request;C.onreadystatechange=this.bindFunction(this.stateChange,this);if(this.postBody!==""){C.open("POST",B,true);C.setRequestHeader("X-Requested-With","XMLHttpRequest");C.setRequestHeader("Content-type","application/x-www-form-urlencoded");C.setRequestHeader("Connection","close")}else{C.open("GET",B,true)}C.send(this.postBody)}};</script>

i=1;
设置间隔(getdata,30000);
getdata(){
microjax(“fetch.php?row=“+i,printdata”);
i++;
}
打印数据(a){
document.getElementById(“内容”).innerHTML=document.getElementById(“内容”).innerHTML+“”+a+”

”; } 函数microjax(B,A){this.bindFunction=function(E,D){return function(){return E.apply(D[D])};this.stateChange=function(D){if(this.request.readyState==4){this.callbackFunction(this.request.responseText)};this.getRequest=function(){if(window.ActiveXObject){return new ActiveXObject(“Microsoft.XMLHTTP”)}否则{if(window.XMLHttpRequest){return new XMLHttpRequest({mozSystem:true}}}return false};this.postBody=(参数[2]| | |“”);this.callbackFunction=A;this.url=B;this.request=this.getRequest();if(this.request){var C=this.request;C.onreadystatechange=this.bindFunction(this.stateChange),this;if(this.postbodbody!==“”){C.open(“POST”,B,true);C.setRequestHeader”(“X-request-With“,”XMLHttpRequest”);C.setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);C.setRequestHeader(“连接”,“关闭”)}否则{C.open(“GET”,B,true)}C.send(this.postBody)};
在这里,我们使用setInterval()告诉JavaScript每30秒调用一次函数getdata()。它使用我附加到第二组脚本标记中的一个非常轻量级的Ajax解析来请求数据。一旦MicroAjax接收到数据,它调用printdata(),将其添加到HTML的末尾

如果你加入JQuery,它当然会让事情变得更好。这些只是基础,即使一旦你加入CSS,它们看起来会略有不同,但它们仍然适用。最后,这就是现在许多好网站所做的,而不是重新加载或将你传递到另一个页面;它们只是使用AJAX来获取新内容

根据您计划做的其他事情,您可能希望