Ошибка сохранения в подчиненной таблице
Автор DarkNight, 21 мая 2010 09:34
Сообщений в теме: 10
#1
Отправлено 21 Май 2010 - 09:34
версия 1.7.1
есть таблица "клиенты", у нее есть подчиненная "отчеты"
если из позиции клиента внизу на вкладке отчеты создавать новый отчет, то первый сохраняется нормально, а второй не сохраняется. По нажатию кнопки "сохранить", открывается чистая страница.
В логах нашел такое,
PHP Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/view_line.php(231) : eval()'d code on line 3
PHP Fatal error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\xf1\xee\xf2\xf0\xf3\xe4\xed\xe8\xea\xe0' at line 1<br>UPDATE f_data44 SET id=id WHERE id=\xd4\xc8\xce \xf1\xee\xf2\xf0\xf3\xe4\xed\xe8\xea\xe0<br> in /srv/www/htdocs/view_line.php on line 146
есть таблица "клиенты", у нее есть подчиненная "отчеты"
если из позиции клиента внизу на вкладке отчеты создавать новый отчет, то первый сохраняется нормально, а второй не сохраняется. По нажатию кнопки "сохранить", открывается чистая страница.
В логах нашел такое,
PHP Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/view_line.php(231) : eval()'d code on line 3
PHP Fatal error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\xf1\xee\xf2\xf0\xf3\xe4\xed\xe8\xea\xe0' at line 1<br>UPDATE f_data44 SET id=id WHERE id=\xd4\xc8\xce \xf1\xee\xf2\xf0\xf3\xe4\xed\xe8\xea\xe0<br> in /srv/www/htdocs/view_line.php on line 146
#2
Отправлено 21 Май 2010 - 10:09
Ошибка в ваших "вычислениях таблицы", которые вы судя по сему добавили в таблицу "отчеты"
#3
Отправлено 21 Май 2010 - 10:35
Разработчик (21.5.2010, 10:09) писал:
Ошибка в ваших "вычислениях таблицы", которые вы судя по сему добавили в таблицу "отчеты"
Да есть вычисление, только если ошибка в вычислении то почему тогда первый отчет сохраняется? да и если добавлять записи не через "клиента" а напрямую в таблицу отчеты, то все нормально сохраняется.
#4
Отправлено 21 Май 2010 - 10:39
Ошибка в любом случае в вашем вычислении - об этом говорят ваши же логи. То что она в одном случае проявляется а в другом нет - еще ни о чем не говорит. Выложите лучше код вычисления здесь.
#5
Отправлено 21 Май 2010 - 10:41
Разработчик (21.5.2010, 10:39) писал:
Выложите лучше код вычисления здесь.
$table = data_table("Отчет","id={ID}");
$gr = data_table("Подразделения","`Менеджер` like '%-".$table['ФИО сотрудника']."-%'");
$row = mysql_fetch_row($gr);
if ($row = 1)
{
$table['Подразделение']=$gr['Код'];
update_table($table,"Отчет","id={ID}");
}
#6
Отправлено 21 Май 2010 - 10:50
Вы неправильно используете функцию data_table. Вам нужно либо использовать стандартную mysql_query в сочетании с вашей mysql_fetch_row, либо переделать код на проверку того заполняется ли массив $gr и убрать вообще mysql_fetch_row, которая здесь "не в тему"
#7
Отправлено 21 Май 2010 - 11:08
Сейчас проверил как работает функция data_table - в текущей реализации затруднительно проверять возвращает ли вообще запрос строку, точнее там вообще нет такой проверки. Я переделал эту функцию, теперь она возвращает false в случае отсутствия результата. Замените файл include/function2.php приложенным ниже и переделайте свой код на следующий:
functions2.php 7,44К
179 Количество загрузок:
$table = data_table("Отчет","id={ID}");
$gr = data_table("Подразделения","`Менеджер` like '%-".$table['ФИО сотрудника']."-%'");
if ($gr!=false)
{
$table['Подразделение']=$gr['Код'];
update_table($table,"Отчет","id={ID}");
}
functions2.php 7,44К
179 Количество загрузок:
#8
Отправлено 21 Май 2010 - 12:18
Результат тот же, такая же ошибка
#9
Отправлено 21 Май 2010 - 12:31
Понятно, первая ошибка из вашего лога была обусловлена тем что я написал выше - и ее больше выходить не должно, если вы исправили свой код. Но фатальный останов вызывает действительно не она, а вторая. Здесь без вашей бд уже не разобраться. Вышлите бэкап базы на support@clientbase.ru.
http://clientbase.ru...?showtopic=1787
http://clientbase.ru...?showtopic=1787
#10
Отправлено 21 Май 2010 - 16:03
Бекап выслал.
#11
Отправлено 21 Май 2010 - 17:30
Вторую ошибку вызывает тоже ваше вычисление. Правда эта ошибка уже не так очевидна как первая. Дело в том что вы определяете свою переменную $table:
В ближайшее время мы скорее всего исправим программу так чтобы пользовательские переменные не конфликтовали с переменными ядра. Пока желательно избегать давать своим переменным простые имена типа "table", "field", "$user" и т.д.
$table = data_table("Отчет","id={ID}");
которая вступает в конфликт с одноименной переменной в коде ядра программы, вернее подменяет ее. Вам необходимо заменить эту переменную на другую, например $otchetВ ближайшее время мы скорее всего исправим программу так чтобы пользовательские переменные не конфликтовали с переменными ядра. Пока желательно избегать давать своим переменным простые имена типа "table", "field", "$user" и т.д.
Количество пользователей, читающих эту тему: 4
0 пользователей, 4 гостей, 0 анонимных













