Java教程

实现PHP HTML MySQL JavaScript(Ajax)与Echarts交互制作图表并显示于网页上的功能

本文主要是介绍实现PHP HTML MySQL JavaScript(Ajax)与Echarts交互制作图表并显示于网页上的功能,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1 任务目的

该篇为实现PHP、HTML、MySQL、JavaScript(Ajax)、Echarts交互,利用PHP从MySQL中取出数据,利用Ajax响应,通过Echarts绘图,并在HTML上显示的功能而写作。

代码主体分为两部分,包括PHP部分及HTML部分,其中每个部分可根据自己的需要进行补充。

注明:“---------”用于分块,以便更加直观的显示代码成分,并非表示注释或有其他含义。

代码运行于WampServer搭建的系统上,需实时连接数据库。

 

2 主体代码

2.1 PHP部分

<?php

        header("charset=UTF-8");        //设置字符编码,避免切换网站时出现乱码。

        $con = mysqli_connect("localhost", "$YourUserName", "$YourPassword", "$YourDataBase");        //$YourUserName:用户名; $YourPassword:密码; $YourDataBase:选择的数据库.

        mysqli_set_charset($con, "utf8mb4");        //设置数据库编码,避免提取数据时无法读取。

        $sql = "SELECT * FROM TableName";        //TableName:选择的数据库中表的名称。

        $result = mysqli_query($con, $sql);        //读取表中数据。

        $data = array();        //设置$data为数组,用于存储从表中读取的数据。

------------------------------------------------------------------------------------------------------------------------

        class System{        //假设该表中有三个字段,该类的创建用于放置这三个字段的内容。

                public $date;         //放置日期;

                public $a;        //放置字段1;

                public $b;        //放置字段2;

                }

        while($row = mysqli_fetch_array($result)){        //循环,依次读取$result中每一行数据。

                $alter = new System();        //创建System中的对象,具有放置三个字段的能力。

                $alter -> date = $row['Date'];        //读取日期值;

                $alter -> a = $row['ar1'];        //读取字段1值;

                $alter -> b = $row['ar2'];        //读取字段2值;

                $data[] = $alter;        //用数组$data存储结果;

        }

 -----------------------------------------------------------------------------------------------

        $BD = json_encode($data);        //响应HTML中的ajax部分;
        echo $BD;
        exit();
?>

 

2.2 HTML部分

<!DOCTYPE html>

<html>

---------------------------------------------------------------------------------------------------

<head>

        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />       <!--设置字符编码,避免乱码或切换网页时出现源代码-->

        <script src="https://cdn.staticfile.org/echarts/4.7.0/echarts.min.js"></script>       <!--引入Echarts库,可通过网址在线引入-->  

        <script src="http://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>       <!--引入jquery,用于设置ajax联系PHP部分的数组-->

</head>

--------------------------------------------------------------------------------------------------

<link rel = "stylesheet" type = "text/css" href = "YourCSSFileName.css"/>        <!--CSS文件用于修饰HTML页面-->

--------------------------------------------------------------------------------------------------

<body background="/images/YourBackgroundImage.jpg">        <!--背景图片-->        

        <div id = "container" style = "width:100%;height:900px;background:#fff"></div>       <!--设置Echarts画图容器,赋予宽、高、背景颜色等属性-->

