我有一个MySQL
要在其中可视化的数据库D3.JS
。为了做到这一点,首先我想要格式化parse
数据JSON
,然后编写一个基本代码,从数据库中提取数据并使用D3.JS
. 我环顾四周,但找不到我想要的,因为我是新手D3.JS
。
我怎样才能做到这一点?任何帮助或线索表示赞赏。
我有一个MySQL
要在其中可视化的数据库D3.JS
。为了做到这一点,首先我想要格式化parse
数据JSON
,然后编写一个基本代码,从数据库中提取数据并使用D3.JS
. 我环顾四周,但找不到我想要的,因为我是新手D3.JS
。
我怎样才能做到这一点?任何帮助或线索表示赞赏。
以下是一个 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 中读取的代码使用以下语法;dateTimeTaken
reading
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 数据库的情况几乎相同
简短的回答:Web 服务。
基本上,您会想要创建一个 Web 服务,该服务将返回 json 数据(例如)以连接到d3.json()
调用。
我建议您使用 Python 快速做一些扩展SimpleHTTPServer
,或者使用 web 服务框架,例如web2py。
AFAIK 没有任何库允许 javascript 直接连接到 MySQL 数据库。而是考虑通过 Web 服务公开您的数据(使用任意数量的服务器端技术:ASP.Net、PHP、Ruby on Rails 等)并在响应中将您的数据序列化为 JSON
我自己遇到了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";
}
为了让 d3.json 工作,我必须用以下方式调用它(我的 PHP 文件生成 JSON 数据):
d3.json("InventoryData.php").then(function(data){
console.log(data);
});
您可以使用更流行的 jQuery,如下所示:
$.getJSON( "ajax/test.json", function( data ) {
console.log(data);
}