2017-03-08 50 views
0

我已經建立了一個數據庫和一個小網站。在網站上,我應該能夠看到數據庫中的所有數據並顯示新條目。爲此我包含了「setInterval();」。 setinterval每秒鐘啓動一個應該讀取數據庫的函數。我沒有收到任何錯誤,並且第一次函數實際讀取整個數據庫,但是它每秒都會寫入相同的內容,而沒有任何來自數據庫的新輸入。我怎樣才能讓每次我的函數被調用時,它也包含數據庫中的所有內容,包括所有neww條目。每秒鐘更新網站新的sql查詢

var t= ""; 
setInterval(checkDb, 1000); 
function checkDb(){ 
    <?php 
     session_start(); 
      $servername = "localhost"; 
      $username = "user"; 
      $password = "password"; 
      $dbname = "RFID"; 
      // Create connection 
      $conn = new mysqli($servername, $username, $password, $dbname); 
       // Check connection 
       if ($conn->connect_error) { 
        die("Connection failed: " . $conn->connect_error); 
       } 
       $sql = 'SELECT `id`, `rfid`, `dateandtime` FROM`scans`'; 
        $result = $conn->query($sql); 

        if ($result->num_rows > 0) { 

        // output data of each row 
        while($row = $result->fetch_assoc()) { 
         $answer= "id: " . $row["id"]. " - RFID: " . $row["rfid"]. " - Date:" . $row["dateandtime"]. "<br>"; 
        ?> 

        t= <?php echo json_encode($answer);?> + t ; 
        document.getElementById("myP").innerHTML = t; 
        <?php 
        } 
        } else { 
         echo "<br>" ."\n0 results\n"; 
        } 
        $conn->close(); 
      session_destroy();?> 
      t=""; 
     }; 
+1

請看看這裏,它會解釋很多:http://stackoverflow.com/questions/13840429/what-is-the-difference-between-client-side-and-server-side-pro編輯 – Nanne

+1

你應該使用'AJAX'來達到這個目的 – codtex

回答

0

你可以只加載使用jQuery負荷PHP腳本當你第一次打開網頁,然後在X秒加載使用setInterval

<script type="text/javascript"> 
     $('document').ready(function(){ 
      $('#myP').load('php-script.php');//load the script immediately 
      setInterval(function(){setUpdates()}, 10000); 

     }); 

     function setUpdates(){ 

      $('#myP').load('php-script.php'); 
     } 

    </script> 

PHP-script.php的

<?php 
session_start(); 
$servername = "localhost"; 
$username = "user"; 
$password = "password"; 
$dbname  = "RFID"; 
// Create connection 
$conn  = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
$sql = 'SELECT `id`, `rfid`, `dateandtime` FROM`scans`'; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 

    // output data of each row 
    while ($row = $result->fetch_assoc()) { 
     $answer = "id: " . $row["id"] . " - RFID: " . $row["rfid"] . " - Date:" . $row["dateandtime"] . "<br>"; 
    } 
} else { 
    echo "<br>" . "\n0 results\n"; 
} 
$conn->close(); 
session_destroy(); // I dont think u need this 
?> 
腳本
+0

Thx,這看起來好多了。同時確實在嘗試這種方式。它似乎還沒有工作。嘗試了你的代碼,它不會給出任何錯誤,但它也不會在段落中添加任何內容。試圖給它雙引號,並改變了PHP頁面的名稱。 – ThaSam

+0

你有Jquey加載?你的控制檯說什麼和錯誤日誌? –

+0

它現在有效,只需在php代碼中回顯$ answer: while($ row = $ result-> fetch_assoc()){ $ answer =「id:」。 $ row [「id」]。 「 - RFID:」。 $ row [「rfid」]。 「 - 日期:」。 $ row [「dateandtime」]。 「
」; \t \t echo $ answer; } – ThaSam