我有一個數據庫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