最近在学习php+mysql,因为之前画图表都是直接在echart的实例demo中修改数据,便想着两相结合练习一下,通过ajax调用后台数据画图表。
我使用的是echart3,相比较第二版,echarts3体积上减少了200k,适配了移动端,且不再按照需求引入不同的包,直接用echarts.init方法初始化就ok。更简洁更强大,国产良心产品。 5分钟上手echarts3

第一步:搭建环境

我使用XAMPP软件包作为开发平台,这个可以直接百度下载,一直next安装好。开启Apache和MySql。
在mysql中创建一个数据库,我使用了Navicat for mysql来进行数据库管理。下载及使用方法参考 :百度经验
这是我建好的测试表:

第二步:php链接数据库并处理数据

<?php$mysql_server_name='localhost'; //改成自己的mysql数据库服务器$mysql_username='root'; //改成自己的mysql数据库用户名$mysql_password=''; //改成自己的mysql数据库密码,初始默认密码为空$mysql_database='study'; //改成自己的mysql数据库名?>

可以把这个php文件保存为db_config.php,以后再进行数据库链接就直接require("db_config.php")就ok。
接下来,创建另一个php文件,处理数据:

<?phprequire("db_config.php");$conn=mysql_connect($mysql_server_name,$mysql_username,$mysql_password) or die("error connecting") ;mysql_query("set names 'utf8'"); //数据库输出编码mysql_select_db($mysql_database); //打开数据库$result = mysql_query("select * from study");$data="";$array= array();class User{public $name;public $age;}while($row = mysql_fetch_array($result,MYSQL_ASSOC)){$user=new User();$user->name = $row['name'];$user->age = $row['age'];$array[]=$user;}$data=json_encode($array);// echo "{".'"user"'.":".$data."}";echo $data;
?>

这两个php文件都要放在..\xampp\htdecs下,在浏览器打开:http://localhost/test1.php
可以看到已经处理好的json数组:

[{"name":"\u767d\u96e8\u83f2","age":"40"},{"name":"\u5f20\u5929\u5f3a","age":"42"},{"name":"\u51af\u5176\u5eb8","age":"21"},{"name":"\u9a6c\u6b65\u5ddd","age":"18"},{"name":"\u6d2a\u521a","age":"100"},{"name":"\u5218\u4e09\u96cd","age":"21"},{"name":"\u9f50\u4e00\u9e23","age":"85"},{"name":"\u738b\u660e","age":"21"}]

name的值是php将中文转成unicode编码,前端调用的时候会自动转成中文。

第三步:前端通过ajax调用数据并绘图

怎么调用echarts我就不赘述了,可以直接去echart官网学习查看,基本没什么学习成本,写几个demo就会爱上她的。

