2013-03-13 86 views
6

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

我该如何做到这一点?任何帮助或线索表示赞赏。

回答

1

AFAIK有没有那么允许JavaScript直接连接到MySQL数据库的库。相反,考虑通过Web服务暴露你的数据(使用任意数量的服务器端技术:ASP.Net,PHP,Ruby on Rails的等),连载在响应您的数据,以JSON

+0

你有什么建议我开始吗? – BaRd 2013-03-13 12:13:17

+2

如果没有任何意义,您可能希望手动将数据从MySQL导出为.csv(类似phpmysqladmin有此选项,或者可以在命令行上执行),然后直接将.csv加载到D3中,该D3有一个csv加载工具。 (或者,如果使用制表符作为分隔符导出,请使用D3“tsv”导入。)它不是动态的,但是你会比起步回来学习一个全新的框架更快速地运行起来。 – 2013-03-13 12:58:05

+1

@ChrisWilson我没有直接访问数据库,我会在实时可视化中使用它。 – BaRd 2013-03-13 13:10:00

4

简短的回答:Web服务。

基本上,你想使一个Web服务将返回JSON数据(例如)连接到d3.json()电话。

我建议你使用Python来快速执行一些扩展功能SimpleHTTPServer,或者使用诸如web2py之类的Web服务框架。

9

下面是一个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与列的表返回时间戳和值的列表称为dateTimeTakenreading。 然后,当你去阅读你的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

这几乎是同样的情况Accessing MySQL database in d3 visualization

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"; 
} 
相关问题