2015-08-26 9 views
5

ZingChart kullanıyorum. Sayfanın yüklenmesinde grafik, verileri MySql veritabanından başarıyla yükler. Ancak veritabanının güncellendiği bazı aralıklardan sonra en son veri nasıl yüklenir? Lütfen bana yardım edin . Bunu yapmak için index.php sayfamda aşağıdaki kodu denedim ama çalışmaz.ZingChart Bazı aralıklardan sonra en son veri nasıl yüklenir ve grafik güncelleştirilir

<script> 
 
    
 
    var myData=[ 
 
\t <?php 
 

 

 
$conn =mysql_connect("localhost","root","") or die ("we couldn't connect!"); 
 
mysql_select_db("webauth"); 
 
$rs = mysql_query("SELECT * FROM test") or die(mysql_error()); 
 
while($row = mysql_fetch_array($rs)) 
 
{ 
 
     echo $row['label'].','; 
 
}?>]; 
 
    
 
    var myLabels=[<?php 
 

 

 
$conn =mysql_connect("localhost","root","") or die ("we couldn't connect!"); 
 
mysql_select_db("webauth"); 
 
$rs = mysql_query("SELECT * FROM test") or die(mysql_error()); 
 
while($row2 = mysql_fetch_array($rs)) 
 
{ 
 
     echo '"'.$row2['value'].'"'.','; 
 
}?>]; 
 

 

 

 
window.onload=function(){ 
 
\t 
 

 
\t 
 
\t window.alert(myData); 
 
\t zingchart.render({ 
 
\t id:'chartDiv', 
 
    
 
    data:{ 
 
     "type":"bar", 
 
\t \t 
 
     "scale-x":{ 
 
      "values":myLabels, 
 
     }, 
 
     "series":[ 
 
      { 
 
       "values":myData 
 
      } 
 
    ] 
 
\t , 
 
\t "refresh":{ 
 
    "type":"feed", 
 
    "transport":"http", 
 
    "url":"feed.php?", 
 
    "interval":200 
 
\t \t }, 
 
    } 
 
    }); 
 

 
} 
 
</script>
ve zingchart.render() yönteminde feed.php sayfa

<script> 
 
    
 
    
 

 

 
    var myData=[ 
 
\t <?php 
 
?> 
 
     
 
[ 
 
    { 
 
     
 
$conn =mysql_connect("localhost","root","") or die ("we couldn't connect!"); 
 
mysql_select_db("webauth"); 
 
$rs = mysql_query("SELECT * FROM test") or die(mysql_error()); 
 
while($row = mysql_fetch_array($rs)) 
 
{ 
 
     "plot<?php echo $row['label'].','; 
 
}?>"]; 
 
    
 
     } 
 
] 
 

 
    
 
    var myLabels=[<?php 
 
?> 
 
     
 
     [ 
 
    { 
 

 
$conn =mysql_connect("localhost","root","") or die ("we couldn't connect!"); 
 
mysql_select_db("webauth"); 
 
$rs = mysql_query("SELECT * FROM test") or die(mysql_error()); 
 
while($row2 = mysql_fetch_array($rs)) 
 
{ 
 
     "plot<?php echo '"'.$row2['value'].'"'.','; 
 
}?>"]; 
 
     
 
      } 
 
] 
 
\t 
 
    </script>

+1

böylece kendi kendine otomatik yenilemesi yapan bir html sayfası mı, yoksa mysql'de veri değiştiğinde mi? – Drew

+0

Eğer AJAX'i destekliyorsa ZingChart'a aşina değilim, ancak tüm sayfayı yeniden yüklemek yerine onu kullanmayı düşünün. Bazı JS araçları AJAX'ın farkındadır, böylece bir zamanlayıcı veya [bir şey] (http://stackoverflow.com/questions/tagged/websocket) üzerinde bir güncelleme almak için bir API uygulayabilirsiniz. – mlt

+0

@Bu sayfayı tamamen yenilenecek değil, sadece çizelgeler ve evet 10 saniye sonra ayarlanmış bir aralık sonra veri mysql – phpnet

cevap

8

Bu kodu kullanarak, dataurl seçeneğini kullanın veri seçeneği yerine, ve PHP betiğinizin veritabanına bağlandığınız yer.

window.onload=function(){ 
    zingchart.render({ 
    id:"myChart", 
    width:"100%", 
    height:400, 
    dataurl:'feed.php' 
    }); 
}; 

Şimdi feed.php içinde bağlantıyı oluşturun ve değerleri alın. Eğer bir PHP değişken dizide kendi değerlerini sahip olduktan sonra virgülle değerlerini katılmak için join() kullanmak ve veri ZingChart (bir JavaScript dizi olarak) anlayacağı şekilde biçimlenmesini sağlamak için parantez ayarlayın:

$dates = '[' . join($date, ',') . ']'; 
$values = '[' . join($series, ',') . ']'; 

Ardından aynı komut, grafikte kullanılmak üzere tam JSON yapılandırmasını dışarı yankı:

echo ' 
    { 
    "type" : "line", 
    "refresh" : { 
     "type" : "full", 
     "interval" : 10 
    }, 
    "scale-x":{ 
     "values":' . $dates . ', 
     "transform":{ 
     "type":"date", 
     "all":"%m/%d/%y" 
     } 
    }, 
    "series" : [ 
     { 
     "values" : ' . $values . ' 
     } 
    ] 
    }'; 

"type" tesiste tam grafik yenileme için izin vermek "full" olarak ayarlanır dikkat etmek önemli şey, Değerleri birer birer çekmek yerine.

Bu demoyu ZingChart-Demos repository on Github for your perusal ürününe ekledim.

ZingChart ekibindeyim, daha fazla yardıma ihtiyacınız olursa lütfen bildirin.

+1

Çözüm ve açıkladığınız için teşekkür ederiz. – phpnet

İlgili konular