<!DOCTYPE html>
<head><meta charset="utf-8"><title>ECharts</title><script src="js/echarts.min.js"></script><script src="js/jquery.js"></script>
</head>
<body><!-- 为ECharts准备一个具备大小(宽高)的Dom --><div id="main" style="height:400px"></div><script type="text/javascript">var  myChart = echarts.init(document.getElementById('main'));var option = {tooltip: {show: true},legend: {data:['age']},xAxis : [{type : 'category',data : (function(){var arr=[];$.ajax({type : "post",async : false, //同步执行url : "test1.php",data : {},dataType : "json", //返回数据形式为jsonsuccess : function(result) {if (result) {console.log(result);for(var i=0;i<result.length;i++){console.log(result[i].name);arr.push(result[i].name);}}},error : function(errorMsg) {alert("sorry,请求数据失败");myChart.hideLoading();}})return arr;})()}],yAxis : [{type : 'value'}],series : [{"name":"age","type":"bar","data":(function(){var arr=[];$.ajax({type : "post",async : false, //同步执行url : "test1.php",data : {},dataType : "json", //返回数据形式为jsonsuccess : function(result) {if (result) {for(var i=0;i<result.length;i++){console.log(result[i].age);arr.push(result[i].age);}}},error : function(errorMsg) {alert("sorry,请求数据失败");myChart.hideLoading();}})return arr;})()}]};// 为echarts对象加载数据myChart.setOption(option);// }</script>
</body>

我觉得里面最重要的就是对json数组的循环,将同属性的值创建成新的数组,然后return给对应坐标轴的data,具体的可以参考我的上一篇博客。

-------------------------------------------------------------------
同事大哥指出上述代码中ajax请求了两次,如果数据量大一点就容易数据冗余。遂进行改进。将ajax请求放在option外,在一次请求中就返回两个需要的数组,然后在option时候直接用就ok。

<script type="text/javascript">var  myChart = echarts.init(document.getElementById('main'));var arr1=[],arr2=[];function arrTest(){$.ajax({type:"post",async:false,url:"test1.php",data:{},dataType:"json",success:function(result){if (result) {for (var i = 0; i < result.length; i++) {arr1.push(result[i].name);arr2.push(result[i].age);}}}})return arr1,arr2;}arrTest();var  option = {tooltip: {show: true},legend: {data:['age']},xAxis : [{type : 'category',data : arr1}],yAxis : [{type : 'value'}],series : [{"name":"age","type":"bar","data":arr2}]};// 为echarts对象加载数据myChart.setOption(option);// }</script>

至此,对前后端的交互过程有了简单清晰的认识。之前一直觉得是洪水猛兽的数据库操作起来也没有很难。

前几日看到昌喆法师在朋友圈的发文:”做和做好是两个概念,但不做就永远做不好“。便是如此。



转载于:https://www.cnblogs.com/qjqcs/p/5852958.html

echarts+php+mysql 绘图实例相关推荐

  1. 利用ECharts可视化mysql数据库中的数据

    利用ECharts可视化mysql数据库中的数据 技术实现背景 在我们的日常开发中我们经常使用到各种各样的数据进行相关的功能的开发,在这个过程中我们可以用到各种各样的图表来分析和实现我们的需求,很多的 ...

  2. mysql yum多实例_centos-7yum 安装 (mairadb) 实现 mysql 多实例

    centos-7yum 安装 (mairadb) 实现 mysql 多实例 case$1in start) function_start_mysql ;; stop) function_stop_my ...

  3. linux运维、架构之路-MySQL多实例

    一.MySQL多实例介绍            一台服务器上开启多个不同的服务端口(3306,3307,3308),运行多个MySQL服务进程,共用一套MySQL安装程序,多实例MySQL在逻辑上看是 ...

  4. 【学习笔记】mysql多实例安装

    mysql多实例安装(笔记) 安装环境:CentOS最小化的系统 已经编译安装了mysql 先停止mysql服务 killall -9 mysql 创建一个/data目录 再创建一个端口号的文件夹(想 ...

  5. mysql多实例安装配置_MySQL多实例安装配置

    MySQL进行多实例配置再生产环境中非常常见,比如一些高配置数据库服务器,就会跑多个MySQL实例,借助多实例绑定的方式提高服务器的整体资源利用率.另外在MySQL5.7以上版本还不支持多源复制时,当 ...

  6. mysql服务实例配置_MySQL多实例配置(一)

    MySQL数据库的集中化运维,能够通过在一台MySQL数据库服务器上,部署多个MySQL实例.该功能是通过mysqld_multi来实现.mysqld_multi用于管理多个mysqld的服务进程,这 ...

  7. MySQL多实例安装配置指南

    系统环境:centos 6.2 64位 内核版本: 2.6.32-220.el6.x86_64 mysql版本:5.1.62 如果喜欢这篇博文,请给个赞,更多博文请访问 平凡的日子 linux开源技术 ...

  8. MySQL多实例的安装

    安装MySQL-5.5.49 安装包的获取:http://mirrors.sohu.com/mysql/ # 安装MySQL需要的依赖包 yum install ncurses-devel libai ...

  9. redis mysql 案例_linux安装redis和mysql的实例讲解

    linux环境下安装redis和mysql 安装redis(版本3.2.10): 下载地址:https://redis.io/download,这里我下载3.2.10 // 解压 tar zxvf r ...

最新文章

  1. 语言输出换行符号是什么_世界上最难的5种编程语言
  2. xyplorer保存设置失败_XYplorer设置中文步骤详解教程
  3. 【记录】ASP.NET IIS ISAPI_Rewrite
  4. HTML5新增表单验证
  5. C# 视频监控系列(13):H264播放器——控制播放和截图
  6. NYOJ 7 街区最短路径问题
  7. 它是最神秘的黑客组织:来自战斗民族 专黑美国
  8. 第一章:线性空间和线性变换
  9. Dapr 已在塔架就位 将发射新一代微服务
  10. JPA 2.1和Java EE 7中的JPQL增强功能(第1部分– JOIN ON)
  11. Android样式开发--selector
  12. python float 精度_改变Float的精度并在Python中存储
  13. 数字集成电路与系统设计基础知识
  14. 用友NC的一些漏洞复现
  15. C++实现金山打字通助手
  16. 3DMAX场景渲染失败怎么办?
  17. netty做一个posp的网络_Java网络通信基础系列-Netty实现HTTP服务
  18. sphinx使用笔记
  19. 【激励自己】牛人职场分享汇总
  20. js和html:周岁年龄计算器

热门文章

  1. java并发编程(二)synchronized
  2. POI导入数据的过程中,遇到读取以科学计数法显示的数据
  3. CSS样式小项目实战 - 网页变色小按钮
  4. 数据结构上机实践第十周项目2 - 用二叉树求解代数表达式
  5. 数据结构上机实践第四周项目4 - 建设双链表算法库
  6. (二)NLP-中文分词-HMM-维特比算法
  7. asp网上书店的代码_使用Helm将ASP.NET Core应用程序部署到Kubernetes容器集群
  8. python输出语句格式 f_Python基础之输出格式和If判断
  9. java spring server_java server之spring中的IOC如何用java实现?
  10. jquery pager 访问 java_基于JQuery的Pager分页器实现代码