2013-03-13 24 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"; 
} 
相關問題