2017-06-03 112 views
0

我有項目需要刷新dataTable每1分鐘,我已經編碼的PHP和setInterval。該表很好地顯示,但setInterval外觀刷新不起作用。我不知道這是什麼問題。如何使用setInterval刷新數據表?

這是我tableSpa.php

<?php 
class x{ 
    function koneksi(){ 
     $serverName = "DESKTOP-49HH41E\SA"; 
     $conn = new PDO("sqlsrv:server=$serverName; Database=tebu", "sa", "sa12345"); 

     return $conn; 
    } 

    function get_hari(){ 
     date_default_timezone_set('Asia/Jakarta'); 
     return date("j F Y G:i:s"); 
    } 

    function KueriSql(){ 
     $query = "SELECT  TOP (100) PERCENT a.KD_KT, a.DESA, a.NM_KUD, a.AFDL, a.kd_wil, a.kd_rayon, a.Rayon, a.KETUA, ISNULL(MAX(b.libur), 0) AS Libur, ISNULL(MAX(b.aktif), 0) AS Aktif, 
          (SELECT  ISNULL(SUM(tambahan), 0) AS Tambahan 
          FROM   dbo.tblAlokasiSPTAA AS c 
          WHERE  (kd_kt = a.KD_KT) AND (tambahan <> 0) AND (tgl = '2017-05-28')) AS Tambahan, COUNT(d.spa) AS TotalCetak, 
          (SELECT  ISNULL(COUNT(spa), 0) AS Pemasukan 
          FROM   dbo.vSPATrimaGawang AS e 
          WHERE  (LEFT(Kdptn, 5) = a.KD_KT) AND (tglberlaku = '2017-05-28 23:59:59')) AS Pemasukan, 
          (SELECT  ISNULL(COUNT(spa), 0) AS SPTAMati 
          FROM   dbo.vSPTAMati AS f 
          WHERE  (LEFT(Kdptn, 5) = a.KD_KT) AND (tglberlaku = '2017-05-28 23:59:59')) AS SPTAMati 
         FROM   dbo.vM_KEL AS a LEFT OUTER JOIN 
               dbo.TblJatahSPTA AS b ON a.KD_KT = b.kd_kt LEFT OUTER JOIN 
               dbo.tblSPA AS d ON a.KD_KT = LEFT(d.Kdptn, 5) AND d.tglberlaku = '2017-05-28 23:59:59' 
        GROUP BY a.KD_KT, a.DESA, a.NM_KUD, a.AFDL, a.kd_wil, a.kd_rayon, a.Rayon, a.KETUA 
        ORDER BY a.KD_KT"; 

     $stmt = $this->koneksi()->prepare($query); 
     $stmt->execute(); 

     $hasil = $stmt->fetchAll(); 
     return $hasil; 
    } 

    public $arr = array(); 
    public $arrX=0; 

    function tampil_kueri(){ 


     foreach ($this->KueriSql() as $row) { 

      $this->arr[$this->arrX][0] = $this->arrX; 
      $this->arr[$this->arrX][1] = $row['KD_KT']; 
      $this->arr[$this->arrX][2] = $row['KETUA']; 
      $this->arr[$this->arrX][3] = $row['AFDL']; 
      $this->arr[$this->arrX][4] = $row['Tambahan']; 
      $this->arr[$this->arrX][5] = $row['TotalCetak']; 
      $this->arr[$this->arrX][6] = $row['Pemasukan']; 
      $this->arr[$this->arrX][7] = $row['SPTAMati']; 


      $this->arrX++; 
     } 
    } 


    function tampil_data(){ 
     for ($baris=0; $baris < $this->arrX; $baris++) { 
          echo "<tr>"; 

         for ($kolom=0; $kolom < 8; $kolom++) { 
          echo "<td>".$this->arr[$baris][$kolom]."</td>"; 
         } 
         echo "</tr>"; 
        } 
    } 
} 

$obj = new x(); 

if($obj->koneksi()){ 
    echo "Koneksi Datbase SQL SERVER Berhasil"; 
    $obj->tampil_kueri(); 

} 

?> 

<!DOCTYPE html> 
<html> 
<head> 



<script type="text/javascript" src="assets/DataTables/media/js/jquery.js"></script> 
    <script type="text/javascript" src="assets/DataTables/media/js/jquery.dataTables.js"></script> 
    <link rel="stylesheet" type="text/css" href="assets/css/bootstrap.css"> 
    <link rel="stylesheet" type="text/css" href="assets/DataTables/media/css/jquery.dataTables.css"> 
    <link rel="stylesheet" type="text/css" href="assets/DataTables/media/css/dataTables.bootstrap.css"> 
</head> 
<body> 
    <center> 


<h1>Tabel SPTA<br><?php echo $obj->get_hari();?></h1> 
</center> 
<br/> 
<br/> 
<div class="container-fluid"> 
    <div class="table-responsive"> 
    <table border = '0' class="table table-striped table-bordered data" id="tabelSpta"> 
     <thead> 
      <tr> 
       <th>No.</th>    
       <th>Kode_KT</th> 
       <th>Nama_KT</th> 
       <th>Afdeling</th> 
       <th>Tambahan</th> 
       <th>Total Cetak</th> 
       <th>Pemasukan</th> 
       <th>SPTA Mati</th> 

      </tr> 
     </thead> 
     <tbody> 

      <?php echo $obj->tampil_data();   ?> 


     </tbody> 
    </table> 
</div> 
</div> 
</body> 
<script type="text/javascript"> 


$(document).ready(function(){ 
     var tabel = $('.data').DataTable(); 
    }); 

    setInterval(function() { 
     tabel.ajax.reload(); 
    }, 60000); 
</script> 
</html> 
+0

您還沒有配置插件使用AJAX。請參閱文檔中有關如何執行此操作的示例 – charlietfl

回答

0

使用fnReloadAjax(),而不是ajax.reload()。 您需要將jquery插件//cdn.datatables.net/plug-ins/1.10.15/api/fnReloadAjax.js添加到<head>標籤後的腳本jquery.dataTables.js後。

變化

setInterval(function() { 
     tabel.ajax.reload(); 
}, 60000); 

setInterval(function() { 
     tabel.fnReloadAjax(); 
}, 60000);