สวัสดีครับ ในบทความนี้ เราจะมาแนะนำ 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