Помогите исправить Whoops\Exception\ErrorException: Invalid argument supplied for foreach() (2) - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

СвернутьПрикрепленные теги

Теги не найдены

Страница 1 из 1

Помогите исправить Whoops\Exception\ErrorException: Invalid argument supplied for foreach() (2)

#1 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 196
  • Регистрация: 16-Январь 18
  • Репутация: 1
  • IPB version:4.1.x
 

Отправлено 15 Август 2018 - 08:21

Здравствуйте. Разрабатывал модуль в обычной версии, потом добавил DEV версию, включил и появилась ошибка.

Цитата

Whoops\Exception\ErrorException: Invalid argument supplied for foreach() (2)
#0 /var/www/dev/data/www/dev.wc3.games/applications/sharedstats/sources/DbIntegration/Db.php(229): Whoops\Run->handleError(2, 'Invalid argumen...', '/var/www/dev/da...', 229, Array)
#1 /var/www/dev/data/www/dev.wc3.games/system/Helpers/Table/Table.php(485): IPS\sharedstats\DbIntegration\_Db->getRows(Array)
#2 /var/www/dev/data/www/dev.wc3.games/applications/sharedstats/modules/front/stats/recentGames.php(112): IPS\Helpers\Table\_Table->__toString()
#3 /var/www/dev/data/www/dev.wc3.games/system/Dispatcher/Controller.php(96): IPS\sharedstats\modules\front\stats\_recentGames->manage()
#4 /var/www/dev/data/www/dev.wc3.games/applications/sharedstats/modules/front/stats/recentGames.php(33): IPS\Dispatcher\_Controller->execute()
#5 /var/www/dev/data/www/dev.wc3.games/system/Dispatcher/Dispatcher.php(146): IPS\sharedstats\modules\front\stats\_recentGames->execute()
#6 /var/www/dev/data/www/dev.wc3.games/index.php(13): IPS\_Dispatcher->run()
#7 {main}


При этом, ошибка проявляется на стандартной версии без моих дополнений от другого разработчика, который пилил этот модуль еще на 4.1 а потом забросил. Соответственно, если он делал в DEV версии то у него всё работало, может быть это связанно из-за разницы в линейках IPS?

В стандартном режиме работы форума всё в порядке, ошибок нет.

Вложений


0

#2 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 348
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 341
  • IPB version:I have no IPB
 

Отправлено 15 Август 2018 - 08:53

В foreach должен быть массив или объект

Вообще код похож на \IPS\Helpers\Table\Db

Видимо автор часть кода скопировал из родительского класса. Посмотрите, как там сейчас сейчас.
0

#3 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 196
  • Регистрация: 16-Январь 18
  • Репутация: 1
  • IPB version:4.1.x
 

Отправлено 15 Август 2018 - 08:56

Да, код немного другой.

У меня:

        if( $this->onlySelected !== NULL )
        {
            foreach( $this->onlySelected as $column )
            {
                $selects[] = $column;
            }

            if( $this->group !== NULL )
            {
                $this->group = is_array( $this->group ) ? $this->group : array( $this->group );
                $this->group = array_unique( array_merge( $this->group, $this->onlySelected ) );
            }
        }
        else
        {
            if ( count( $this->joins ) )
            {
                foreach( $this->joins as $join )
                {
                    if ( isset( $join['select'] ) )
                    {
                        $selects[] = $join['select'];
                    }
                }
            }
        }


В исходнике:

		if ( count( $this->joins ) )
		{
			foreach( $this->joins as $join )
			{
				if ( isset( $join['select'] ) )
				{
					$selects[] = $join['select'];
				}
			}
		}

0

#4 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 196
  • Регистрация: 16-Январь 18
  • Репутация: 1
  • IPB version:4.1.x
 

Отправлено 15 Август 2018 - 08:58

Ну и ниже в некоторых места у меня добавлена переменная:

$this->group


Таким образом, у меня:

        /* Now get column headers */
        $query = \IPS\Db::i($this->connection)->select( $this->onlySelected ? implode( ', ', $selects ) : '*', $this->table, $where, NULL, array( 0, 1 ), $this->group );


