8

我有一个MySQL要在其中可视化的数据库D3.JS。为了做到这一点,首先我想要格式化parse数据JSON,然后编写一个基本代码,从数据库中提取数据并使用D3.JS. 我环顾四周,但找不到我想要的,因为我是新手D3.JS

我怎样才能做到这一点?任何帮助或线索表示赞赏。

4

6 回答 6

13

以下是一个 php 脚本,您应该可以将其保存为文件(假设您将其称为“getdata.php”),可以从您的 HTML 文件中访问,其中包含您的 D3 代码。调用时,它将以 json 格式从您的 MySQL 数据库返回数据(只要数据库服务器不在您的域之外);

<?php
    $username = "******"; 
    $password = "******";   
    $host = "******";
    $database="***dbase_name***";

    $server = mysql_connect($host, $user, $password);
    $connection = mysql_select_db($database, $server);

    $myquery = "
    query here
    ";

    $query = mysql_query($myquery);

    if ( ! $query ) {
        echo mysql_error();
        die;
    }

    $data = array();

    for ($x = 0; $x < mysql_num_rows($query); $x++) {
        $data[] = mysql_fetch_assoc($query);
    }

    echo json_encode($data);     

    mysql_close($server);
?>

显然,您需要为用户名、密码、主机和数据库输入适当的详细信息。您还需要为您的数据包含一个适当的查询,以便它返回您正在寻找的内容。类似的东西(这只是一个猜测);

SELECT `dateTimeTaken`, `reading` FROM `tablename`

这将从一个名为andtablename的列中返回一个时间戳和值的列表。然后,当您读取您的 json 文件时,您将对您将在 json 中读取的代码使用以下语法;dateTimeTakenreading

d3.json("getdata.php", function(error, data) {

希望这接近您正在寻找的内容。我已经在本地对其进行了测试,这一切似乎都有效..

我已经整理了一篇文章来介绍简单 WAMP 服务器的本地安装并在此处从 d3.js 对 MySQL 数据库设置查询http://www.d3noob.org/2013/02/using-mysql-database -as-source-of-data.html

这与在 d3 可视化中访问 MySQL 数据库的情况几乎相同

于 2013-03-13T17:07:10.227 回答
7

简短的回答:Web 服务。

基本上,您会想要创建一个 Web 服务,该服务将返回 json 数据(例如)以连接到d3.json()调用。

我建议您使用 Python 快速做一些扩展SimpleHTTPServer,或者使用 web 服务框架,例如web2py

于 2013-03-13T13:52:58.913 回答
1

AFAIK 没有任何库允许 javascript 直接连接到 MySQL 数据库。而是考虑通过 Web 服务公开您的数据(使用任意数量的服务器端技术:ASP.Net、PHP、Ruby on Rails 等)并在响应中将您的数据序列化为 JSON

于 2013-03-13T12:05:37.087 回答
1

我自己遇到了json_encode的问题,最后我写了自己的代码而不是json_encode。只需要设置 sql 和 yoru 连接信息。希望你觉得它有用。

$conn = new mysqli(DB_Host, DB_User, DB_Password, DB_Name) or die("Connection failed: " . $conn->connect_error);
$sql = "select  AID as id, deDate_Value as date, nterTime AS counter 
        from xxxx";

//Get the Date and store it in array
$records = array();
if ( $result=mysqli_query($conn,$sql) )
    while ( $obj=mysqli_fetch_object($result) )
        $records[] = $obj;

//echo in json format on screen       
echo "[";
$comma_1 = "";
foreach($records as $obj)
{
    echo $comma_1."{";
    $comma_2 = "";
    foreach($obj as $key => $value)
    {
        echo $comma_2.'"'.$key."\": \"". $value . "\"";
        $comma_2 = ", ";
    }
    echo "}";
    $comma_1 = ", \n";
}
于 2015-08-13T19:23:19.280 回答
0

为了让 d3.json 工作,我必须用以下方式调用它(我的 PHP 文件生成 JSON 数据):

d3.json("InventoryData.php").then(function(data){
  console.log(data);
});
于 2019-02-06T01:36:37.627 回答
0

您可以使用更流行的 jQuery,如下所示:

$.getJSON( "ajax/test.json", function( data ) {
console.log(data);
}
于 2019-02-27T15:18:16.593 回答