Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как подругажать те данные которые находятся в базе
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Как подругажать те данные которые находятся в базе

Страниц (1): [1]
 

1. No0k - 03 Сентября, 2014 - 21:36:21 - перейти к сообщению
Начал пользоваться Google Chars и у меня в базе хранятся с какой ОС заходи пользователи, мне нужно как-то подсчитать количество людей данной ОС и вывести массив в JS
Вот код:
CODE (html):
скопировать код в буфер обмена
  1. <script type="text/javascript" src="https://www.google.com/jsapi"></script>
  2.                                         <script type="text/javascript">
  3.                                           google.load("visualization", "1", {packages:["corechart"]});
  4.                                           google.setOnLoadCallback(drawChart);
  5.                                           function drawChart() {
  6.                                                 var data = google.visualization.arrayToDataTable([
  7.                                                   ['Task', 'Hours per Day'],
  8.                                                   ['Windows',     11],
  9.                                                   ['Linux',      2],
  10.                                                   ['Apple',  2]
  11.                                                 ]);
  12.  
  13.                                                 var options = {
  14.                                                   title: 'Операционные системы:',
  15.                                                   pieHole: 0.4,
  16.                                                 };
  17.  
  18.                                                 var chart = new google.visualization.PieChart(document.getElementById('donutchart'));
  19.                                                 chart.draw(data, options);
  20.                                           }
  21.                                         </script>
  22.                                         <div id="donutchart" style="width: 900px; height: 500px;"></div>


Как мне сюда:
CODE (html):
скопировать код в буфер обмена
  1. ['Windows',     11],
  2.  ['Linux',      2],
  3. ['Apple',  2]

Вставить данные которые загружаться из таблицs stats_hosts и там строка platform в ней хрянаться ОС(windows, linux и тд). Подскажите пожалуйста.
2. Viper - 04 Сентября, 2014 - 08:45:45 - перейти к сообщению
No0k отдаете массив вида
PHP:
скопировать код в буфер обмена
  1. $data = array(
  2.         array('Task', 'Hours per Day'),
  3.         array('Windows', 11),
  4.         array('Linux', 2),
  5.         array('Apple', 2)
  6. );


Потом в JS подставляете
CODE (htmlphp):
скопировать код в буфер обмена
  1. var data = google.visualization.arrayToDataTable(<?php echo json_encode($data); ?>);
3. No0k - 04 Сентября, 2014 - 21:04:19 - перейти к сообщению
Viper пишет:
No0k отдаете массив вида
PHP:
скопировать код в буфер обмена
  1. $data = array(
  2.         array('Task', 'Hours per Day'),
  3.         array('Windows', 11),
  4.         array('Linux', 2),
  5.         array('Apple', 2)
  6. );


Потом в JS подставляете
CODE (htmlphp):
скопировать код в буфер обмена
  1. var data = google.visualization.arrayToDataTable(<?php echo json_encode($data); ?>);
