สวัสดีครับ ในบทความนี้ เราจะมาแนะนำ Java script Library อีกตัว ไว้เป็นทางเลือก สำหรับ การสร้าง รายงานในรูปแบบกราฟ ครับ
ซึ่ง Library ที่จะแนะนำในที่นี้ มีชื่อ ว่า  Echarts สามารถดูตัวอย่าง เต็ม ๆ ได้ที่
https://ecomfe.github.io/echarts-doc/public/en/index.html
ในเว็บจะมีรายละเอียด ตัวอย่าง Api และ วิธีใช้งาน อย่างละเอียด สามารถใช้งานได้ง่าย มาก ๆ ครับ และ ยัง รองรับการสร้าง กราฟ ในรูปแบบต่าง ๆ มาก มาย เช่น Line,Bar,Pie,Scatter,Map,GEO,Radar, หรือ จะสร้างกราฟแบบ 3D ก็ได้ เรียกได้ว่าสร้างได้ทุกแบบที่ต้องการเลยครับ
สำหรับในบทความนี้ เราจะมา แสดงตัวอย่างการเรียกใช้งานแบบง่าย และ เป็น Chart ที่ใช้บ่อย คือ Bar (กราฟแท่ง) และ Pie (กราฟวงกลม)
ตัวอย่างการใช้งาน Bar Chart
<!DOCTYPE html>
<html style="height: 100%">
   <head>
       <meta charset="utf-8">
   </head>
   <body>
       <div class="container">
	   <div id="report" style="width:100%;height: 370px"></div><!--กำหนด ID ชื่อว่า report เพื่อแสดง Chart-->
		
       <script type="text/javascript" src="https://echarts.baidu.com/gallery/vendors/echarts/echarts.min.js"></script><!--นำเข้า Script echarts.min.js-->
	   
       <script type="text/javascript">
			var dom = document.getElementById("report");//กำหนดให้แสดง Chart ใน Element ที่มี ID ชื่อว่า Report
			var myChart = echarts.init(dom);
			option = {
			    title: {
					text: 'รายงานแสดงยอดขายตามช่วงวัน',//แสดงหัวข้อรายงาน
					subtext: 'เวลา 8:00 น  ถึง 16:00 น.',
					left: 'center'
				},
				xAxis: {
					type: 'category',
					data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
				},
				yAxis: {
					type: 'value'
				},
				series: [{
					data:[10, 52, 200, 334, 390, 330, 220],
					type: 'bar'
				}]
			};
			;
			if (option && typeof option === "object") {
				myChart.setOption(option, true);
			}
       </script>
   </body>
</html>
ตัวอย่างการแสดงผล Bar Chart
ตัวอย่างการใช้งาน Pie Chart
<!DOCTYPE html>
<html style="height: 100%">
   <head>
       <meta charset="utf-8">
   </head>
   <body style="height: 100%; margin: 0">
       <div id="container" style="height: 100%"></div>
       <script type="text/javascript" src="https://echarts.baidu.com/gallery/vendors/echarts/echarts.min.js"></script>
       <script type="text/javascript">
				var dom = document.getElementById("container");
				var myChart = echarts.init(dom);
				var seriesData = [
					{name:'Mon',value:10},
					{name:'Tue',value:52}, 
					{name:'Wed',value:200},
					{name:'Thu',value:334},
					{name:'Fri',value:390},
					{name:'Sat',value:330},
					{name:'Sun',value:220}
				];
				
				option = {
					title : {
						text: 'รายงานแสดงยอดขายตามช่วงวัน',
						subtext: 'เวลา 8:00 น  ถึง 16:00 น.',
						x:'center'
					},
					tooltip : {
						trigger: 'item',
						formatter: "{a} <br/>{b} : {c} ({d}%)"
					},
					series : [
						{
							name: 'รายงานแสดงยอดขายตามช่วงวัน',
							type: 'pie',
							data: seriesData,
							itemStyle: {
								emphasis: {
									shadowBlur: 10,
									shadowOffsetX: 0,
									shadowColor: 'rgba(0, 0, 0, 0.5)'
								}
							}
						}
					]
				};
				if (option && typeof option === "object") {
					myChart.setOption(option, true);
				}
       </script>
   </body>
