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


избирательная работа с записями в базе


Сообщений в теме: 30

#1 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 06 Август 2012 - 11:36

После обновления ревизии часть записей перестала отображаться. При клике выводится сообщение
Cannot use string offset as an array in /home/...../public_html/cb/include/functions1.php(250) : eval()'d code on line 23
Просмотр содержимого полей в рабочих и не рабочих записях непосредственно в таблице через phpmyadmin ничего не дало. Отключение всех вычислений в полях также не привело к положительным результатам.
Записи не работают в различных таблицах.
В чем может быть причина?

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#2 Гость_Roman_*

  • Гости

Отправлено 06 Август 2012 - 12:43

А подтаблицы у записи присутствуют? Может в них вычисления дают ошибку? Потому что, судя по тексту ошибки, она возникает в результате вычисления.

#3 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 06 Август 2012 - 13:11

В одном месте причина оказалась в том, что срабатывало вычисление во вложенной таблице. Странно то, что оно должно отрабатывать при отображение определенного поля, которое в табличном виде не выводится. Ошибку вызывает блок, содержащий
$line['Заказчик']['Поле1']['Поле1']['ID']
.
В другом - причины не выявил. Таблица не открывается совсем. Вычисления отключал - результатов не дало.
Какие изменения вносились? Что корректировали в кодах? Дыма без огня не бывает.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#4 Гость_Roman_*

  • Гости

Отправлено 06 Август 2012 - 14:02

Оставьте заявку в техподдержку с прикреплённым бэкапом или с доступом к программе, попробуем разобраться.

#5 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 06 Август 2012 - 14:17

Просмотр сообщенияandibrag (06 Август 2012 - 13:11) писал:

В другом - причины не выявил. Таблица не открывается совсем. Вычисления отключал - результатов не дало.
Причина оказалась в поле типа связь, значения которого вычисляются
$line['Клиент']=$line['Заказ']['Заказчик']['ID'];
Ранее это также не вызывало ошибки.
Бекап пришлю.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#6 Гость_Roman_*

  • Гости

Отправлено 06 Август 2012 - 14:35

Попробуйте вместо ['ID'] использовать ['raw'].

#7 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 06 Август 2012 - 14:50

Использование raw ни в первом , ни во втором случае ничего не дало.
Второй вылечил изменением срабатывания вычисления - убрал при отображении поля, поставил - при сохранении в таблице
Тем не менее срабатывание вычисления при отображении при отсутствии поля - это баг.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#8 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 06 Август 2012 - 18:45

Еще одна обнаруженная проблема. Строка
$new_id = insert_query(array(), "Договор");
в дополнительном действии вызывает ошибку.
Такое чувство, что любое обращение к ID вызывает ошибку.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#9 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 07 Август 2012 - 10:50

А здесь то причем может быть ID? Вы же пустой массив прописываете в функции.

#10 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 07 Август 2012 - 10:58

функция возвращает id новой записи, отсюда и подозрения

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#11 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 07 Август 2012 - 11:53

Непонятно и такое поведение. В поле есть вычисления, например:
$line['ФИО']=$line['Сотрудник']['ФИО'];
Данные берутся из текстового поля. Так почему, если $line['Сотрудник']['ФИО'] не содержит значений, возвращается 0?
Прикрепленное изображение: 37.jpg
У меня теперь все пустые записи, извлекающие значения из других таблиц, содержат ноль.
Естественно, что проверка на пустое значение для текстовых полей теперь не имеет силы и все работает коряво.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#12 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 07 Август 2012 - 12:32

Не знаю связано или нет с обновлением ревизии.
Обнаружил несовпадение типов полей в настройках КБ и непосредственно в базе (через phpmyadmin)
Прикрепленное изображение: 38.jpg Прикрепленное изображение: 39.jpg
Если настройки пересохранить - тип поля исправится.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#13 Analitic

    Активный участник

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 07 Август 2012 - 13:10

Просмотр сообщенияandibrag (07 Август 2012 - 12:32) писал:

Не знаю связано или нет с обновлением ревизии.
Обнаружил несовпадение типов полей в настройках КБ и непосредственно в базе (через phpmyadmin)
Прикрепленный файл 38.jpg Прикрепленный файл 39.jpg
Если настройки пересохранить - тип поля исправится.
Возможно у вас достаточно много полей в таблице, в этом случае все поля не помещаются в памяти строки mysql и новые поля в любом случае создаются с типом текст.

#14 Analitic

    Активный участник

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 07 Август 2012 - 13:11

