Invalid argument supplied for foreach()

Программа предназначена для обработки статистики (SMDR) мини АТС Panasonic о совершенных звонках.
INFINUM
Сообщения: 6

Invalid argument supplied for foreach()

Сообщение#1 » 08 ноя 2020 15:18

Такая ошибка в логах PHP:

Код: Выделить всё

08-Nov-2020 15:03:14] PHP Warning:  Invalid argument supplied for foreach() in C:\OpenServer\domains\pbxstat\mainslidebar.php on line 30

Версия PHP 5.2

Аватара пользователя
zldo
admin
Сообщения: 109
Контактная информация:

Re: Invalid argument supplied for foreach()

Сообщение#2 » 08 ноя 2020 15:35

По сути это не ошибка а предупреждение (PHP Warning) в данном конкретном случае на роботу влиять не будет.

INFINUM
Сообщения: 6

Re: Invalid argument supplied for foreach()

Сообщение#3 » 08 ноя 2020 15:47

zldo писал(а):По сути это не ошибка а предупреждение (PHP Warning) в данном конкретном случае на роботу влиять не будет.

исправить это можно не отключая вывод предупреждений целиком? Может проверку какую-то дописать, типа того:

Код: Выделить всё

if ( is_array( $numclass ) ){
foreach ($numclass as $key => $value){
        if($key == $gfilters['numclass']) $numclass_sel .= "<option selected value='".$key."'>".$value."</option>";
        else $numclass_sel .= "<option value='".$key."'>".$value."</option>";
    }}

Я в PHP просто 0.

Аватара пользователя
zldo
admin
Сообщения: 109
Контактная информация:

Re: Invalid argument supplied for foreach()

Сообщение#4 » 08 ноя 2020 16:08

Можно и так. Правильнее думаю будет добавить инициализацию массива в начале этого файла - $numclass = array():

Код: Выделить всё

<? // Обработка глобальных фильтров
require_once 'gfilters.php';
global $gfilters;
global $old_gfilters;

    $query = 'SELECT * FROM ats';
    $res = mysql_query($query);
   
   $ats = array();
    while ($row = mysql_fetch_array($res)) {
      $ats[$row['pbxid']] = $row['dname']; 
    }
    mysql_free_result($res);
   
    $query = 'SELECT * FROM numclass';
    $res = mysql_query($query);
   
    $numclass = array();
    while ($row = mysql_fetch_array($res)) {
      $numclass[$row['numlike']] = $row['classname']; 
    }
    mysql_free_result($res);

INFINUM
Сообщения: 6

Re: Invalid argument supplied for foreach()

Сообщение#5 » 08 ноя 2020 16:21

Сработало! :yahoo:
И сайдбар на место встал сразу, а то внизу был. Спасибо большое!
А почему Вы бросили развитие этого проекта?

Аватара пользователя
zldo
admin
Сообщения: 109
Контактная информация:

Re: Invalid argument supplied for foreach()

Сообщение#6 » 08 ноя 2020 16:26

По идее в схеме БД должны были присутствовать классы номеров и эта ошибка не появлялась.
Попробую у себя найди дамп живой от этой БД...

INFINUM
Сообщения: 6

Re: Invalid argument supplied for foreach()

Сообщение#7 » 17 ноя 2020 17:12

zldo писал(а):По идее в схеме БД должны были присутствовать классы номеров и эта ошибка не появлялась.
Попробую у себя найди дамп живой от этой БД...

Действительно, эта колонка у меня пуста. Вероятно, АТС не выводит такую информацию.
pbxstat.png

Аватара пользователя
zldo
admin
Сообщения: 109
Контактная информация:

Re: Invalid argument supplied for foreach()

Сообщение#8 » 18 ноя 2020 10:12

Классы это по сути некий шаблон характеризующий номер (внутренний/городской/сотовый/ и т.д.). Редактор классов насколько я помню присутствует в разделе администрирования. Это поле удобно при формировании статистики и фильтрации.
Синтаксис шаблонов соответствует синтаксису оператора LIKE в MySQL.

INFINUM
Сообщения: 6

Re: Invalid argument supplied for foreach()

Сообщение#9 » 20 ноя 2020 10:07

zldo писал(а):Классы это по сути некий шаблон характеризующий номер (внутренний/городской/сотовый/ и т.д.). Редактор классов насколько я помню присутствует в разделе администрирования. Это поле удобно при формировании статистики и фильтрации.
Синтаксис шаблонов соответствует синтаксису оператора LIKE в MySQL.

Работает! :yahoo:
pbxstat1.png

А для чего поле "приоритет"?

Вернуться в «PBXStat»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость