4

d3とMySQLについて助けが必要です。以下は私の質問です:

MySQLにデータを保存しています(例:キーワードとその頻度)。ここで、d3を使用して視覚化します。私のd3の知識に関する限り、入力としてjsonファイルが必要です。私の質問は、d3スクリプトからこのMySQLデータベースにアクセスするにはどうすればよいですか?私が考えることができる1つの方法は次のとおりです。

  1. Pythonを使用して、データベースに接続し、データをjson形式に変換します。これをいくつかの.jsonファイルに保存します。

  2. d3で、このjsonファイルを入力として読み取り、視覚化に使用します。

d3を使用してMySQLのデータを.json形式に直接変換する他の方法はありますか?d3からMySQLに接続してデータを読み取ることはできますか?

どうもありがとう!

4

3 に答える 3

6

以下は、D3 コードを含む HTML ファイルからアクセス可能なファイル (「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 ( ! $myquery ) {
        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);
?>

明らかに、ユーザー名、パスワード、ホスト、およびデータベースの適切な詳細を入力する必要があります。また、「dateTimeTaken」と「reading」のデータが返されるように、データに適切なクエリを含める必要があります。次のようなものです (これは推測にすぎません)。

SELECT `dateTimeTaken`, `reading` FROM `tablename`

次に、json ファイルを読み込むときは、json を読み込むコードに次の構文を使用します。

d3.json("getdata.php", function(error, data) {

うまくいけば、それはあなたが探しているものに近いです. 私はそれをローカルでテストしましたが、すべてうまくいくようです..

シンプルな WAMP サーバーのローカル インストールと、d3.js からの MySQL データベースへのクエリのセットアップについて説明する投稿をまとめました。 -as-source-of-data.html

于 2013-02-04T08:57:32.540 に答える
1

d3はクライアント側で実行されるjavascriptライブラリですが、MySQLデータベースはサーバー側で実行されることになっています。
d3json形式への変換はもちろん、MySQLデータベースに接続できません。あなたがそれが可能であると思った方法(ステップ1と2)はあなたがすべきことです。

于 2013-02-04T02:46:48.987 に答える
1

「MySqlデータベースでd3を使用する」というタイトルのJerome Cukierによる詳細なチュートリアルに出くわしました。あなたの質問に答えているようです: http://www.jeromecukier.net/blog/2012/01/02/using-d3-with-a-mysql-database/

つまり、サーバー側のデータベースからデータを取得するには、php (または perl、または python) スクリプトが必要です。

于 2013-03-27T01:23:12.513 に答える