在网页上选择1到10的数字

时间:2010-02-27 04:33:38

标签: c# asp.net jquery sql-server asp.net-mvc

我想创建一个网页,其中注册用户从1到10中选择一个数字。当用户选择一个数字时,该数字将从可用列表中删除。

有没有办法保证没有2个或更多用户可以拥有相同的号码?

谢谢, 杆

2 个答案:

答案 0 :(得分:2)

我不知道如何在你的标签中的技术中做到这一点,但你需要一个数据库,它保持每个数字的状态:采取或免费。您将在页面上有一个表单,它将选择的数字提交给表单处理程序,该处理程序将检查数据库中数字的状态。如果它被采用,你将向用户发送一个页面,上面写着“太糟糕了”或者某些东西,如果它是免费的,你会将其标记为已拍摄,然后发送一个页面说它们已经获得它。

您的服务器可能以先到先得的方式处理请求,如果您使用任何现代数据库,它将阻止您(您不希望两个人同时尝试获取相同的数字)

另外,表单和表单处理程序不必是不同的文件

你可能想记录谁拿了什么号码,所以没有被采取的状态可能就是没有这个号码用户名的状态。

答案 1 :(得分:1)

这个问题被标记为sql-server所以我将提供一个SQL Server答案......

如果您的表具有注册用户ID和编号,并且对这两列具有唯一约束,那么如果插入记录成功,则该用户声明该记录,否则它不可用。

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();