Просмотр сообщенияandibrag (07 Август 2012 - 11:53) писал:

Непонятно и такое поведение. В поле есть вычисления, например:
$line['ФИО']=$line['Сотрудник']['ФИО'];
Данные берутся из текстового поля. Так почему, если $line['Сотрудник']['ФИО'] не содержит значений, возвращается 0?
Прикрепленный файл 37.jpg
У меня теперь все пустые записи, извлекающие значения из других таблиц, содержат ноль.
Естественно, что проверка на пустое значение для текстовых полей теперь не имеет силы и все работает коряво.
Исправлено в новой ревизии

#15 Analitic

    Активный участник

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 07 Август 2012 - 13:13

Просмотр сообщенияandibrag (06 Август 2012 - 14:50) писал:

Использование raw ни в первом , ни во втором случае ничего не дало.
Второй вылечил изменением срабатывания вычисления - убрал при отображении поля, поставил - при сохранении в таблице
Тем не менее срабатывание вычисления при отображении при отсутствии поля - это баг.
Наименование - отображение поля - не совсем описывает суть когда срабатывает вычисление. На самом деле вычисление срабатывает всегда когда идет считывание данных из поля. Наименование - отображение поля - оставлено для простоты восприятия начинающим пользователем.

#16 Analitic

    Активный участник

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 07 Август 2012 - 13:16

Просмотр сообщенияandibrag (06 Август 2012 - 18:45) писал:

Еще одна обнаруженная проблема. Строка
$new_id = insert_query(array(), "Договор");
в дополнительном действии вызывает ошибку.
Такое чувство, что любое обращение к ID вызывает ошибку.
Ошибка явно в другом месте, данный код абсолютно рабочий в стандартной конфигурации.

#17 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 07 Август 2012 - 13:22

Просмотр сообщенияAnalitic (07 Август 2012 - 13:13) писал:

Наименование - отображение поля - не совсем описывает суть когда срабатывает вычисление. На самом деле вычисление срабатывает всегда когда идет считывание данных из поля.
Если вывод поля в табличном виде или при отображении конкретной записи запрещен в настройках, данные, по идеи, из него не считываются. Но вычисление у меня отработало.

Просмотр сообщенияAnalitic (07 Август 2012 - 13:16) писал:

Ошибка явно в другом месте, данный код абсолютно рабочий в стандартной конфигурации.
Я расставил alert до и после этой строки. Первый сработал. После нажатия ok - выдало ошибку и до второго не дошло. Возможно ошибка где-то далее, но вызывает ее эта функция. У вас есть доступ к моей базе. Попробуйте. Как войдете - отпишитесь. Объясню где глюк.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#18 Analitic

    Активный участник

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 07 Август 2012 - 13:27

Просмотр сообщенияandibrag (07 Август 2012 - 13:22) писал:

Я расставил alert до и после этой строки. Первый сработал. После нажатия ok - выдало ошибку и до второго не дошло. Возможно ошибка где-то далее, но вызывает ее эта функция. У вас есть доступ к моей базе. Попробуйте. Как войдете - отпишитесь. Объясню где глюк.

Попробуйте сначала сами отключить все вычисления в таблице Договор. Если ошибка останеться, то привидите код неработающего доп действия, максимально сокращенным.

#19 Analitic

    Активный участник

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 07 Август 2012 - 13:31

Просмотр сообщенияandibrag (07 Август 2012 - 13:22) писал:

Если вывод поля в табличном виде или при отображении конкретной записи запрещен в настройках, данные, по идеи, из него не считываются. Но вычисление у меня отработало.
Возможно поле участвует в форматировании, либо в напоминаниях и выключен cron. Ситуаций когда поле считывается и не выводиться может быть достаточно много.

#20 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 07 Август 2012 - 13:41

Просмотр сообщенияAnalitic (07 Август 2012 - 13:31) писал:

Возможно поле участвует в форматировании, либо в напоминаниях и выключен cron.
Тогда это точно чревато перегрузкой. Если стоит вычисление ПРИ ОТОБРАЖЕНИИ для отдельной записи, а в табличном виде поле не выводится, нагрузки на сервер не будет. Иногда настройку ПРИ ОТОБРАЖЕНИИ, не заменить на что-то иное. В варианте, когда вычисление сработает даже если поле не отображается в таблице и, предположим, что выводится сто или более строчек - перегрузка обеспечена. Смысл производить вычисление в поле, если пользователь этого не хочет, устанавливая соответствующую настройку?

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения






Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных