簡體   English   中英

每30秒獲取表格數據

[英]Get tables data every 30sec

我如何每30秒從數據庫行中獲取所有數據並僅顯示一個數據,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”的關鍵功能:

<?php

require_once 'dbconfig.php';

$row = $_GET['row']+0;

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

這與您的第一個腳本相同,除了現在可以告訴它要返回數據庫的哪一行。 可以像我在這里一樣使用$ _GET來獲取URL中傳遞的數據。 在這種情況下,如果我要請求URL“ fetch.php?row = 7”,則$ _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>

在這里,我們使用setInterval()告訴JavaScript每30秒調用一次函數getdata()。 它使用MicroAjax (我將其附加到第二組腳本標簽中的一種非常輕量級的Ajax解析)來請求數據。 一旦MicroAjax接收到數據,它將調用printdata(),將其添加到HTML的末尾。

如果您添加JQuery,它當然會使事情變得更好。 這些只是基礎知識,即使添加CSS后它們看起來會稍有不同,但它們仍然適用。 最后,這就是當今許多好的網站所要做的,而不是重新加載或將您轉到另一個頁面。 他們只是使用AJAX來獲取新內容。

根據您計划執行的其他操作,您可能希望切換AJAX庫。 我之所以使用MicroAjax,是因為它體積小,重量輕,我可以將其直接復制到腳本中(Google似乎已經刪除了他們以前使用過的頁面,所以我找不到CDN)。

希望這可以幫助。

您可以從數據庫中選擇隨機消息,並在每30秒使用Ajax 調用顯示它。我認為這篇文章對您有所幫助jQuery-每10秒調用ajax您可以將時間間隔設置為30秒,也可以將顯示的消息設置為任何狀態並選擇未顯示的消息。使用查詢:

$ sql =“ SELECT * FROM rds WHERE'status'= 0 ORDER BY news_id DESC LIMIT 1”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM