采用Ajax,通过php,从mysql取出数据,然后将数据使用ECharts展示。如果想要动态刷新图标,那么设置一个定时器,定时取数,就可以达到目的。

mysql图表.jpg

数据库

数据库名:kali
表名:ecahrts
字段有:id city sun av qs详细结构如下:

Idcitysunavqs
115006781342
218004651245
32000346665
412004561432
51750785412

数据库结构

配置php文件

<?php
$mysqli=new mysqli('127.0.0.1','root','123456','kali');
mysqli_query($mysqli,"set names 'utf8'");
$sql="SELECT * FROM ecahrts";
$result = $mysqli->query($sql,MYSQLI_USE_RESULT);
if($result){
    $i=0;
    $categories=array();
    $datas=array();
    while($row = $result->fetch_assoc())
     {
        $categories[$i]=$row['city'];
        $datas[$i]=$row['sun'];
        $datas1[$i]=$row['av'];
        $datas2[$i]=$row['qs'];
        $i=$i+1;
     }
    $arr=array('categories'=>$categories,'data'=>$datas,'data1'=>$datas1,'data2'=>$datas2);
    echo json_encode($arr);
}
$mysqli->close();
?>

主要参数说明:
读取数据库中的数据,并且复制给数组$arr
验证
将上面php保存为api.php,访问127.0.0.1/api.php

这里需要注意的是,在数据库中我的字段city是中文。Ajax读取数据后是乱码,于是我采用mysqli_query($mysqli,"set names 'utf8'");将其通过php编码即可。

绘制图表

引用各种js

 <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
 <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-stat/dist/ecStat.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/dataTool.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/map/js/china.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/map/js/world.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/bmap.min.js"></script>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>

核心代码解读

function addData(){
$.get('aip.php').done(function(data,status) 从api.php中获取数据
var data=eval('('+data+')'); //转换为json

完整html代码

使用

index.htmlapi.php放到你的根目录,修改数据库信息和字段信息。访问你的主机ip即可。

Last modification:May 19th, 2020 at 10:40 pm
正在沿街乞讨中……