2013-04-27 112 views
0

我有一個PHP腳本,它需要一個Instance-ID(int)的數組,併爲每個數據執行一個SQL查詢,將結果寫入表中。在PHP上繼續執行SQL查詢

我想每隔X秒(或每個新數據)刷新數據庫中的數據,但我找不到這樣做的方法。

function checkStatus() 
{ 
    global $instances_ID; 
    // Create connection 
    $con=mysqli_connect("*******","*****","*****","****"); 

    // Check connection 
    if (mysqli_connect_errno($con)) 
    { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    //Clear page 
    echo "<script type='text/javascript'>\n"; 
    echo "document.body.innerHTML = ''"; 
    echo "</script>"; 

    echo "<h3><center>Last Backups:</center></h3><br><br>"; 

    //Build table 
    echo "<table border='1'align='center'> 
    <tr> 
    <th>Instance ID</th> 
    <th>Backup ID</th> 
    <th>STATUS</th> 
    <th>Start Time</th> 
    <th>End Time</th> 
    <th>Progress</th> 
    <th>Servlet</th> 
    </tr>"; 
    foreach ($instances_ID as $id) 
    { 
     $result = mysqli_query($con,"SELECT * FROM `instance_backups` WHERE INSTANCE_ID='".$id."' ORDER BY `instance_backups`.`START_TIMESTAMP` DESC LIMIT 1"); 
     $row = mysqli_fetch_array($result); 
    echo "<tr>"; 
    echo "<td align='center'>" . $row['INSTANCE_ID'] . "</td>"; 
    echo "<td align='center'>" . $row['INSTANCE_BACKUP_ID'] . "</td>"; 
    echo "<td align='center'>" . $row['STATUS'] . "</td>"; 
    echo "<td align='center'>" . $row['START_TIMESTAMP'] . "</td>"; 
    echo "<td align='center'>" . $row['END_TIMESTAMP'] . "</td>"; 
    echo "<td align='center'>" . $row['PROGRESS_PERCENTAGE'] . "</td>"; 
    echo "<td><input type=button onClick=location.href='******' value='Immidiate Backup'>"; 
    echo "</tr>";  
    } 

    echo "</table>"; 
    //Close the connection 
    mysqli_close($con); 
} 
+1

_setInterval_ now google this term。 – itachi 2013-04-27 07:47:49

+1

您必須將'AJAX'與'setInterval()'一起使用,這樣每個時間間隔ajax請求才會獲取新數據。 – 2013-04-27 08:01:44

回答

0

首先,您需要一個JavaScript庫。我強烈建議jQuery。下載最新版本,並將其上傳到您的服務器,最好將它上傳到單獨的文件夾,如'jscripts'或其他。

現在研究setInterval()。使用小而快的功能來顯示它的用處。 setInterval(函數名稱,x) - 每x毫秒調用一次函數。如果你這樣做:

function addText(){ 
    document.getElementById('testDiv').innerHTML = " HELLO "; 
} 
setInterval(addText, 1000); 

你會看到,如果您有相關的ID =「testDiv」是每1秒會增加「HELLO」到div一個div,無休止地填充它。

現在,你研究「jquery ajax」。這更涉及到,因爲這個問題涉及很多步驟,所以我不會在這裏詳細討論,但是,AJAX基本上可以與另一個腳本建立後臺連接,並且可以從中獲取輸出,而無需刷新頁面。一旦你連接三個,你會笑...

+0

只是想補充一點,你不需要JavaScript庫,但它可以使過程更容易一些。 [XMLHttpRequest](http://en.wikipedia.org/wiki/XMLHttpRequest)是庫用於執行AJAX請求的對象。 – Turnerj 2013-04-27 08:42:00

+0

你是對的,但除非你做了一些瘋狂的JavaScript,需要更短的加載時間,可能只支持一個瀏覽器,你確實需要它,否則頭痛比需要的大得多。儘管如此,你的評論是準確的。 – 2013-04-27 08:59:50