2013-03-13 18 views
6

私はD3.JSで視覚化したいデータベースMySQLを持っています。これを行うには、最初にparseのデータをJSON形式にして、データベースからデータを取り出してD3.JSで視覚化するための基本コードを書きます。私は周りを見回しますが、私がD3.JSに新しいから欲しいものを見つけることができませんでした。mysqlデータベースからデータを引き出し、D3.JSで視覚化する方法は?

どうすれば実現できますか?どんな助けや手がかりもありがとう。

答えて

1

AFAIK javascriptがMySQLデータベースに直接接続できるライブラリはありません。代わりに、Webサービス(ASP.Net、PHP、Ruby on Railsなど)の任意の数のWebサービスを使用してデータを公開し、応答でJSONにデータをシリアライズすることを検討してください。

+0

私にはどうすればお勧めしますか? – BaRd

+2

それが意味をなさない場合は、MySQLから.csv(手動でphpmysqladminにこのオプションがあるかコマンドラインで行うことができます)のデータを手動でエクスポートし、その.csvをD3に直接ロードすることができます。 CSVローディングツール。 (または、タブを区切り文字として使用してエクスポートする場合は、D3の "tsv"インポートを使用します。)これは動的ではありませんが、まったく新しいフレームワークを学ぶために足を踏み入れるよりはるかに速く立ち上がるでしょう。 –

+1

@ChrisWilson私はデータベースに直接アクセスすることはできません。これをリアルタイムの視覚化で使用します。 – BaRd

4

短い回答:Webサービス。

基本的には、d3.json()コールに接続するためのjsonデータ(たとえば)を返すWebサービスを作成したいとします。

SimpleHTTPServerをすぐに拡張するにはPythonを使用するか、web2pyなどのWebサービスフレームワークを使用することをお勧めします。

9

以下は、HTMLファイルからD3コードを使ってファイル(getdata.phpと呼んでいます)にアクセスできるようにする必要のあるPHPスクリプトです。呼び出されると、MySQLデータベースのデータがjson形式で返されます(データベースサーバがあなたのドメイン外にない限り)。

<?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); 
?> 

明らかに、ユーザー名、パスワード、ホスト、データベースの適切な詳細を入力する必要があります。また、探しているものが返されるように、データの適切なクエリを含める必要があります。の線に沿って何か(これは単なる推測です);列のtablenameというテーブルからのタイムスタンプと値のリストを返します

SELECT `dateTimeTaken`, `reading` FROM `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"; 
} 
関連する問題