</html>
ตัวอย่างการแสดงผล Pie Chart
การแสดงข้อมูลใน Chart จากฐานข้อมูล MySQL
ในตัวอย่างต่อไปนี้ เราจะนำข้อมูลที่อยู่ในฐานข้อมูล MySQL มาแสดงใน Chart ก่อนอื่น เรามาสร้าง ตารางตัวอย่างกันก่อนครับ
ตัวอย่าง ได้สร้าง ฐานข้อมูล ชื่อว่า echarts และ สร้างตารางชื่อว่า report
CREATE TABLE `report` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `title` varchar(100) NOT NULL,  `value` int(11) NOT NULL,  PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
นำเข้าข้อมูลตัวอย่าง
INSERT INTO `report` (`id`, `title`, `value`) VALUES (1, 'Mon', 12000), (2, 'Tue', 30000), (3, 'Wed', 50000), (4, 'Thu', 80000), (5, 'Fri', 90000), (6, 'Sat', 20000), (7, 'Sun', 75000);
จากนั้นเรามาเขียนไฟล์ bar.php เพื่อแสดงข้อมูล Chart กันครับ
ตัวอย่างไฟล์ bar.php
<?php
	//ตั้งค่าการเชื่อมต่อฐานข้อมูล
	$servername = "localhost";
	$username = "root";
	$password = "";
	$dbname = "echarts";//กำหนดชื่อฐานข้อมูล
	$conn = mysqli_connect($servername, $username, $password, $dbname);
	
	mysqli_set_charset($conn, "utf8");
	if (!$conn) {
		die("Connection failed: " . mysqli_connect_error());
	}
	$sql = "SELECT * FROM report"; //คำสั่ง เลือกข้อมูลจากตาราง report
	
	$result = mysqli_query($conn, $sql);
	$title = [];
	$value = [];
	if (mysqli_num_rows($result) > 0) {
		
		while($row = mysqli_fetch_assoc($result)) {
			$title[] = $row['title'];
			$value[] = $row['value'];
		}
	}
	mysqli_close($conn);
?>
<!DOCTYPE html>
<html style="height: 100%">
   <head>
       <meta charset="utf-8">
	  
   </head>
   <body>
       <div class="container">
	   <div id="report" style="width:100%;height: 370px"></div>
		
       <script type="text/javascript" src="echarts.min.js"></script>
	   
       <script type="text/javascript">
			var dom = document.getElementById("report");
			var myChart = echarts.init(dom);
			option = {
			    title: {
					text: 'รายงานแสดงยอดขายตามช่วงวัน',
					subtext: 'เวลา 8:00 น  ถึง 16:00 น.',
					left: 'center'
				},
				xAxis: {
					type: 'category',
					data: <?=json_encode($title);?>
				},
				yAxis: {
					type: 'value'
				},
				series: [{
					data:<?=json_encode($value);?>,
					type: 'bar'
				}]
			};
			;
			if (option && typeof option === "object") {
				myChart.setOption(option, true);
			}
       </script>
   </body>
</html>
ต่อมาเรามาทำการแสดงข้อมูลในรูปแบบ Pie Chart กันบ้าง
ตัวอย่างไฟล์ pie.php
<?php
	$servername = "localhost";
	$username = "root";
	$password = "";
	$dbname = "echarts";
	$conn = mysqli_connect($servername, $username, $password, $dbname);
	
	mysqli_set_charset($conn, "utf8");
	if (!$conn) {
		die("Connection failed: " . mysqli_connect_error());
	}
	$sql = "SELECT * FROM report";
	
	$result = mysqli_query($conn, $sql);
	$content = [];
	if (mysqli_num_rows($result) > 0) {
		
		while($row = mysqli_fetch_assoc($result)) {
			$content[] = [
				'name' => $row['title'],
				'value' => $row['value']
			];
		}
	}
	mysqli_close($conn);
?>
<!DOCTYPE html>
<html style="height: 100%">
   <head>
       <meta charset="utf-8">
   </head>
   <body style="height: 100%; margin: 0">
       <div id="container" style="height: 100%"></div>
       <script type="text/javascript" src="echarts.min.js"></script>
       <script type="text/javascript">
				var dom = document.getElementById("container");
				var myChart = echarts.init(dom);
				var seriesData = <?=json_encode($content)?>;
				
				option = {
					title : {
						text: 'รายงานแสดงยอดขายตามช่วงวัน',
						subtext: 'เวลา 8:00 น  ถึง 16:00 น.',
						x:'center'
					},
					tooltip : {
						trigger: 'item',
						formatter: "{a} <br/>{b} : {c} ({d}%)"
					},
					series : [
						{
							name: 'รายงานแสดงยอดขายตามช่วงวัน',
							type: 'pie',
							data: seriesData,
							itemStyle: {
								emphasis: {
									shadowBlur: 10,
									shadowOffsetX: 0,
									shadowColor: 'rgba(0, 0, 0, 0.5)'
								}
							}
						}
					]
				};
				if (option && typeof option === "object") {
					myChart.setOption(option, true);
				}
       </script>
   </body>
</html>
ขอขอบคุณข้อมูลจาก https://ecomfe.github.io/echarts-doc/public/en/index.html
