douxian1892 2017-05-19 04:54
浏览 55
已采纳

如何使用来自oracle的PHP制作图表

I want to create a graph that the data are from oracle by using php. I did not found example that use oracle as a database. Mostly are from mysql. The data is like this

enter image description here

I have made this code but it's not working. its show like thisenter image description here

data.php

   <?php
    header('Content-Type: application/json');
    $conn = oci_connect('***', '***', '127.0.0.1/orcl');

    $graph=sprintf("SELECT count(pm.packagename) as quantity,pm.packagename
        FROM packagemenu pm
        INNER JOIN orderdetail od ON od.packageid=pm.packageid
        inner join orders o on o.orderid = od.orderid
        group by pm.packagename");
     $parse=oci_parse($conn,$graph);
    oci_execute($parse);
    $data=array();
    while($row1 = oci_fetch_array($parse)){
    $data[]=$row1;

    }
     print json_encode($data);

    ?>

bargraph.html

<!DOCTYPE html>
<html>
<head>
    <title>ChartJS - BarGraph</title>
    <style type="text/css">
        #chart-container {
            width: 640px;
            height: auto;
        }
    </style>
 </head>
 <body>
    <div id="chart-container">
        <canvas id="mycanvas"></canvas>
    </div>

    <!-- javascript -->
    <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
    <script type="text/javascript" src="js/Chart.min.js"></script>
    <script type="text/javascript" src="js/app.js"></script>
 </body>

apps.js

  $(document).ready(function(){
  $.ajax({
    url: "http://localhost/psm/admin/data.php",
    method: "GET",
    success: function(data) {
        console.log(data);
        var packagename = [];
        var quantity = [];

        for(var i in data) {
            packagename.push("Packagename " + data[i].packagename);
            quantity.push(data[i].quantity);
        }

        var chartdata = {
            labels: packagename,
            datasets : [
                {
                    label: 'Package Name',
                    backgroundColor: 'rgba(200, 200, 200, 0.75)',
                    borderColor: 'rgba(200, 200, 200, 0.75)',
                    hoverBackgroundColor: 'rgba(200, 200, 200, 1)',
                    hoverBorderColor: 'rgba(200, 200, 200, 1)',
                    data: quantity
                }
            ]
        };

        var ctx = $("#mycanvas");

        var barGraph = new Chart(ctx, {
            type: 'bar',
            data: chartdata
        });
      },
      error: function(data) {
        console.log(data);
      }
    });
 });
  • 写回答

1条回答 默认 最新

  • dongzhong2018 2017-05-19 05:54
    关注

    Since the data is this:

     [{"0":"8","QUANTITY":"8","1":"Set A","PACKAGENAME":"Set A"},{"0":"5","QUANTITY":"5","1":"Set B","PACKAGENAME":"Set B"}]
    

    You have a case sensitivity problem, which makes the array var packagename and quantity empty/undifined.

    You need to change:

        for(var i in data) {
            packagename.push("Packagename " + data[i].packagename);
            quantity.push(data[i].quantity);
        }
    

    ... to ...

        for(var i in data) {
            packagename.push("Packagename " + data[i].PACKAGENAME);
            quantity.push(data[i].QUANTITY);
        }
    

    I am not familiar with Chart.js but fixing this so that you are not trying to graph undefined variables is a first step.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站