2013-03-13 1 views
6

У меня есть база данных в MySQL, которую я хочу визуализировать в D3.JS. Для этого сначала хочу parse данных в формате JSON, затем напишите базовый код, который извлекает данные из базы данных и визуализирует с помощью D3.JS. Я смотрю вокруг, но не могу найти то, что хочу, так как я новичок в D3.JS.Как извлечь данные из базы данных mysql и визуализировать с помощью D3.JS?

Как я могу это достичь? Любая помощь или подсказка оцениваются.

ответ

1

AFAIK нет библиотек, которые позволяют javascript напрямую подключаться к базе данных MySQL. Вместо этого рассмотрите возможность публикации ваших данных через веб-службу (используя любое количество серверных технологий: ASP.Net, PHP, Ruby on Rails и т. Д.) И сериализуйте свои данные в JSON в ответе

+0

Что вы предлагаете мне начать? – BaRd

+2

Если это не имеет смысла, вы можете экспортировать свои данные вручную из MySQL в виде .csv (что-то вроде phpmysqladmin имеет этот параметр или вы можете сделать в командной строке), а затем напрямую загружать этот .csv в D3, который имеет инструмент загрузки csv. (Или, если вы экспортируете с помощью вкладок в качестве разделителя, используйте импорт D3 «tsv».) Это не динамично, но вы будете работать и работать намного быстрее, чем отступать, чтобы изучить совершенно новую структуру. –

+1

@ChrisWilson У меня нет прямого доступа к базе данных, и я буду использовать его при визуализации в реальном времени. – BaRd

4

Краткий ответ: веб-сервис.

В принципе, вы хотите создать веб-службу, которая будет возвращать данные json (например) для подключения к вызовам d3.json().

Я бы порекомендовал вам использовать Python, чтобы быстро сделать что-то, расширяющее SimpleHTTPServer, или зайти в рамки веб-сервиса, например web2py.

9

Ниже приведен скрипт php, который вы можете сохранить где-нибудь в виде файла (предположим, вы называете его «getdata.php») доступным из вашего HTML-файла с вашим кодом D3. При вызове он будет возвращать данные из вашей базы данных 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); 
?> 

Очевидно, что вам нужно будет ввести соответствующие данные для имени пользователя, пароля, хоста и базы данных. Вам также необходимо будет включить соответствующий запрос для ваших данных, чтобы он вернул то, что вы искали. Что-то вдоль линий (и это только догадка);

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

Какой бы возвращать список штампов времени и значений из таблицы под названием tablename с колоннами называется dateTimeTaken и reading. Затем, когда вы читаете в своем json-файле, вы должны использовать следующий синтаксис для кода, в котором вы будете читать в своем json;

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

Надеюсь, это близко к тому, что вы ищете. Я тестировал его локально, и все это работает.

Я собрал сообщение для локальной установки простого WAMP-сервера и настройки запроса в базе данных MySQL из d3.js здесь 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"; 
} 
Смежные вопросы