Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Перестал работать график highcharts (https://javascript.ru/forum/misc/78966-perestal-rabotat-grafik-highcharts.html)

nvrabotaru 29.11.2019 06:46

Перестал работать график highcharts
 
Добрый день.
График работал до тех пор, пока я не решил установить новую точность вывода данных через tooltip: {valueDecimals: 2}. Но не изучив вопрос, сделал то, что увидел первым в выдаче яндекса. написал tooltip: {valueDecimals: ,2}. После этого график перестал выводиться. И что я потом ни делал: возвращал старое значение, полностью скопировал из архива файл, который работал раньше. Ничего не помогло. Теперь в консоли выдает следующее:

Uncaught TypeError: Cannot read property 'legend' of undefined
    at HTMLButtonElement.<anonymous> (lazy.php:310)
    at HTMLButtonElement.dispatch (jquery-3.1.1.min.js:3)
    at HTMLButtonElement.q.handle (jquery-3.1.1.min.js:3)
(anonymous) @ lazy.php:310
dispatch @ jquery-3.1.1.min.js:3
q.handle @ jquery-3.1.1.min.js:3

рони 29.11.2019 07:41

nvrabotaru,
код запуска как сейчас выглядит?

nvrabotaru 29.11.2019 07:55

Вот код:
https://yadi.sk/d/SkT5nRIBvQF3UA

А это подключаемый файл config.php:

function gettoseries($f,$selectotypo){
  $series="";
  $result = mysql_query("select name,nav,yaxis from dataschema where 1=1 and flot = ".$f." order by rid");
  $num_rows = mysql_num_rows($result);
  for($i=0;$i < $num_rows;$i++) {
    $row=mysql_fetch_array($result);
    $addon = '';
    if($row['yaxis'] <> 0) { $addon = ', yAxis: '.$row['yaxis']; }
    if($selectotypo=='lazy'){
        $series .= '{name: \''.$row['name'].'\', data: data['.$i.'], showInNavigator: '.$row['nav'].', tooltip: {valueDecimals: 2}'.$addon.'},'."\n";
    }
    if($selectotypo=='live'){
        $series .= '{name: \''.$row['name'].'\', data: requestDataZ('.$i.')'.$addon.'},'."\n";
    }
  }
  return $series;
}
 
function gettoyaxisparams($f){
  $yaxisparams="";
  $result = mysql_query("select name,nav,yaxis from dataschema where 1=1 and flot = ".$f." order by yaxis,rid");
  $num_rows = mysql_num_rows($result);
  $yaxis_cur = -1;
  for($i=0;$i < $num_rows;$i++) {
    $row=mysql_fetch_array($result);
    if($yaxis_cur == $row['yaxis']){
      $yaxisparams .= '<tr><td>'.$row['name'].'</td><td> </td><td></td><td></td><td></td></tr>';
    } else {
      $yaxis_cur++;
      $yaxisparams .= '<tr><td>'.$row['name'].'</td><td> </td><td>min</td><td><input type="text" value="0" id="val'.$yaxis_cur.'min"/></td><td>max</td><td><input type="text" value="1000" id="val'.$yaxis_cur.'max"/></td></tr>';
    }
  }
  return $yaxisparams;
}
 
function gettoselectolisto($u,$f){
  $selectlist="";
  //$result = mysql_query("select distinct flot from dataschema order by id");
  $result = mysql_query("select distinct d.flot from dataschema d where not exists (select 1 from acl a where a.username like '%".$u."%') union all select distinct d.flot from dataschema d inner join acl a on  a.flotnum = d.flot and a.username like '%".$u."%' where exists (select 1 from acl aa where aa.username like '%".$u."%')");
  $num_rows = mysql_num_rows($result);
  for($i=0;$i < $num_rows;$i++) {
    $row=mysql_fetch_array($result);
    $selected = '';
    if($f == $row["flot"]) $selected='selected';
    $selectlist .= '<option '.$selected.' value="'.$row["flot"].'">'.$row["flot"].'</option>';
  }
  return $selectlist;
}

рони 29.11.2019 08:14

nvrabotaru,
не могу помочь, может кто-то другой подскажет.

nvrabotaru 29.11.2019 08:15

Цитата:

Сообщение от рони (Сообщение 516434)
nvrabotaru,
не могу помочь, может кто-то другой подскажет.

Жаль. Оооочень нужно!!!

laimas 29.11.2019 08:33

Что у вас с кодировкой?

Выбрать сохраненную работу

nvrabotaru 29.11.2019 08:41

Цитата:

Сообщение от laimas (Сообщение 516437)
Что у вас с кодировкой?

Выбрать сохраненную работу

С кодировкой все нормально, это просто в этот файл криво выгрузилось.
Вот нормальный https://yadi.sk/d/sWz7BZvu2Cp2SQ

laimas 29.11.2019 09:11

Не знаю каким образом некая точность может быть и может ли быть причиной проблем, не приходилось ни разу использовать данный инструмент, но ругается то на отсутствие определения legend. С JS нужно разбираться, а что касается РНР, то:

mysql - это пора забыть, либо mysqli, либо PDO. В последних версиях расширение mysql вообще вырезано.

$num_rows = mysql_num_rows($result);

а затем

for($i=0;$i < $num_rows;$i++) {

это лишнее, достаточно и

while ($row = mysql_fetch_assoc($result)) { ... }

А mysql_fetch_array($result), это запрашивать лишнее и не нужное вкупе с нужным. Если уж использовать эту функцию, то указывать какой набор нужен.

like '%".$u."%') - неизвестно, что ищется, но данные для этой функции необходимо экранировать функцией addCslashes для символов % и _

И вообще, если аргументы функций подставляемые в запрос, это данные извне и не экранированы, то это прямой путь к инъекции запросов.

nvrabotaru 29.11.2019 10:20

Цитата:

Сообщение от laimas (Сообщение 516442)
Не знаю каким образом некая точность может быть и может ли быть причиной проблем, не приходилось ни разу использовать данный инструмент, но ругается то на отсутствие определения legend. С JS нужно разбираться, а что касается РНР, то:

mysql - это пора забыть, либо mysqli, либо PDO. В последних версиях расширение mysql вообще вырезано.

$num_rows = mysql_num_rows($result);

а затем

for($i=0;$i < $num_rows;$i++) {

это лишнее, достаточно и

while ($row = mysql_fetch_assoc($result)) { ... }

А mysql_fetch_array($result), это запрашивать лишнее и не нужное вкупе с нужным. Если уж использовать эту функцию, то указывать какой набор нужен.

like '%".$u."%') - неизвестно, что ищется, но данные для этой функции необходимо экранировать функцией addCslashes для символов % и _

И вообще, если аргументы функций подставляемые в запрос, это данные извне и не экранированы, то это прямой путь к инъекции запросов.

Это другая история. Сейчас мне нужно, чтобы выводился график.

laimas 29.11.2019 10:24

В отладчике строку 310 страницы смотреть, с нее и начинать анализ, а в приложении первое обращение к этому свойству в строке 173.


Часовой пояс GMT +3, время: 06:40.