2
Ошибка при выполнении нескольких вычислений в таблице
Автор d654525, 15 февр. 2017 08:17
Сообщений в теме: 11
#1
Отправлено 15 Февраль 2017 - 08:17
В таблице есть несколько полей, данные в которые подтягиваются вычислениями. 1 вычисление срабатывает, а другие аналогичные - нет. Если их включить, то при открытии страницы пишется, что не найдено одно из полей. А браузер выводит такое сообщение:
Вот вычисления. Срабатывают при отображении поля id. Все вычисления сохранены поотдельности, т.к. вносят изменения в разные поля.
$sql = "SELECT count(`id`) as cc FROM ".DATA_TABLE."341 where (`status` = 0 OR `status` = 1)
AND (`f6951` = ".$line['ID']." OR `f8011` = ".$line['ID'].")";
$result = sql_query($sql);
$row = sql_fetch_assoc($result);
$line['Пробных всего'] = $row['cc'];
$sql = "SELECT count(`id`) as cc FROM ".DATA_TABLE."341 where (`status` = 0 OR `status` = 1)
AND (`f6951` = ".$line['ID']." OR `f8011` = ".$line['ID'].") AND (`f7061` = 'Проведено+' OR `f8031` = 'Проведено+')";
$result = sql_query($sql);
$row = sql_fetch_assoc($result);
$line['Проведено+'] = $row['cc'];
$sql = "SELECT count(`id`) as cc FROM ".DATA_TABLE."341 where (`status` = 0 OR `status` = 1)
AND (`f6951` = ".$line['ID']." OR `f8011` = ".$line['ID'].") AND (`f7061` = 'Проведено+нет$' OR `f8031` = 'Проведено+нет$')";
$result = sql_query($sql);
$row = sql_fetch_assoc($result);
$line['Проведено+нет$'] = $row['cc'];
$sql = "SELECT count(`id`) as cc FROM ".DATA_TABLE."341 where (`status` = 0 OR `status` = 1)
AND (`f6951` = ".$line['ID']." OR `f8011` = ".$line['ID'].") AND (`f7061` = 'Проведено-' OR `f8031` = 'Проведено-')";
$result = sql_query($sql);
$row = sql_fetch_assoc($result);
$line['Проведено-'] = $row['cc'];
$sql = "SELECT count(`id`) as cc FROM ".DATA_TABLE."341 where (`status` = 0 OR `status` = 1)
AND (`f6951` = ".$line['ID']." OR `f8011` = ".$line['ID'].") AND (`f7061` = 'Проведено?' OR `f8031` = 'Проведено?')";
$result = sql_query($sql);
$row = sql_fetch_assoc($result);
$line['Проведено?'] = $row['cc'];
$sql = "SELECT count(`id`) as cc FROM ".DATA_TABLE."341 where (`status` = 0 OR `status` = 1)
AND (`f6951` = ".$line['ID']." OR `f8011` = ".$line['ID'].") AND (`f7061` = 'Не появился=' OR `f8031` = 'Не появился=')";
$result = sql_query($sql);
$row = sql_fetch_assoc($result);
$line['Не появился='] = $row['cc'];
Вот вычисления. Срабатывают при отображении поля id. Все вычисления сохранены поотдельности, т.к. вносят изменения в разные поля.
$sql = "SELECT count(`id`) as cc FROM ".DATA_TABLE."341 where (`status` = 0 OR `status` = 1)
AND (`f6951` = ".$line['ID']." OR `f8011` = ".$line['ID'].")";
$result = sql_query($sql);
$row = sql_fetch_assoc($result);
$line['Пробных всего'] = $row['cc'];
$sql = "SELECT count(`id`) as cc FROM ".DATA_TABLE."341 where (`status` = 0 OR `status` = 1)
AND (`f6951` = ".$line['ID']." OR `f8011` = ".$line['ID'].") AND (`f7061` = 'Проведено+' OR `f8031` = 'Проведено+')";
$result = sql_query($sql);
$row = sql_fetch_assoc($result);
$line['Проведено+'] = $row['cc'];
$sql = "SELECT count(`id`) as cc FROM ".DATA_TABLE."341 where (`status` = 0 OR `status` = 1)
AND (`f6951` = ".$line['ID']." OR `f8011` = ".$line['ID'].") AND (`f7061` = 'Проведено+нет$' OR `f8031` = 'Проведено+нет$')";
$result = sql_query($sql);
$row = sql_fetch_assoc($result);
$line['Проведено+нет$'] = $row['cc'];
$sql = "SELECT count(`id`) as cc FROM ".DATA_TABLE."341 where (`status` = 0 OR `status` = 1)
AND (`f6951` = ".$line['ID']." OR `f8011` = ".$line['ID'].") AND (`f7061` = 'Проведено-' OR `f8031` = 'Проведено-')";
$result = sql_query($sql);
$row = sql_fetch_assoc($result);
$line['Проведено-'] = $row['cc'];
$sql = "SELECT count(`id`) as cc FROM ".DATA_TABLE."341 where (`status` = 0 OR `status` = 1)
AND (`f6951` = ".$line['ID']." OR `f8011` = ".$line['ID'].") AND (`f7061` = 'Проведено?' OR `f8031` = 'Проведено?')";
$result = sql_query($sql);
$row = sql_fetch_assoc($result);
$line['Проведено?'] = $row['cc'];
$sql = "SELECT count(`id`) as cc FROM ".DATA_TABLE."341 where (`status` = 0 OR `status` = 1)
AND (`f6951` = ".$line['ID']." OR `f8011` = ".$line['ID'].") AND (`f7061` = 'Не появился=' OR `f8031` = 'Не появился=')";
$result = sql_query($sql);
$row = sql_fetch_assoc($result);
$line['Не появился='] = $row['cc'];
#2
Отправлено 15 Февраль 2017 - 09:46
не уверен в результате, но всё же попробуйте заменить count('id') на count(*), а также убрать символ $ из названия полей
#3
Отправлено 15 Февраль 2017 - 09:50
Цитата
Если их включить, то при открытии страницы пишется, что не найдено одно из полей
Ну значит где то ошиблись с полями, ищите.
Цитата
А браузер выводит такое сообщение
Забыли прикрепить скриншот?
#4
Отправлено 15 Февраль 2017 - 09:54
AntonKravchenko (15 Февраль 2017 - 09:46) писал:
не уверен в результате, но всё же попробуйте заменить count('id') на count(*), а также убрать символ $ из названия полей
Это не должно повлиять само по себе, и у него кстати count(`id`), а не count('id'). Его вариант рабочий, а ваш - нет (разница в типе апострофа).
#5
Отправлено 15 Февраль 2017 - 10:27
CbCoder (15 Февраль 2017 - 09:50) писал:
Ну значит где то ошиблись с полями, ищите.
Забыли прикрепить скриншот?
Забыли прикрепить скриншот?
Вот: http://joxi.ru/GrqedJoSPoBDrz
#6
Отправлено 15 Февраль 2017 - 10:33
Если включить вычисления, то такие ошибки выходят:
Error generated:
/var/www/admin/www/САЙТ/include/functions1.php(564) : data_update()
/var/www/admin/www/САЙТ/include/functions1.php(648) : form_event_recurs()
/var/www/admin/www/САЙТ/fields.php(2129) : calc_line()
Ошибка SQL запроса:
UPDATE cb_data111 SET f20460='1' WHERE id=19
Unknown column 'f20460' in 'field list'
Error generated:
/var/www/admin/www/САЙТ/include/functions1.php(564) : data_update()
/var/www/admin/www/САЙТ/include/functions1.php(648) : form_event_recurs()
/var/www/admin/www/САЙТ/fields.php(2129) : calc_line()
Ошибка SQL запроса:
UPDATE cb_data111 SET f20460='1' WHERE id=19
Unknown column 'f20460' in 'field list'
#7
Отправлено 15 Февраль 2017 - 10:38
А если попытаться удалить поле, в котором должно срабатывать вычисление, то получаю ошибку:
Ошибка системы.
Error generated:
/var/www/admin/www/САЙТ/edit_field.php(329) : sql_query()
Ошибка SQL запроса:
ALTER TABLE cb_data111 DROP f20470
Can't DROP 'f20470'; check that column/key exists
Ошибка системы.
Error generated:
/var/www/admin/www/САЙТ/edit_field.php(329) : sql_query()
Ошибка SQL запроса:
ALTER TABLE cb_data111 DROP f20470
Can't DROP 'f20470'; check that column/key exists
#8
Отправлено 15 Февраль 2017 - 10:54
причем f20460 или f20470 это существующие поля. правда при их создании возникали ошибки, а при попытке изменить права доступа к ним также возникает ошибка
Ошибка системы.
Error generated:
/var/www/admin/www/САЙТ/edit_field.php(997) : sql_query()
Ошибка SQL запроса:
ALTER TABLE cb_data111 CHANGE f20450 f20450 DECIMAL(10,0) NOT NULL -- change field type
Unknown column 'f20470' in 'cb_data111'
Ошибка системы.
Error generated:
/var/www/admin/www/САЙТ/edit_field.php(997) : sql_query()
Ошибка SQL запроса:
ALTER TABLE cb_data111 CHANGE f20450 f20450 DECIMAL(10,0) NOT NULL -- change field type
Unknown column 'f20470' in 'cb_data111'
#9
Отправлено 15 Февраль 2017 - 11:02
У вас поля некорректно созданы просто. Они есть в описании структуры, но их нет в реальности в таблице с данными. Попробуйте их удалить. Если не получится, отправьте заявку в ТП - поможем.
#10
Отправлено 15 Февраль 2017 - 11:04
Спасибо, заявку создал.
Я создавал поля обычным способом. Из-за чего это могло быть? Количество существующих полей в таблице могло повлиять?
Я создавал поля обычным способом. Из-за чего это могло быть? Количество существующих полей в таблице могло повлиять?
#11
#12
Отправлено 15 Февраль 2017 - 14:05
Цитата
вообще-то мой вариант это count(*) ;-)
Я про варианты написания count(id).
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных