выберите число от 1 до 10 на веб-странице - PullRequest
0 голосов
/ 27 февраля 2010

Я хочу создать веб-страницу, где зарегистрированный пользователь выбирает номер от 1 до 10. Когда пользователь выбирает номер, этот номер удаляется из доступного списка.

Есть ли способ гарантировать, что ни у двух, ни у нескольких пользователей не может быть одинакового номера?

Спасибо, Стержень

Ответы [ 2 ]

2 голосов
/ 27 февраля 2010

Я не знаю, как это сделать с помощью технологий в ваших тегах, но вам понадобится база данных, в которой хранится состояние каждого номера: занято или свободно. На странице будет форма, которая отправит выбранный номер обработчику формы, который проверит состояние номера в базе данных. Если оно взято, вы отправите пользователю страницу с надписью «слишком плохо, что принято» или что-то в этом роде, если оно бесплатное, вы пометите его как взятое, а затем отправите страницу, сообщив, что оно получено.

Ваш сервер, вероятно, обрабатывает запросы по принципу "первым пришел - первым обслужен", и если вы используете любую современную базу данных, она заблокирует вас (вы просто не захотите, чтобы два человека пытались получить один и тот же номер одновременно)

также, форма и обработчик формы не должны быть разными файлами

и вы, вероятно, хотите записать, кто какой номер взял, так что состояние, в котором вас не берут, вполне может быть состоянием отсутствия имени пользователя для номера.

1 голос
/ 27 февраля 2010

Этот вопрос был помечен как sql-сервер, поэтому я предложу ответ SQL Server ...

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

CREATE TABLE dbo.UserSelection
(
    user_id int not null,
    selection int not null,
    CONSTRAINT UK_UserSelection__user_id__selection UNIQUE (user_id, selection)
)

Есть много способов определить, произошла ли ошибка при вставке. Один из способов - проверить наличие ошибок. Выполните в своем приложении SQL-код, похожий на этот:

SqlCommand cmd = connection.CreateCommand();
cmd.CommandText = "INSERT INTO dbo.UserSelection(user_id, selection) VALUES (@id, @selection); SELECT @@ERROR;";
cmd.Parameters.AddWithValue("@id", userId);
cmd.Parameters.AddWithValue("@selection", selection);
bool youHaveThatSelection = 0 == (int)cmd.ExecuteScalar();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...