[Echarts視覺化] 二.php和ajax連線資料庫實現動態資料視覺化
這篇文章主要結合PHP、MySQL、JQuery和Ajax從資料庫中獲取資料,動態的顯示值,這是實現真正視覺化的技術入,可以應用於實際的專案中。基礎性文章,希望對您有所幫助,如果文章中存在不足之處,還請海涵~
參考文章:ECharts, PHP, MySQL, Ajax, JQuery 實現前後端資料視覺化
echarts+php+mysql 繪圖例項 - 謙一
PHP+echarts讀取地圖資料
該篇文章程式碼下載地址:
一. 回顧Echarts繪製直方圖
Echarts官網地址:http://echarts.baidu.com/index.html
注意:基礎知識參考前一篇文章,這篇文章主要是程式碼為主,整個流程都是詳細的。同時發現,準備寫這篇文章的時候,“純臻”大神也寫了篇類似的,但依然有不同的地方可能對你有所幫助。
Echarts程式碼 test01.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ECharts</title>
<!-- 引入 echarts.js -->
<script src="echarts.min.js"></script>
</head>
<body>
<!-- 為ECharts準備一個具備大小(寬高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基於準備好的dom,初始化echarts例項
var myChart = echarts.init(document.getElementById('main'));
// 指定圖表的配置項和資料
var option = {
title: {
text: 'ECharts 入門示例'
},
tooltip: {},
legend: {
data:['數量']
},
xAxis: {
data: ["貴陽市","遵義市","凱裡市","六盤水市","都勻市","畢節市"]
},
yAxis: {},
series: [{
name: '數量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}]
};
// 使用剛指定的配置項和資料顯示圖表。
myChart.setOption(option);
</script>
</body>
</html>
執行結果如下圖所示:二. 建立資料庫
建立資料庫hcpmanage,再建立表guizhou,包括序號、地名、數量三個欄位。
如下所示:
-- ----------------------------
-- Table structure for `guizhou`
-- ----------------------------
DROP TABLE IF EXISTS `guizhou`;
CREATE TABLE `guizhou` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`place` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
`num` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- ----------------------------
-- Records of guizhou
-- ----------------------------
INSERT INTO `guizhou` VALUES ('1', '貴陽市', '5');
INSERT INTO `guizhou` VALUES ('2', '遵義市', '20');
INSERT INTO `guizhou` VALUES ('3', '凱裡市', '36');
INSERT INTO `guizhou` VALUES ('4', '六盤水市', '10');
INSERT INTO `guizhou` VALUES ('5', '都勻市', '10');
INSERT INTO `guizhou` VALUES ('6', '畢節市', '20');
三. PHP連線資料庫及Json傳值
PHP連線資料庫的核心程式碼大家非常熟悉了,下面這段程式碼簡單包括了Json取值。
sql.php檔案:
<?php
//PHP連線資料庫
header("content-type:text/json;charset=utf-8");
//連結資料庫
$con = mysql_connect("localhost", "root", "123456");
if (!$con)
{
die('Could not connect database: ' . mysql_error());
}
//選擇資料庫
$db_selected = mysql_select_db("hcpmanage", $con);
if (!$db_selected)
{
die ("Can\'t use yxz : " . mysql_error());
}
//執行MySQL查詢-設定UTF8格式
mysql_query("SET NAMES utf8");
//查詢學生資訊
$sql = "SELECT * FROM `guizhou` ";
$result = mysql_query($sql,$con);
//定義變數json儲存值
$data="";
$array= array();
class GuiZhou{
public $id;
public $place;
public $num;
}
while ($row = mysql_fetch_row($result))
{
list($id,$place,$num) = $row;
/*
echo $id.' ';
echo $place.' ';
echo $num;
echo '<br >';
*/
$gz = new GuiZhou();
$gz->id = $id;
$gz->place = $place;
$gz->num = $num;
//陣列賦值
$array[] = $gz;
}
$data = json_encode($array);
echo $data;
//{"id":"1","place":"\u8d35\u9633\u5e02","num":"5"}
?>
核心程式碼,通過array陣列獲取Guizhou類中的值,該值是讀取資料庫並且賦值給例項gz的,再呼叫json_encode($array)進行格式轉換。輸出結果如下所示,也可以Json只獲取兩個值。注意訪問地址為:http://localhost:8080/20170224YXZ/sql.php,檔案放到Apache的htdocs目錄下。所有檔案如下圖所示:
四. Ajax動態實現Echarts視覺化
test02.html程式碼如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ECharts</title>
<!-- 引入 echarts.js -->
<script src="echarts.min.js"></script>
<script src="jquery-1.9.1.min.js"></script>
</head>
<body>
<!-- 為ECharts準備一個具備大小(寬高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基於準備好的dom,初始化echarts例項
var myChart = echarts.init(document.getElementById('main'));
// 初始化兩個陣列,盛裝從資料庫中獲取到的資料
var places=[], nums=[];
function TestAjax(){
$.ajax({
type: "post",
async: false, //非同步執行
url: "sql.php", //SQL資料庫檔案
data: {}, //傳送給資料庫的資料
dataType: "json", //json型別
success: function(result) {
if (result) {
for (var i = 0; i < result.length; i++) {
places.push(result[i].place);
nums.push(result[i].num);
console.log(result[i].place);
console.log(result[i].num);
}
}
}
})
return places, nums;
}
//執行非同步請求
TestAjax();
// 指定圖表的配置項和資料
var option = {
title: {
text: 'ECharts+Ajax+MySQL+PHP'
},
tooltip: {
show : true
},
legend: {
data:['數量']
},
xAxis: [{
//data: ["貴陽市","遵義市","凱裡市","六盤水市","都勻市","畢節市"]
type : 'category',
data : places
}],
yAxis: {
type : 'value'
},
series: [{
name : "數量",
type : "bar",
data : nums
}]
};
// 使用剛指定的配置項和資料顯示圖表。
myChart.setOption(option);
</script>
<marquee>Eastmount 璋 love 娜!!!</marquee>
</body>
</html>
執行結果如下圖所示,這是動態呼叫的視覺化結果。其中Ajax核心程式碼為:
var places=[], nums=[];
function TestAjax(){
$.ajax({
type: "post",
async: false, //非同步執行
url: "sql.php", //SQL資料庫檔案
data: {}, //傳送給資料庫的資料
dataType: "json", //json型別
success: function(result) {
if (result) {
for (var i = 0; i < result.length; i++) {
places.push(result[i].place);
nums.push(result[i].num);
console.log(result[i].place);
console.log(result[i].num);
}
}
}
})
return places, nums;
}
//執行非同步請求
TestAjax();
同時,瀏覽器中檢查元素可以對Ajax的值進行測試輸出,呼叫console.log函式。如下圖所示:
資料動態變化,資料庫變了,視覺化圖也變化:
五. 難點及注意事項
初學的同學可能會遇到一下幾個問題:
1.其中Echarts和JQuery需要匯入的,即:
<script src="echarts.min.js"></script>
<script src="jquery-1.9.1.min.js"></script>
2.Echarts使用的方法請大家學習前一篇文章和官網文章,這裡不再敘述。
3.PHP檔案需要header("content-type:text/json;charset=utf-8");宣告Json格式,同時Ajax也需要設定dataType: "json"。
4.宣告的Ajax函式需要執行,對應程式碼中的TestAjax(),否則只是定義未執行。
5.如果Ajax報錯 [object Object],如下圖所示:
這需要Json格式一致,而我的錯誤是因為在PHP檔案中增加了個註釋導致無值,百度都無法解決,頭都弄大了,所以寫程式碼需要仔細。
6.最後動態資料是通過變數實現的,即ages替換以前的 [5, 20, 36, 10, 10, 20]。
series : [ {
name : "num",
type : "bar",
data : ages
}]
最後希望這篇文章對你有所幫助,尤其是對Echarts視覺化感興趣的同學,同樣Java、C#、Python相關網站的原理一樣,程式碼也會上傳。最近心情真的好低落,哎!有時間寫日記總結下吧。
穩坐珠江夜遊船,翻轉長隆水世界。
笑談粵廣風流人,寧負天下不負卿。
哎!總是心事重重,自己真的有太多的不足和需要成長的地方,以前總會知足,現在也會。哎!為人處世真需要一輩子去學習,且寫且珍惜吧,傳遞正能量。
(By:Eastmount 2017-06-02 中午2點 http://blog.csdn.net/eastmount/ )
相關文章
- 使用Echarts和Ajax動態載入資料進行大資料視覺化Echarts大資料視覺化
- 使用Echarts來實現資料視覺化Echarts視覺化
- python資料視覺化——echartsPython視覺化Echarts
- Vue全家桶+Echarts資料視覺化實踐VueEcharts視覺化
- 關於微信小程式中如何實現資料視覺化-echarts動態渲染微信小程式視覺化Echarts
- Echarts資料視覺化,easyshu圖表整合。Echarts視覺化
- 資料視覺化實踐視覺化
- pyecharts做資料視覺化(二)Echarts視覺化
- 資料視覺化--實驗五:高維非空間資料視覺化視覺化
- Python 如何實現資料視覺化Python視覺化
- 大資料視覺化該如何實現大資料視覺化
- 資料看板視覺化視覺化
- 資料視覺化【十五】視覺化
- 大資料視覺化大資料視覺化
- 警惕“資料視覺化”視覺化
- 資料視覺化:基於 Echarts + Python 實現的動態實時大屏範例【11】視覺化EchartsPython
- 分享20份大屏視覺化模板,輕鬆實現資料視覺化視覺化
- 基於Pandas+ECharts的金融大資料視覺化實現方案Echarts大資料視覺化
- 資料視覺化基本原理——視覺化模型視覺化模型
- 資料視覺化與資訊視覺化怎麼搞?視覺化
- 遇見大資料視覺化 : 那些 WOW 的資料視覺化案例大資料視覺化
- 什麼是資料視覺化,為什麼資料視覺化很重要?視覺化
- 資料視覺化(二)A股三大指數10年漲跌幅比較:資料視覺化視覺化
- 視覺化之資料視覺化最強工具推薦視覺化
- ECharts與資料視覺化:如何高效使用JavaScript實現複雜圖表Echarts視覺化JavaScript
- 環境資料分析和視覺化視覺化
- 動態的視覺化大屏怎麼做,哪些可以做資料視覺化軟體視覺化
- 新冠肺炎資料視覺化視覺化
- 資料視覺化的秘密視覺化
- 視覺化中的資料視覺化
- 如何看待資料視覺化?視覺化
- Matlab資料視覺化Matlab視覺化
- 資料視覺化的作用視覺化
- 細談資料視覺化視覺化
- Golang 資料視覺化利器 go-echarts 開源啦Golang視覺化Echarts
- 資料視覺化,個人經驗總結(Echarts相關)視覺化Echarts
- Python資料視覺化matplotlib庫Python視覺化
- TCGA系列--TCGA視覺化資料庫GEPIA視覺化資料庫