В исходнике:

		/* Now get column headers */
		$query = \IPS\Db::i()->select( ( count( $selects ) ) ? $this->table . '.*, ' . implode( ', ', $selects ) : '*', $this->table, NULL, NULL, array( 0, 1 ) );

0

#5 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 348
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 341
  • IPB version:I have no IPB
 

Отправлено 15 Август 2018 - 09:04

$this->onlySelected не используется
$this->group тоже удалена в последних версиях
0

#6 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 196
  • Регистрация: 16-Январь 18
  • Репутация: 1
  • IPB version:4.1.x
 

Отправлено 15 Август 2018 - 09:07

Просто вставить код из новой версии Db? Зачем вообще идет подключение этого файла, если он есть в движке?

Сообщение изменено: TemKa_SD (15 Август 2018 - 09:08)

0

#7 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 348
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 341
  • IPB version:I have no IPB
 

Отправлено 15 Август 2018 - 09:14

Разница в
$query = \IPS\Db::i($this->connection)
$query = \IPS\Db::i()

В первом варианте подключается сторонняя бд
0

#8 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 196
  • Регистрация: 16-Январь 18
  • Репутация: 1
  • IPB version:4.1.x
 

Отправлено 15 Август 2018 - 09:15

А, понял. Спасибо.
0

#9 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 196
  • Регистрация: 16-Январь 18
  • Репутация: 1
  • IPB version:4.1.x
 

Отправлено 15 Август 2018 - 09:47

Я убрал код от $this->group, теперь не подключается к внешней БД, использует БД IPS.

SELECT count(*) FROM `stats_scoredgames`
IPS\Db\Exception: Table 'dev_ips.stats_scoredgames' doesn't exist (1146)
#0 /var/www/dev/data/www/dev.wc3.games/system/Db/Select.php(378): IPS\_Db->preparedQuery('/*IPS\\sharedsta...', Array, true)
#1 /var/www/dev/data/www/dev.wc3.games/system/Db/Select.php(440): IPS\Db\_Select->runQuery()
#2 /var/www/dev/data/www/dev.wc3.games/system/Db/Select.php(361): IPS\Db\_Select->rewind()
#3 /var/www/dev/data/www/dev.wc3.games/applications/sharedstats/sources/DbIntegration/Db.php(250): IPS\Db\_Select->first()
#4 /var/www/dev/data/www/dev.wc3.games/system/Helpers/Table/Table.php(485): IPS\sharedstats\DbIntegration\_Db->getRows(Array)
#5 /var/www/dev/data/www/dev.wc3.games/applications/sharedstats/modules/front/stats/recentGames.php(114): IPS\Helpers\Table\_Table->__toString()
#6 /var/www/dev/data/www/dev.wc3.games/system/Dispatcher/Controller.php(96): IPS\sharedstats\modules\front\stats\_recentGames->manage()
#7 /var/www/dev/data/www/dev.wc3.games/applications/sharedstats/modules/front/stats/recentGames.php(35): IPS\Dispatcher\_Controller->execute()
#8 /var/www/dev/data/www/dev.wc3.games/system/Dispatcher/Dispatcher.php(146): IPS\sharedstats\modules\front\stats\_recentGames->execute()
#9 /var/www/dev/data/www/dev.wc3.games/index.php(13): IPS\_Dispatcher->run()
#10 {main}


Не пойму, всё перекопал, везде всё норм.

Сообщение изменено: TemKa_SD (15 Август 2018 - 09:47)

0

#10 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 348
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 341
  • IPB version:I have no IPB
 

Отправлено 15 Август 2018 - 10:19

Значит что-то лишнее удалили.
0

#11 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 196
  • Регистрация: 16-Январь 18
  • Репутация: 1
  • IPB version:4.1.x
 

Отправлено 15 Август 2018 - 10:22

Блин, еще раз удалил, и всё в порядке. Бред. Ладно, вроде всё работает, большое спасибо.
0

Сообщить об этой теме:


Страница 1 из 1


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2018 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна