2017-03-08 49 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