我有一个数据库MySQL
,我想要在D3.JS
中可视化。为了做到这一点,首先我要parse
在JSON
格式的数据,然后写一个从数据库中提取数据基本代码,并与D3.JS
可视化。我环顾四周,但找不到我想要的,因为我是D3.JS
的新手。如何从MySQL数据库中提取数据并使用D3.JS进行可视化?
我该如何做到这一点?任何帮助或线索表示赞赏。
我有一个数据库MySQL
,我想要在D3.JS
中可视化。为了做到这一点,首先我要parse
在JSON
格式的数据,然后写一个从数据库中提取数据基本代码,并与D3.JS
可视化。我环顾四周,但找不到我想要的,因为我是D3.JS
的新手。如何从MySQL数据库中提取数据并使用D3.JS进行可视化?
我该如何做到这一点?任何帮助或线索表示赞赏。
AFAIK有没有那么允许JavaScript直接连接到MySQL数据库的库。相反,考虑通过Web服务暴露你的数据(使用任意数量的服务器端技术:ASP.Net,PHP,Ruby on Rails的等),连载在响应您的数据,以JSON
简短的回答:Web服务。
基本上,你想使一个Web服务将返回JSON数据(例如)连接到d3.json()
电话。
我建议你使用Python来快速执行一些扩展功能SimpleHTTPServer
,或者使用诸如web2py之类的Web服务框架。
下面是一个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`
这会从一个叫tablename
与列的表返回时间戳和值的列表称为dateTimeTaken
和reading
。 然后,当你去阅读你的json文件时,你会使用下面的语法代码,你会在你的json中阅读的代码;
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
我所面临的问题与自己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";
}
你有什么建议我开始吗? – BaRd 2013-03-13 12:13:17
如果没有任何意义,您可能希望手动将数据从MySQL导出为.csv(类似phpmysqladmin有此选项,或者可以在命令行上执行),然后直接将.csv加载到D3中,该D3有一个csv加载工具。 (或者,如果使用制表符作为分隔符导出,请使用D3“tsv”导入。)它不是动态的,但是你会比起步回来学习一个全新的框架更快速地运行起来。 – 2013-03-13 12:58:05
@ChrisWilson我没有直接访问数据库,我会在实时可视化中使用它。 – BaRd 2013-03-13 13:10:00