Почему мои данные SQL приводят к тому, что ось Y моей диаграммы переходит в бесконечность?

Я пытаюсь построить график, используя открытую флэш-диаграмму 2 в Drupal (ну, проблема не связана с Drupal или графиками и модулем диаграммы)

Для графика я извлекаю данные из базы данных MySQL. Ниже приведена функция, которая получает данные и генерирует график:

function my_module_charts_graphs_test() { global $user; $uname = $user->name; $sql = "Select total_calorie from health_calorie_consumed where name = '%s'"; $result = db_query($sql,$uname); while($row = db_fetch_array($result)) { $data[] = $row[total_calorie]; } $canvas = charts_graphs_get_graph('open-flash'); $canvas->title = "OpenFlashCharts Chart"; $canvas->type = "bar_3d"; $canvas->y_legend = "Y Legend"; $canvas->colour = '#808000'; $canvas->width = 700; $canvas->height = 300; $canvas->y_max=1000; $canvas->y_min=0; $canvas->y_step=100; $canvas->series = array( 'Some Value' => array(923,623,73,92,5,722,643,156,345), //'Page Views' => array_values($data), ); $canvas->x_labels = array('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'); // $canvas->x_labels = array_values($data); $out = $canvas->get_chart(); return $out; } 

Когда я запускаю код, я получаю приведенный ниже график:

Предварительный просмотр-1 http://img.ruphp.com/php/2hcfgqp.png

Таким образом, он отлично работает с локально объявленным массивом. Но мне нужно использовать массив из SQL. Следовательно, я раскомментирую и изменяю $canvas->c_labels и $canvas->series :

  $canvas->x_labels = array_values($data); //$data is array from sql query 'Page Views' => array_values($data) 

Теперь, к моему удивлению, я получаю приведенный ниже график:

Предварительный просмотр-2 http://img.ruphp.com/php/spb42g.png

Как мы видим, значения x_axis являются правильными в соответствии с запросом, но y_axis говорит те же значения, что и бесконечность. Почему он это делает?

Есть еще одно лицо этой странной проблемы. Первоначально я думал, что этот подход может не работать с $canvas->series , но я попробовал код ниже, и он отлично работал:

 $array = array(0,0,117,207,130,260,207); //these values are that are fetched from sql $canvas->series = array( 'some values'=>array_values($array), ); 

Таким образом, эта проблема «бесконечности» появляется только для массивов, извлеченных из SQL-запросов, и только для оси Y.

print_r($data) моего SQL выглядит следующим образом:

 Array ( [0] => 0 [1] => 0 [2] => 117 [3] => 207 [4] => 130 [5] => 260 [6] => 207 ) 

Ниже приведены некоторые другие комбинации, которые я пробовал для $ canvas-> series и не удалось …

 $test = implode(",",$data); // $data is the array fetched from sql $abcd = "array(".$test.")"; // array(0,0,117,207,130,260,207) $canvas->series=>array( 'some value'=>print($abcd), //i tried to print those values in standard format..:p ); 

 'some values'=>$abcd, // doesn't work..! 

 'some values'=>$data, // doesn't work.! 

Таким образом, я попробовал все, что мог, без везения.

вау .. Наконец-то я нашел ответ, благодаря форумам drupal .. 🙂

Как выясняется, это вопрос типа.! т.е., если я использую следующий код, он работает .. !!

 <?php $data[] = (int) $row[total_calorie]; ?> 

Я понятия не имею, почему это проблема типа. или причина, по которой это работает, но она решает мою проблему …! Спасибо всем за то, что помогли мне это решить .. 🙂

Попробуйте вставить

  $data = array(); 

До этого while($row = db_fetch_array($result))

И используйте только

  'Page Views' => $data