2015-12-15 2 views
1

Я борюсь с получением данных для заполнения моей гистограммы MorrisJS с использованием данных из моей базы данных mySQL. Может ли кто-нибудь помочь в его отображении на моей гистограмме?morrisJS Сгруппировка диаграмм диаграммы с использованием PHP и mysql

Ниже приведен мой текущий код и страницы.

<?php 
$link = mysql_connect('127.0.0.1', 'root', 'password') 
    or die('Could not connect: ' . mysql_error()); 

mysql_select_db('database') or die('Could not select database'); 

$dataArray=array(); 

//get data from database 
$sql="SELECT * FROM table"; 
$result = mysql_query($sql) or die('Query failed: ' . mysql_error()); 
if ($result) { 
    while ($row = mysql_fetch_assoc($result)) { 
     $Version=$row["Version"]; 
     $Live=$row["Live"]; 
     $Preprod=$row["Preprod"]; 
     //add to data areray 
     $dataArray[$Version]=$count; 
    } 
} 
?> 

index.php (главная страница)

div id="morris-bar-chart"></div> 
    <?php include ('database.php') ?> 

<script src="../js/morris-data.js"></script> <----- script on index.php page linking to morris chart page. 

morris.js страница

Morris.Bar({ 
    element: 'morris-bar-chart', 
    data: [{ 


while ($row = mysql_fetch_assoc($result)) { 
     y:<?=$row['versions']?>, 
     Live:<?=$row['Live']?>, 
     PreProd: <?=$row['Preprod']?> 
    }, { 

      ], 
    xkey: 'y', 
    ykeys: ['Live', 'PreProd'], 
    labels: ['Live', 'PreProd'], 
    hideHover: 'auto', 
    resize: true 
}); 

Надеется, что это все имеет смысл. Заранее спасибо.

ответ

1

Я думаю, что это проблема.

Morris рассчитывает данные по линии, например. { y: '2007', a: 75, b: 65 },

Я немного скорректировал часть кода PHP в сценарии morris.js.

  • Как правило, вы не можете выполнять PHP в JS-файле. Кроме того, когда вы добавили правило на сервер, эти JS-файлы также должны обрабатываться PHP.

  • Обычный способ получения данных - это запрос AJAX к скрипту PHP, который возвращает json_encoded($result). А затем добавьте его в Morris с функцией setData().

  • Но это тоже должно работать: сгенерировать JS-файл с помощью PHP. Вы можете переименовать morris-data.js в morris-data.js.php. Файл нуждается в <?php header("Content-type: application/javascript"); ?> вверху. А затем настройте <script, чтобы соответствовать новому имени файла.

Файл morris-data.js.php

<?php header("Content-type: application/javascript"); ?> 

Morris.Bar({ 
    element: 'morris-bar-chart', 
    data: [   
    <?php 
     while ($row = mysql_fetch_assoc($result)) { 

     // output a line like: 
     // { y: '123', Live: 123, PreProd: 123 }, 
     sprintf(
      "{ y: '%s', Live: %s, PreProd: %s },", 
      $row['version'], 
      $row['Live'], 
      $row['Preprod'] 
     ); 
     } 
    ?> 
    ], 
    xkey: 'y', 
    ykeys: ['Live', 'PreProd'], 
    labels: ['Live', 'PreProd'], 
    hideHover: 'auto', 
    resize: true 
}); 

, который должен оказывать нечто подобное (см также)

data: [  
    { y: '1.2.3', Live: 20, PreProd: 23 }, 
    { y: '1.2.4', Live: 30, PreProd: 24 }, 
    { y: '1.2.5', Live: 40, PreProd: 25 }, 
    { y: '1.2.6', Live: 50, PreProd: 26 } 
], 

(я не уверен, что последняя часть в файле database.php предполагается Возможно, вы можете отказаться от этого (код внутри if($result)). Но, возможно, его для расчетов ..)

+0

Привет, Дженс, Спасибо за ваш ответ. Я попробовал ваше предложение сохранить данные не могут передать мои данные mysql в диаграмму. Насколько я понимаю, код, который вы предоставили, должен работать. Я предполагаю, что это может быть sql, который вызывает проблему. У вас есть идеи? Еще раз спасибо –

+0

Привет, Мэтью, SQL выглядит довольно просто. Просто соединение и запрос на выбор из таблицы. Вы можете добавить 'var_dump()', чтобы проверить, что у вас есть '$ result' после (' $ result = mysql_query (..) '). - Вы также можете скопировать выходной цикл строки (в то время как row sprintf) и поместить его непосредственно после mysq_query() - для тестирования генерации и отладки контента в MySQL. - Я все еще думаю, что PHP не выполняется внутри JS. Вы пытались переименовать JS-файл в 'morris-data.js.php'? –

+0

Да, я пытался переименовать файл, но затем график исчезает с экрана. Что для меня означает, что индексная страница не может найти страницу ... Я дам var_dump –

Смежные вопросы