基本上我对PHP一无所知,但我可以建议实现结果可能需要的方式.
您需要一个包含某些列的表,如下所示.
创建一个执行操作的存储过程,包括根据条件进行插入,更新,如下所示.
CREATE PROCEDURE sp_ManageButtonClickByUserId
@UserId INT,
@IsClick BIT = 0
AS BEGIN
-- Lets consider your table name is ManageButtonCLick with columns including
-- 1.UserId int
-- 2.FirstClickDateTime DateTime
-- 3.TotalClicks int
IF ISNULL(@IsClick,0) <> 0 -- Determine IsClick is true when pass from code
BEGIN
Declare @TotalClick AS INT
SET @TotalClick = (SELECT TotalClick FROM ManageButtonCLick WHERE UserID = @UserId);
SET @TotalClick = ISNULL(@TotalClick, 0) + 1;
If EXISTS(SELECT 1 FROM ManageButtonCLick WHERE UserID = @UserId) -- If user exists than update record
BEGIN
/* Determine the 24 is completed or not for specific user */
Declare @IsHoursCompleted AS BIT = 0; -- Indecates false
Declare @TotalHoursCompleted AS INT = 0;
SET @TotalHoursCompleted = (SELECT DATEDIFF(HOUR, FirstClickDateTime, GETDATE()) FROM ManageButtonCLick WHERE UserID = @UserId);
SET @IsHoursCompleted = (SELECT CASE WHEN ISNULL(@TotalHoursCompleted,0) >= 24 THEN 1 ELSE 0 END);
IF (ISNULL(@IsHoursCompleted,0) <> 0)
BEGIN
UPDATE ManageButtonCLick
SET FirstClickDateTime = GETDATE(), TotalClicks = 1
WHERE UserID = @UserId
END
ELSE
BEGIN
UPDATE ManageButtonCLick
SET TotalClicks = @TotalClick
WHERE UserID = @UserId
END
END
ELSE -- if user not exists than insert that user detail for button click
BEGIN
INSERT INTO ManageButtonCLick (UserId, FirstClickDateTime, TotalClicks)
VALUES (@UserId, GETDATE(), @TotalClick)
END
END
END
Run Code Online (Sandbox Code Playgroud)
现在这一次来管理来自代码的点击
当用户加载此页面时(此时有"接受"按钮,您需要确定用户在24小时内完成了总点击次数.对于此任务,您必须创建一个返回true或false的函数).
如果为特定用户启用按钮而不是执行以下操作...
当用户单击"接受"按钮时,您需要从代码中调用该过程以及所需的参数.
此用户禁用其他按钮.