БД. Многопользовательский режим

Nicca

Новичок
БД. Многопользовательский режим

Пишу скрипт с новостями. Как его правильно спроэктировать чтобы одновременно могли вводить редактировать и удалять записи в бд несколько пользователей
 

Tor

Новичок
а в чем именно проблема?

удалять вообще как два пальца об асфальт

а насчет редактировать - можешь в поле единичку ставить при первом редакторе и второму говорить - "подожди"
 

Nicca

Новичок
второму говорить - "подожди"
Тоесть выбрал пользователь новость, я ставлю флаг. И если второй хочет выбрать эту же новость, то она отображается не в виду ссылки, а обычным текстом.
В принципе неплохо. А еще есть какие-то решения?
 

nw

Новичок
Использовать транзакции и соответствующие БД :)
 

neko

tеam neko
> А еще есть какие-то решения?
решения, прости, чего?

> Использовать транзакции и соответствующие БД
а каким боком тут транзакции, можно узнать?
 

yugene

Отошел от дел
nw, приведи, плиз, примерный алгоритм с транзакциями
 

Astral Man

We Will Rock You
Зачем их вообще использовать, если они поддерживаются на уровне БД?
С флагом самое верное решение. Админ нажал на кнопку "Редактировать" в базу записал "1" нажал "Сохранить" - пишешь "0"
 

Tor

Новичок
С флагом самое верное решение. Админ нажал на кнопку "Редактировать" в базу записал "1" нажал "Сохранить" - пишешь "0"
и по тайм-ауту неплохо бы нолики расставлять

а транзакции совсем для другого придумали
 

yugene

Отошел от дел
Если у тебя админ начал редактировать новость (записалась единичка), а потом неожиданно вырубил браузер (без сохранения новости), то единичка так и будет висеть и больше эту новость отредактировать нельзя будет.
 

Nicca

Новичок
Если у тебя админ начал редактировать новость (записалась единичка), а потом неожиданно вырубил браузер (без сохранения новости), то единичка так и будет висеть и больше эту новость отредактировать нельзя будет.
Я это понял. Имею в виду как реализовать сам таймаут, програмно или как?
 

yugene

Отошел от дел
Автор оригинала: Nicca
Я это понял. Имею в виду как реализовать сам таймаут, програмно или как?
Можно программно, можно нет :D

Делаешь что-то типа garbage collector'а, который будет обнулять все просроченные единички (проставленные, скажем, больше получаса назад).
 

Tor

Новичок
например:

перед тем, как поставить 1, делаешь
update news set edit=0 where unix_timespamp(NOW())-unix_timestamp(edit_time)>1800 and edit=1
 

Nicca

Новичок
Я такого не знал. И что через 30 мин. таблица обновит значение поля на 1 ?
 

Nicca

Новичок
Вернее на 0.
Только почемуто выдает на ошибку в запросе:

1064 - You have an error in your SQL syntax near '(NOW())-unix_timestamp(edit_time)>1800' at line 1

(edit_time я создал как поле типа TIMESTAMP)
 

Tor

Новичок
логичнее edit_time сделать datetime

а ошибку выдает, потому что у меня грамматическая ошибка в слове timestamp
 

Nicca

Новичок
include('conf.php');
$sql="update test set edit=0 where unix_timestamp(NOW())-unix_timestamp(edit_time)>100 and edit=1";
$res=db_select($sql);
В таблице такая запись:
id edit edit_time
3 1 2005-03-11 13:24:00

При запуске скрипта значение сразу обновляется в 0.
Обьясните пожалуйста почему, что не так?
 
Сверху