Название: Карточка юзера - поле "Контракт" Отправлено: Elisium от 28 Февраля 2012, 17:00:56 Доброго дня.
Биллинг 50.32 Хочется странного, но нужного. Первое: В карточке юзера есть поле "Контракт". Хочется сделать это поле автоинкрементным и начать его, например, с 010000. При создании нового пользователя в этом поле должен отображаться номер его, так называемого, "контракта". Грубо говоря, это просто автоинкрементное число, добавляемое каждому юзеру. А у существующих пользователей этот самый номер нужно проставить. Второе: На странице пользователя вместо персонального платежнего кода нужно выводить номер этого самого контракта в формате 6 цифр. Кто нибуть подскажет чтото по данным вопросам ? Название: Re: Карточка юзера - поле "Контракт" Отправлено: Efendy от 28 Февраля 2012, 17:10:34 Пойдет, если контракт будет = id?
Название: Re: Карточка юзера - поле "Контракт" Отправлено: Elisium от 28 Февраля 2012, 18:39:26 Хм.. Как всегда ...
"Не спеши выполнять приказы, их в любой момент могут отменить" (с) Оказывается, этот весь гемморой нужен был для подготовки (??) к обьединению двух биллингов ... Настоящая задача такова: в первом биллинге оставить ид юзеров от 1 до 010000, а во втором сделать эти же самые с 010001 до 020000. При чем, само собой, скорректировать все платежи итд во втором биллинге. Правильно ли я понимаю, что на втором биллинге нужно сделать следующее (теоретически): 1. Экспортировать таблицу Users, поправить в ней автоинкрементное поле id на 010001 2. Импортировать ее обратно. 3. В таблице Pays ко всем платежам, где есть ид юзера, добавить 010000. Как то так ? ))) Нужно ли еще где нибуть исправлять данные значения ? Название: Re: Карточка юзера - поле "Контракт" Отправлено: Efendy от 28 Февраля 2012, 18:58:17 На 2м биллинге:
update users set id=id+10000; алиасы: update users set mid=mid+10000 where mid>0; экспортировать в файл, изменить имя на temp_users, залить на 1й и выполнить: insert into users select * from temp_users; drop table temp_users; На 2м: update pays set mid=mid+10000 where mid>0; id записей (не клиентов) в таблице платежей не должны пересекаться с id в 1м биллинге update pays set id=id+10000; залить на 1й аналогичным способом. тоже с users_trf. В dopvalues надо грохнуть все неактуальные ревизии, потом parent_id=parent_id+10000 where dopfield_id in(select id from dopfields where parent_type=0); (подзапрос нужен чтобы не затронуть оборудование) ----- По таблице pays для некоторых (влом искать) типов платежей не будет сходится _неключевая_ инфа, например ссылка на отредактированную запись будет не соответствовать т.к. id (не юзерские) строк изменились. Ну еще нужно разрулить группы клиентов, если нужно чтоб новые были в новых, то заранее заапдейтить grp в users и в таблице user_grp Название: Re: Карточка юзера - поле "Контракт" Отправлено: poxy. от 28 Февраля 2012, 20:10:36 To Efendy
Что поправить для id=номер контракта=ппк? Я так понимаю исправление будет sql-запросом, что исправить для автоматического заполнения поля "контракт" и работы всего алгоритма (отталкиваясь от id автоматом вбить все остальное) в целом? PS или много захотелось :) Название: Re: Карточка юзера - поле "Контракт" Отправлено: Efendy от 28 Февраля 2012, 21:28:29 To Efendy Что поправить для id=номер контракта=ппк? Я так понимаю исправление будет sql-запросом, что исправить для автоматического заполнения поля "контракт" и работы всего алгоритма (отталкиваясь от id автоматом вбить все остальное) в целом? PS или много захотелось :) UPDATE users SET contract = RIGHT(CONCAT('00000', id), 6); А id = ППК это как? ППК - это избыточная информация, специально для защиты от ошибок, оно получается по формуле из id. Название: Re: Карточка юзера - поле "Контракт" Отправлено: Efendy от 28 Февраля 2012, 21:40:45 Самый простой способ получить ППК:
SELECT id, CONCAT(id,RIGHT(SUBSTRING(id,1,1)+SUBSTRING(id,2,1)+SUBSTRING(id,3,1)+SUBSTRING(id,4,1),1)) AS ppk FROM users; Название: Re: Карточка юзера - поле "Контракт" Отправлено: Elisium от 28 Февраля 2012, 22:07:14 На 2м биллинге: Ого... Многовасто )... Спасибо, будем пробовать. Название: Re: Карточка юзера - поле "Контракт" Отправлено: poxy. от 29 Февраля 2012, 11:47:16 Да с ппк тупанул :) , спасибо. А что поправить чтоб в дальнейшем завел юзера и его id сразу вносилось в поле контракт?
Название: Re: Карточка юзера - поле "Контракт" Отправлено: Efendy от 29 Февраля 2012, 12:07:02 Да с ппк тупанул :) , спасибо. А что поправить чтоб в дальнейшем завел юзера и его id сразу вносилось в поле контракт? в adduser.pl после $id=$sth->{mysql_insertid} || $sth->{insertid}; $mId=$mid || $id; # id основной записи добавить: sql_do($dbh,"UPDATE users SET contract=id WHERE id=$mId"); Название: Re: Карточка юзера - поле "Контракт" Отправлено: poxy. от 01 Марта 2012, 10:31:11 Спасибо! Не сочти за наглость, но мы думали, думали и решили чтоб было Контракт=ППК.
Подскажи запрос для обновления поля контракт у всех и что добавить чтоб забивалось автоматом при заведении юзера. Заранее Спасибо! Название: Re: Карточка юзера - поле "Контракт" Отправлено: poxy. от 01 Марта 2012, 15:01:41 Так пойдет :
в adduser.pl после $id=$sth->{mysql_insertid} || $sth->{insertid}; $mId=$mid || $id; # id основной записи добавить: sql_do($dbh,"UPDATE users SET contract=id WHERE id=$mppk"); ? Название: Re: Карточка юзера - поле "Контракт" Отправлено: Efendy от 01 Марта 2012, 16:11:44 $mppk = 0;
$mppk += $_ foreach split //,$mId; $mppk %= 10; $mppk = $mId.$mppk; Название: Re: Карточка юзера - поле "Контракт" Отправлено: poxy. от 02 Марта 2012, 00:01:03 $mppk = 0; Может сонный уже, чет не пойму куда это вставить? В перле пока не силен...$mppk += $_ foreach split //,$mId; $mppk %= 10; $mppk = $mId.$mppk; Название: Re: Карточка юзера - поле "Контракт" Отправлено: Efendy от 02 Марта 2012, 01:52:10 $id=$sth->{mysql_insertid} || $sth->{insertid};
$mId=$mid || $id; # id основной записи добавить: $mppk = 0; $mppk += $_ foreach split //,$mId; $mppk %= 10; $mppk = $mId.$mppk; sql_do($dbh,"UPDATE users SET contract=$mppk WHERE id=$mId"); Название: Re: Карточка юзера - поле "Контракт" Отправлено: poxy. от 02 Марта 2012, 10:15:15 Спасибо!
|