goodvin
Человек-Волшебник
- Регистрация
- 27 Июн 2006
- Сообщения
- 667
- Реакции
- 694
- Автор темы
- #1
есть таблица:
и есть действие:
Теперь проблема.
Остальные обновления в таблицах происходят нормально, а вот с таблицой $conf_bd_tbl['users_site'] какаято загадка.
Если в таблице записи равны 0 или более 1 обновляется нормально, а если запись нужно сделать 0, посредством каогото действия типа ['users_site'].".count_services_deleted = ".$conf_bd_tbl['users_site'].".count_services_deleted -1";
которое дожны привести поле "count_services_deleted" к 0, от 1 (текущее значение поля) не отнимается значение (count_services_deleted -1) и поле остается равным 1
Может ктото глянет свежим взглядом и найдет ошибку, тк. аналогичный на товары работает безукоризненно.
Код:
$conf_bd_tbl['users_site']
CREATE TABLE IF NOT EXISTS `users_site` (
`id` int(255) unsigned NOT NULL AUTO_INCREMENT,
`userid` int(255) unsigned DEFAULT NULL,
`site` varchar(32) DEFAULT NULL,
`title` varchar(255) DEFAULT NULL,
`description` varchar(500) DEFAULT NULL,
`keywords` varchar(255) DEFAULT NULL,
`menu` set('l','r') DEFAULT 'l',
`vitrina` int(10) unsigned DEFAULT '10',
`googleanalytics` varchar(18) DEFAULT NULL,
`googlewebmasters` varchar(128) DEFAULT NULL,
`yandexwebmasters` varchar(128) DEFAULT NULL,
`count_goods_goods` int(128) unsigned NOT NULL DEFAULT '0',
`count_goods_moderate` int(64) unsigned NOT NULL DEFAULT '0',
`count_goods_nonactive` int(64) unsigned NOT NULL DEFAULT '0',
`count_goods_draft` int(128) unsigned NOT NULL DEFAULT '0',
`count_goods_deleted` int(128) unsigned NOT NULL DEFAULT '0',
`count_services_services` int(128) unsigned NOT NULL DEFAULT '0',
`count_services_moderate` int(64) unsigned NOT NULL DEFAULT '0',
`count_services_nonactive` int(64) unsigned NOT NULL DEFAULT '0',
`count_services_draft` int(128) unsigned NOT NULL DEFAULT '0',
`count_services_deleted` int(128) unsigned NOT NULL DEFAULT '0',
`count_news` int(64) unsigned DEFAULT '0',
`count_articles` int(64) unsigned DEFAULT '0',
`count_price` int(64) unsigned DEFAULT '0',
`count_doc` int(64) unsigned DEFAULT '0',
`count_gallery` int(64) unsigned DEFAULT '0',
`count_lic` int(64) unsigned NOT NULL DEFAULT '0',
`count_jobs` int(64) unsigned NOT NULL DEFAULT '0',
`count_sale` int(64) unsigned NOT NULL DEFAULT '0',
`count_faq` int(64) unsigned NOT NULL DEFAULT '0',
`date_created` timestamp NULL DEFAULT NULL,
`date_changed` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`date_goods_group_changed` timestamp NULL DEFAULT NULL,
`date_services_group_changed` timestamp NULL DEFAULT NULL,
`active` set('0','1','2','3','4','5') DEFAULT '0',
`moderate` set('-1','0','1') DEFAULT '0',
PRIMARY KEY (`id`),
KEY `date_created` (`date_created`),
KEY `active` (`moderate`),
KEY `userid` (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 PACK_KEYS=0 AUTO_INCREMENT=3 ;
и есть действие:
Код:
if($services == 1){
$count_services = ", ".$conf_bd_tbl['users_site'].".count_services_services = ".$conf_bd_tbl['users_site'].".count_services_services +1";
} else if($services == -1){
$count_services = ", ".$conf_bd_tbl['users_site'].".count_services_services = ".$conf_bd_tbl['users_site'].".count_services_services -1";
}
if($nonactive == 1){
$count_nonactive = ", ".$conf_bd_tbl['users_site'].".count_services_nonactive = ".$conf_bd_tbl['users_site'].".count_services_nonactive +1";
} else if($nonactive == -1){
$count_nonactive = ", ".$conf_bd_tbl['users_site'].".count_services_nonactive = ".$conf_bd_tbl['users_site'].".count_services_nonactive -1";
}
if($draft == 1){
$count_draft = ", ".$conf_bd_tbl['users_site'].".count_services_draft = ".$conf_bd_tbl['users_site'].".count_services_draft +1";
} else if($draft == -1){
$count_draft = ", ".$conf_bd_tbl['users_site'].".count_services_draft = ".$conf_bd_tbl['users_site'].".count_services_draft -1";
}
if($deleted == 1){
$count_deleted = ", ".$conf_bd_tbl['users_site'].".count_services_deleted = ".$conf_bd_tbl['users_site'].".count_services_deleted +1";
} else if($deleted == -1){
$count_deleted = ", ".$conf_bd_tbl['users_site'].".count_services_deleted = ".$conf_bd_tbl['users_site'].".count_services_deleted -1";
}
$sql = "UPDATE ".$conf_bd_tbl['services_categories'].", ".$conf_bd_tbl['services_groups'].", ".$conf_bd_tbl['users_site']."
SET ".$conf_bd_tbl['services_categories'].".categories_count = ".$conf_bd_tbl['services_categories'].".categories_count $val, ".$conf_bd_tbl['services_categories'].".categories_date_changed = NOW(),
".$conf_bd_tbl['services_groups'].".count = ".$conf_bd_tbl['services_groups'].".count $val $count_services [COLOR=red]$count_nonactive $count_draft $count_deleted
[/COLOR] WHERE ".$conf_bd_tbl['services_categories'].".categories_id ='".$categories."' AND ".$conf_bd_tbl['services_groups'].".userid = '".$userid."' AND ".$conf_bd_tbl['services_groups'].".id ='".$group."' AND ".$conf_bd_tbl['users_site'].".userid ='".$userid."'";
Теперь проблема.
Остальные обновления в таблицах происходят нормально, а вот с таблицой $conf_bd_tbl['users_site'] какаято загадка.
Если в таблице записи равны 0 или более 1 обновляется нормально, а если запись нужно сделать 0, посредством каогото действия типа ['users_site'].".count_services_deleted = ".$conf_bd_tbl['users_site'].".count_services_deleted -1";
которое дожны привести поле "count_services_deleted" к 0, от 1 (текущее значение поля) не отнимается значение (count_services_deleted -1) и поле остается равным 1
Может ктото глянет свежим взглядом и найдет ошибку, тк. аналогичный на товары работает безукоризненно.