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


Ошибка при выполнении нескольких вычислений в таблице


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

#1 d654525

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

  • Пользователи
  • PipPipPip
  • 90 сообщений

Отправлено 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'];

#2 AntonKravchenko

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

  • Пользователи
  • PipPipPip
  • 152 сообщений
  • Пол:Мужчина
  • Город:Нижний Новгород

Отправлено 15 Февраль 2017 - 09:46

не уверен в результате, но всё же попробуйте заменить count('id') на count(*), а также убрать символ $ из названия полей

#3 CbCoder

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

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

Отправлено 15 Февраль 2017 - 09:50

Цитата

Если их включить, то при открытии страницы пишется, что не найдено одно из полей

Ну значит где то ошиблись с полями, ищите.

Цитата

А браузер выводит такое сообщение

Забыли прикрепить скриншот?

#4 CbCoder

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

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

Отправлено 15 Февраль 2017 - 09:54

Просмотр сообщенияAntonKravchenko (15 Февраль 2017 - 09:46) писал:

не уверен в результате, но всё же попробуйте заменить count('id') на count(*), а также убрать символ $ из названия полей

Это не должно повлиять само по себе, и у него кстати count(`id`), а не count('id'). Его вариант рабочий, а ваш - нет (разница в типе апострофа).

#5 d654525

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

  • Пользователи
  • PipPipPip
  • 90 сообщений

Отправлено 15 Февраль 2017 - 10:27

Просмотр сообщенияCbCoder (15 Февраль 2017 - 09:50) писал:

Ну значит где то ошиблись с полями, ищите.
Забыли прикрепить скриншот?

Вот: http://joxi.ru/GrqedJoSPoBDrz

#6 d654525

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

  • Пользователи
  • PipPipPip
  • 90 сообщений

Отправлено 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'


#7 d654525

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

  • Пользователи
  • PipPipPip
  • 90 сообщений

Отправлено 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


#8 d654525

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

  • Пользователи
  • PipPipPip
  • 90 сообщений

Отправлено 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'


#9 CbCoder

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

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

Отправлено 15 Февраль 2017 - 11:02

У вас поля некорректно созданы просто. Они есть в описании структуры, но их нет в реальности в таблице с данными. Попробуйте их удалить. Если не получится, отправьте заявку в ТП - поможем.

#10 d654525

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

  • Пользователи
  • PipPipPip
  • 90 сообщений

Отправлено 15 Февраль 2017 - 11:04

Спасибо, заявку создал.

Я создавал поля обычным способом. Из-за чего это могло быть? Количество существующих полей в таблице могло повлиять?

#11 AntonKravchenko

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

  • Пользователи
  • PipPipPip
  • 152 сообщений
  • Пол:Мужчина
  • Город:Нижний Новгород

Отправлено 15 Февраль 2017 - 11:43

Просмотр сообщенияCbCoder (15 Февраль 2017 - 09:54) писал:

, и у него кстати count(`id`), а не count('id'). Его вариант рабочий, а ваш - нет (разница в типе апострофа).
вообще-то мой вариант это count(*) ;-)

#12 CbCoder

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

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

Отправлено 15 Февраль 2017 - 14:05

Цитата

вообще-то мой вариант это count(*) ;-)

Я про варианты написания count(id).





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

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