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


сделал кнопку с доп.действием - а она выдает ошибку


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

#1 tel

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

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

Отправлено 25 Апрель 2011 - 15:55

задача доп.действия - сделать статус заявки "ЗАВЕРШЕНА"

Fatal error: Unknown column 'Завершено' in 'where clause'
SELECT count(*) as cnt_rec FROM f5_data85 WHERE status=Завершено AND f994 = '1'
in /home/s/smartmedia/public_html/md5/view_line.php on line 723






сам код вот:
$data = data_table("Общая", "id={ID}");
if($data['Статус'] == 'Размещена'){
//Код устанавливающий статус "Завершено"
$new_status['Статус']='Завершено';
update_query($new_status,"Общая", "id={ID}");
//Конец кода устанавливающего статус "Завершено"

//Дальше код из вычислений

// Сюда надо дописать координаторов, пример '-47-52-'
$coordinators = '-47-48-';

/* Список статусов
Возврат
Размещена
Завершено
Закрыта
Проверяется
*/

//Синхронизация статусов заказа общей таблицы и таблицы направления, откуда пришел заказ.
$data = data_table("Общая", "id={ID}");
$action = array();
$action['Дата'] = date("Y-m-d H:i:s");
$action['Кто изменил'] =$user['id'];
$action['id_заказа'] = "{ID}";
$action['Статус'] = $data['Статус'];
$action['Примечания менеджера'] = $data['Примечания менеджера'];
$action['Примечания трафика'] = $data['Примечания трафика'];
insert_query($action, "Ист. заказов");

$status = trim($data['Статус']);
if(in_array($status, array('Размещена','Возврат','Черновик','Завершено','Закрыта')))
{
$new_data['координаторы'] = '';
update_query($new_data,"Общая", "id={ID}");
}
else if(in_array($status, array('Проверяется')))
{

$new_data['координаторы'] = $coordinators;
update_query($new_data,"Общая", "id={ID}");
}

$vid = trim(strtok($data['Вид'], "\n"));

switch($vid) {
case 'Одноклассники':
$zakaz_table_name = 'Одноклассники';
break;
case 'Яндекс Директ,':
case 'Google,':
case 'Вконтакте,':
$zakaz_table_name = 'Объявления (яндекс, гугл, вконтакте)';
break;
case 'Мэйл':
$zakaz_table_name = 'Мэйл';
break;
case 'Маяк':
$zakaz_table_name = 'Маяк';
break;
case 'ДР':
$zakaz_table_name = 'ДР';
break;
case 'Изг. роликов':
$zakaz_table_name = 'Изг. Роликов';
break;
case 'Изг. баннеров':
$zakaz_table_name = 'Изг. Баннеров';
break;
case 'Вконтакте':
$zakaz_table_name = 'ВКонтакте';
break;
case 'Яндекс':
$zakaz_table_name = 'Яндекс';
break;
case 'Яндекс МКБ':
$zakaz_table_name = 'Яндекс МКБ';
break;
}

$update_zakaz['Примечания трафика'] = $data['Примечания трафика'];
$update_zakaz['Статус'] = $status;
if(in_array($status, array('Возврат')))
{
$update_zakaz['Кто добавил'] = $data['Менеджер'];
$update_zakaz['Дата размещения'] = '0000-00-00 00:00:00';
}
else
{
$update_zakaz['Кто добавил'] = 1;
}

update_query($update_zakaz, $zakaz_table_name, "`id_заказа`='".$data["id_заказа"]."'");
}

#2 CbCoder

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

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

Отправлено 25 Апрель 2011 - 16:11

Приведенная ошибка к выложенному коду явно никакого отношения не имеет. Ищите в каком месте Вы писали код запроса "SELECT count(*) as cnt_rec FROM f5_data85 WHERE status=Завершено AND f994 = '1'" с непонятно зачем присвоением служебному полю status строкового значения "Завершено", причем - без кавычек, что собственно и вызвало ошибку.

#3 ildar_sh

    Новичок

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

Отправлено 25 Апрель 2011 - 20:04