----------------------------------------------------------------------------------------------------------------

        <script type = "text/javascript">       <!--JavaScript标签,用于Ajax联系与Echarts图表属性设置-->

        var mychart = echarts.init(document.getElementById("container"));       <!--引入Echarts变量-->

        var arr1 = [], arr2 = [], arr3 = [];       <!--引入三种数组分别用于存储Ajax联系的PHP部分中的$data部分的数据-->

        function getusers(){       <!--设置Ajax联系函数-->

                $.ajax({       <!--设置Ajax联系-->

                type:"post",       <!--设置“post”方法-->

                async:false,       <!--设置同步或异步传输-->

                url:"System.php",       <!--设置PHP路径-->

                data:{},       <!--设置数据-->

                dataType:'json',       <!--设置数据类型为json-->

                success:function(result){       <!--设置传输成功函数-->

                        console.log(result);       <!--调试json的内容,并将其传输至页面上

                        if(result){       <!--读取由PHP部分的json_encode通过Ajax响应的数据-->

                                for(var i = 0;i < result.length;i++){       <!--循环读取各字段存储数据-->

                                        arr1.push(result[i].date);       <!--获取date对应的数据并存储至arr1中-->

                                        arr2.push(result[i].a);       <!--获取a对应的数据并存储至arr2中-->

                                        arr3.push(result[i].b);       <!--获取b对应的数据并存储至arr3中-->

                               }

                       }

                },       <!--语句结束后别忘了加逗号-->

               error:function(errmsg){       <!--显示Ajax连接错误的情况-->

                       alert("Ajax获取服务器数据出错了!" + errmsg);        <!--输出结果以显示错误情况-->

               }

       });

       return arr1,arr2,arr3;        <!--返回三个数组存储的数据-->

       }

       getusers();        <!--调用函数,应用Ajax响应-->

----------------------------------------------------------------------------------------------------------------------       

       <!--设置Echarts图表属性,下图为平滑折线图,具体实例见网址:https://echarts.apache.org/examples/zh/index.html,点开实例有相应代码-->

       var option = {        <!--设置图表属性-->

               tooltip : {        <!--显示鼠标滑过图表时的显示框-->

                       trigger: 'axis',

                       axisPointer: {

                       type: 'cross',        <!--设置交叉显示框-->

                       label: {

                               backgroundColor: '#6a7985'        <!--设置背景颜色-->

                       }

                       }

               },

               title:{        <!--设置图表标题-->

                       text:"你的图名",        <!--图表标题-->

                       x: 'center',        <!--设置图表标题位置-->

                       y: '7px',        <!--设置图表标题垂直偏移量-->

                       textStyle: {        <!--设置字体属性-->

                               color: '#000000',       <!--设置字体颜色-->

                               fontSize: 35        <!--设置字体大小-->

                       }

               },

               xAxis: {        <!--设置X轴属性-->

                       type: 'category',

                       data: arr1,        <!--设置X轴数据-->

                       axisLabel: {        <!--设置X轴属性-->

                               color: '#000000',        <!--设置坐标轴字体颜色-->

                               fontSize: 35        <!--设置坐标轴字体大小-->

                       },

                       splitLine: {        <!--设置垂直X轴网格线属性-->

                               show: true,        <!--是否显示网格线选项-->

                               lineStyle:{        <!--设置网格线线条属性-->

                                       color: ['#EDEDED'],        <!--设置网格线颜色属性-->

                                       width: 3,        <!--宽度-->

                                       type: 'solid'        <!--类型-->

                               }

                 },

                       axisTick: {        <!--设置坐标轴刻度-->

                               inside: true        <!--设置刻度位于内或外-->

                       },

               },        <!--语句、每一项属性最好都要加上逗号>

               yAxis: {

                       type: 'value',

                       axisLabel: {

                               color: '#000000',

                               fontSize: 35

                       },

                       splitLine: {

                               show: true,

                               lineStyle:{

                                       color: ['#EDEDED'],

                                       width: 3,

                                       type: 'solid'

                               }

                 },

                      axisTick: {

                               inside: true

                       },

             },

             series: [        <!--设置数据系列-->

             {

                     data: arr2,

                     type: 'line',

                     smooth: true,        <!--设置是否平滑属性-->

               }

               ]

           };

----------------------------------------------------------------------------------

       mychart.setOption(option);        <!--设置并运行option-->

----------------------------------------------------------------------------------

</script>

</body>

</html>

 

3 结果及讨论

3.1 步骤及功能

(1)PHP的日期字段读取MySQL数据;

(2)MySQL数据联系Ajax传输至JavaScript中;

(3)Echarts绘图库的引入,绘制字段变量随时间(日期)变化的平滑折线图;

3.2 实现结果截图

 

注:使图像中出现多条线,可通过增加Series中“{}”数据序列完成,但要保证序列的长度与时间长度一致。

 

这篇关于实现PHP HTML MySQL JavaScript(Ajax)与Echarts交互制作图表并显示于网页上的功能的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!