2017-05-19 2 views
1

Ich möchte ein Diagramm erstellen, dass die Daten von Oracle sind, indem Sie PHP verwenden. Ich habe kein Beispiel gefunden, das Oracle als Datenbank verwendet. Meistens sind von mysql. Die Daten sind wie dieseWie man ein Diagramm mit PHP von Oracle macht

enter image description here

ich diesen Code gemacht haben, aber es funktioniert nicht. seine Show wie dieser enter 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); 
     } 
    }); 
}); 
+0

Sie benötigen eine grundlegende Fehlerbehebung. Was ist in Ihrer '$ data'-Variable? Wenn Sie eine "curl http: // localhost/psm/admin/data.php" von der CLI ausführen, sehen Sie Daten? – varlogtim

+0

@varlogtim Die Daten zeigen [{"0": "8", "QUANTITY": "8", "1": "Set A", "PACKAGENAME": "Set A"}, {"0": "5 "," QUANTITY ":" 5 "," 1 ":" Set B "," PACKAGENAME ":" Setze B "}] unter URL http: //localhost/psm/admin/data.php – SySyBy

Antwort

2

Da die Daten, ist dies:

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

Sie haben einen Fall Empfindlichkeitsproblem, das das Array var packagename und quantity leer/undifined macht.

Sie müssen sich ändern:

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

... bis ...

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

ich mit Chart.js nicht vertraut bin, aber diese Fixierung, so dass Sie nicht grafisch darstellen undefiniert versuchen Variablen ist ein erster Schritt.

+0

Wow seine Arbeit !! tq so viel. Aber es zeigt nur für Set A nur. Aber es ist in Ordnung. Ich werde versuchen, es zu lösen, bis seine Show SetB.Thank You !! – SySyBy

Verwandte Themen