Здравствуйте.
В запросе из-за которого происходит ошибка полю присваивается псевдоним - cnt_rec, это псевдоним используется в служебном файле программы: templates\view_line.tpl. Думаю это говорит о том что ошибка происходит при выполнении кода Клиентской базы. Также в пользу этой версии то, что ошибка возникает именно после исполнения приведенного выше кода. Пробовал вставить в конец скрипта выход exit. До него ошибок нет.
Подскажите, пожалуйста, в чем может быть проблема.
Еще в таблице "Общая" есть поле с именем "Статус", в коде идет присвоение этому полю. Может это как-то отразится на служебном поле status?
$data = data_table("Общая", "id={ID}");
if($data['Статус'] == 'Размещена')// Ошибка происходит если выполняется это условие
{
//Код устанавливающий статус "Завершено"
$new_status['Статус']='Завершено';
update_query($new_status,"Общая", "id={ID}");
$data['Статус']='Завершено';
//Конец кода устанавливающего статус "Завершено"

//Дальше код из вычислений

// Сюда надо дописать координаторов, пример '-47-52-'
$coordinators = '-47-48-';

/* Список статусов
Возврат
Размещена
Завершено
Закрыта
Проверяется
*/

//Синхронизация статусов заказа общей таблицы и таблицы направления, откуда пришел заказ.
$data = data_table("Общая", "id={ID}");
$action = array();
$action['Дата'] = date("Y-m-d H:i:s");
$action['Кто изменил'] =$user['id'];
$action['id_заказа'] = "{ID}";
$action['Статус'] = $data['Статус'];
$action['Примечания менеджера'] = $data['Примечания менеджера'];
$action['Примечания трафика'] = $data['Примечания трафика'];
insert_query($action, "Ист. заказов");

$status = trim($data['Статус']);
if(in_array($status, array('Размещена','Возврат','Черновик','Завершено','Закрыта')))
{
	$new_data['координаторы'] = '';
	update_query($new_data,"Общая", "id={ID}");
}
else if(in_array($status, array('Проверяется')))
{
	
	$new_data['координаторы'] = $coordinators;
	update_query($new_data,"Общая", "id={ID}");
}

$vid = trim(strtok($data['Вид'], "\n"));

switch($vid) {
	case 'Одноклассники':
		$zakaz_table_name = 'Одноклассники';
		break;	
	case 'Яндекс Директ,':
	case 'Google,':
	case 'Вконтакте,':
		$zakaz_table_name = 'Объявления (яндекс, гугл, вконтакте)';
		break;	
	case 'Мэйл':
		$zakaz_table_name = 'Мэйл';
		break;	
	case 'Маяк':
		$zakaz_table_name = 'Маяк';
		break;
	case 'ДР':
		$zakaz_table_name = 'ДР';
		break;
	case 'Изг. роликов':
		$zakaz_table_name = 'Изг. Роликов';
		break;
	case 'Изг. баннеров':
		$zakaz_table_name = 'Изг. Баннеров';
		break;
	case 'Вконтакте':
		$zakaz_table_name = 'ВКонтакте';
		break;
	case 'Яндекс':
		$zakaz_table_name = 'Яндекс';
		break;
	case 'Яндекс МКБ':
		$zakaz_table_name = 'Яндекс МКБ';
		break;
}

$update_zakaz['Примечания трафика'] = $data['Примечания трафика'];
$update_zakaz['Статус'] = $status;
if(in_array($status, array('Возврат')))
{
	$update_zakaz['Кто добавил'] = $data['Менеджер'];
	$update_zakaz['Дата размещения'] = '0000-00-00 00:00:00';
}
else
{
	$update_zakaz['Кто добавил'] = 1;
}

if($zakaz_table_name) update_query($update_zakaz, $zakaz_table_name, "`id_заказа`='".$data["id_заказа"]."'");
}


#4 CbCoder

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

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

Отправлено 26 Апрель 2011 - 09:10

Просмотр сообщенияildar_sh (25.4.2011, 21:04) писал:

Здравствуйте.
В запросе из-за которого происходит ошибка полю присваивается псевдоним - cnt_rec, это псевдоним используется в служебном файле программы: templates\view_line.tpl. Думаю это говорит о том что ошибка происходит при выполнении кода Клиентской базы. Также в пользу этой версии то, что ошибка возникает именно после исполнения приведенного выше кода. Пробовал вставить в конец скрипта выход exit. До него ошибок нет.
Подскажите, пожалуйста, в чем может быть проблема.
Какая версия и ревизия? Если не последняя - обновите до самой последней, иначе невозможно локализовать ошибку по номеру строки, т.к. код постояннно нами модифицируется.
Вполне возможно что запрос действительно принадлежит коду движка, а не вашему вычислению, но тем не менее причина ошибки скорее всего на вашей стороне. Возможно причина в неверно настроенном фильтре. Короче говоря от Вас нужен номер строки ошибки на последней ревизии.

Просмотр сообщенияildar_sh (25.4.2011, 21:04) писал:

Еще в таблице "Общая" есть поле с именем "Статус", в коде идет присвоение этому полю. Может это как-то отразится на служебном поле status?
Напрямую вряд ли, тут больше похоже на искусственную подмену имен.





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

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