Исключить ошибки одновременного редактирования

oopros

Новичок
Есть форма с данными, которую могут редактировать нескольно пользователей.
Если 2 или более пользователей открыли форму и один из них сохранил первее, то при сохранее вторым пользователем теряется информация охраненная первым пользователем.
Подскажите пож-ста как возможно исключить подобные ошибки?
 

Kotofey

FloodMaster.
На этом форуме реализовано решение. Пока печатаешь сообщение идет проверка на наличие новых сообщений в этой теме, и тогда появляется оповещение, что появились новые сообщения в теме.
 

Вурдалак

Продвинутый новичок
oopros, сам факт можно установить, сравнения timestamp'ы/хеши, передавая их в каком-нибудь hidden-поле в форме.

Путей разрешения конфликта 2: либо предоставить это сделать пользователю #2 (его текст в форме + показать текст после 1-го пользователя), либо попытаться смержить автоматически (возможно предварительно спросив пользователя #2).
 

Lionishy

Новичок
oopros, совершенно не ясно, где Вы хотите устроить синхронизацию.
Если сама форма критическая, то почему Вы выдаёте её сразу большому количеству пользователей?
Если внесение данных синхронно, то там и нужно ставить замок и выдавать реджекты.
Или Вам нужно организовать синхронизацию consumer -- products? Сделайте очередь запросов.

Почитайте что-нибудь о Concurrency Programming, хоть в MSDN.
 

vasinsky

Новичок
ну я бы сделал так: при откыртии формы редактирования кем либо - ставил бы флаг - после сохранения - снимал бы флаг.
чтоб юзабильние было -то аяксом бы мониторил состояния флага
 

Breeze

goshogun
Команда форума
Партнер клуба
oopros, а сделай комбинацию того, что наговорили.

1. храни int номер ревизии, при открытии на редактирование запоминай, при сохранении проверяй, например, update ... where id=:article_id and rev=:revision
affected rows скажет, получилось или нет. дальше логику можно выстроить.

2. ставь флаг редактирования, наличие которого проверяй при открытии формы, например, select ... where id=:article_id and locked_by_user_id=0 for update если таблица innodb

всякие свистоперделки типа аякса можно уже вокруг этого городить, но и без них будет работать
 
Сверху