2

現在、D3.js を使用して円グラフを作成しています。データは MSSQL データベースに保存され、PHP を使用して JSON に変換されます。これがそれを行う私のコードです

<?php
// Server Name
$myServer = "SRVR";

// Database
$myDB = "TestDB";

// If using Windows Authentication, get rid of, "'UID'=>$myUser, 'PWD'=>$myPass, "
// Notice that the latest driver uses sqlsrv rather than mssql
$conn = sqlsrv_connect('Database'=>$myDB));

// Change TestDB.vwTestData to YOURDB.dbo.YOURTABLENAME
$sql = "SELECT col, SUM(num) AS 'value'
        FROM db
        GROUP BY col";

$result = array(); 

do {
    while ($row = sqlsrv_fetch_array($data, SQLSRV_FETCH_ASSOC)){
        $result[] = $row; 
    }
} while ( sqlsrv_next_result($data) );

// This will output in JSON format if you try to hit the page in a browser
echo json_encode($result);

sqlsrv_free_stmt($data);
sqlsrv_close($conn);
?>

これはうまくいきます。私はそれをテストしましたが、JSON を次のように出力します。

[{"col":null,"value":247.9042254},{"col":"value1","value":16.8151576061},{"col":"value2","value":235.4833175609},{"col":"value3","value":2316.072432028},{"col":"value4","value":8904.4001532729}]

これをどのようにグラフに入れることができますか?これが私の.jsコードです

(function() {
    var width = 960,
        height = 500,
        radius = Math.min(width, height) / 2;

    var color = d3.scale.ordinal()
        .range(["#98abc5", "#8a89a6", "#7b6888", "#6b486b"]);

    var arc = d3.svg.arc()
        .outerRadius(radius - 10)
        .innerRadius(0);

    var pie = d3.layout.pie()
        .sort(null)
        .value(function(d) { return // Something goes here I assume });

    var svg = d3.select("body").append("svg")
        .attr("width", width)
        .attr("height", height)
        .append("g")
        .attr("transform", "translate(" + width / 2 + "," + height / 2 + ")");

    d3.json("scripts/graphs/script.php", function(error, data) {
        data.forEach(function(d) {

            // Something needs to go here?

        });

        var g = svg.selectAll(".arc")
            .data(pie(data))
            .enter().append("g")
            .attr("class", "arc");

        g.append("path")
            .attr("d", arc)
            .style("fill", function(d) { return color(d.data.age); });

        g.append("text")
           .attr("transform", function(d) { return "translate(" + arc.centroid(d) + ")"; })
           .attr("dy", ".35em")
           .style("text-anchor", "middle")
           .text(function(d) { return d.data.age; });

    });
})();

誰かが私を助けてくれたら、それは素晴らしいことです。ありがとう!

4

2 に答える 2

0

あなたのコードで何が機能していないのか完全にはわかりませんが、次のような簡単なことを試すことができます:

d3.json("scripts/graphs/script.php", function(error, data) {
    data.forEach(function(d) {
        d.value = +d.value
    });

    var g...

あるいは、php スクリプトを呼び出して、返された json オブジェクトを変数に格納し、その変数を d3.json に渡すことはできますか?

于 2013-06-11T22:08:02.643 に答える