Спасибо большое, так и сделал, такой вопрос. Это безопасно?
4. Viper - 05 Сентября, 2014 - 08:24:56 - перейти к сообщению
No0k пишет:
Это безопасно?
да.
5. No0k - 06 Сентября, 2014 - 12:40:03 - перейти к сообщению
Еще вопросик, я замутил функцию:
PHP:
скопировать код в буфер обмена
  1. <?PHP static function paep($div_name, $title, $whidth, $height, $user_id) {
  2.                         global $sql;
  3.                         $id = $sql->query("SELECT `id` FROM `static_site` WHERE `id_user` = '$user_id'")->result();
  4.                         $sql->query("SELECT `platform`, COUNT(`platform`) AS cnt FROM `stats_hosts`  WHERE `id_site` = '$id' GROUP BY `platform`");
  5.                         while ($OS = $sql->fetch()){
  6.                                 echo $data[] = Array($OS['platform'], $OS['cnt']);
  7.                         }
  8.                         ?>
  9.                         <script type="text/javascript" src="https://www.google.com/jsapi"></script>
  10.                         <script type="text/javascript">
  11.                                 google.load('visualization', '1.0', {'packages':['corechart']});
  12.  
  13.                                 // Set a callback to run when the Google Visualization API is loaded.
  14.                                 google.setOnLoadCallback(drawChart);
  15.  
  16.                                 // Callback that creates and populates a data table,
  17.                                 // instantiates the pie chart, passes in the data and
  18.                                 // draws it.
  19.                                 function drawChart() {
  20.                                         var data = google.visualization.arrayToDataTable(<?PHP echo json_encode($data); ?>);
  21.                                         // Set chart options
  22.                                         var options = {'title':'<?PHP echo $title; ?>', 'width':<?PHP echo $whidth;?>, 'height':<?PHP echo $height;?>};
  23.  
  24.                                         // Instantiate and draw our chart, passing in some options.
  25.                                         var chart = new google.visualization.PieChart(document.getElementById('<?PHP echo $div_name; ?>'));
  26.                                         chart.draw(data, options);
  27.                                 }
  28.                         </script>
  29.                         <?PHP
  30.                         return '<div id="'.$div_name.'"></div>';
  31.                 }
  32. ?>
  33.  

Так все работает, только вот сюда:
PHP:
скопировать код в буфер обмена
  1. <?PHP echo json_encode($data); ?>

Данные передаются вот так:
PHP:
скопировать код в буфер обмена
  1.  var data = google.visualization.arrayToDataTable([["Windows","3"]]);


А надо: ['Windows', 3]

Подскажите в чем косяк?
6. Viper - 06 Сентября, 2014 - 19:58:35 - перейти к сообщению
No0k пишет:
Подскажите в чем косяк?

PHP:
скопировать код в буфер обмена
  1. $arr1 = array(array('foo', 1));
  2. $arr2 = array('bar', 2);
  3.  
  4. echo '<pre>';
  5. echo json_encode($arr1);
  6. echo '<br />';
  7. echo json_encode($arr2);
  8. echo '</pre>';

Смотрите на разницу.
7. No0k - 07 Сентября, 2014 - 15:49:26 - перейти к сообщению
Viper пишет:
No0k пишет:
Подскажите в чем косяк?

PHP:
скопировать код в буфер обмена
  1. $arr1 = array(array('foo', 1));
  2. $arr2 = array('bar', 2);
  3.  
  4. echo '<pre>';
  5. echo json_encode($arr1);
  6. echo '<br />';
  7. echo json_encode($arr2);
  8. echo '</pre>';

Смотрите на разницу.


Паосмотрел, попробовал - не получилось. Все равно число берется в кавычки. Недовольство, огорчение
8. Viper - 07 Сентября, 2014 - 17:20:43 - перейти к сообщению
Тю... тупанул... Вам надо чтобы там int был...

Бред вот этот уберите
PHP:
скопировать код в буфер обмена
  1. echo $data[] = Array($OS['platform'], $OS['cnt']);


PHP:
скопировать код в буфер обмена
  1. $data[] = array($OS['platform'], (int)$OS['cnt']);

или
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?PHP echo json_encode($data, JSON_NUMERIC_CHECK); ?>
зависит от версии php
9. No0k - 08 Сентября, 2014 - 22:29:46 - перейти к сообщению
Viper пишет:
Тю... тупанул... Вам надо чтобы там int был...

Бред вот этот уберите
PHP:
скопировать код в буфер обмена
  1. echo $data[] = Array($OS['platform'], $OS['cnt']);


PHP:
скопировать код в буфер обмена
  1. $data[] = array($OS['platform'], (int)$OS['cnt']);

или
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?PHP echo json_encode($data, JSON_NUMERIC_CHECK); ?>
зависит от версии php
Вы мне дали очень много материала и я вам очень благодарен. Все получилось и опять я матерю гугл за то что его чарты не умеют работать с двойными кавычками (""), т.е. надо что бы было: ['Windows',4], а не ["Windows",4] Закатив глазки Закатив глазки Закатив глазки

 

Powered by ExBB FM 1.0 RC1