如何限制每天提交表单的总数

时间:2011-05-25 13:31:06

标签: mysql html expressionengine

任何人都可以指导我如何将表单设置为在一天中的特定时间段内启用。

或如何限制每天或每周的表单提交总数等。

例如

我需要在一天或一小时内发送100份表单提交后自动禁用该表单等。

每天应将100份提交内容添加到表格中。一旦发送了100个条目,表格不应再接受当天剩余时间的任何提交。

要求:我们需要每天处理一定数量的问题/提交。一旦某个表中的提交数量达到100或任何其他数字,表格应该被禁用。

我可以使用哪个MySQL Query?

或者可以通过Javascript禁用表单吗?

这是一个简单的表格:

<p><label for="name">Name</label><br />
   <input type="text" name="name" value="name" id="name" size="37" /></p>

<p><label for="email">Email Address</label><br />
   <input type="text" name="email" value="email" id="email" size="37" /></p>

<p><label for="comment">Comment</label><br />
   <textarea name="comment" rows="8" cols="35" id="comment">comment</textarea></p>

<p><input type="submit" name="submit" value="Submit" /></p>

更新:感谢Quentin

这是我已达到的代码。

SELECT count(*) AS count FROM data where channel_id='2'"; 

if (count <= 100) {show the form} else {show a message that the form is closed} 

该表有3个字段, [年] [月] 和[天]。 我如何以这种方式使用CURDATE(),因为日期分为3个字段?

5 个答案:

答案 0 :(得分:2)

你不能做这个客户端。

以下行的查询:

select count(*) from myTable where myDateColumn >= CURDATE();

应该这样做。

在决定是否应该生成表单时,以及在决定是否接受表单提交时使用它。

答案 1 :(得分:0)

在显示表单的页面上: 查询数据库:在索引上使用MySQL COUNT来获取num行(1row = 1 response ??)其中submitday = today

在提取时间/日期时,请参阅以下链接,尤其是第二个链接 http://dev.mysql.com/doc/refman/5.1/en/counting-rows.html

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

如果numrows = 100 使用javascript'display:none'表单,'display:block'你的div

<div id="toomuch" style="display:none;"><p>I'm sorry this form is closed for the day, try again tomorrow</p></div>

答案 2 :(得分:0)

向数据库添加时间字段并使用curdate进行实例化然后执行此查询

 SELECT count(id) from TABLE where DATA=CURDATE();

然后,您可以在代码中实现一个函数来处理表单提交。

答案 3 :(得分:0)

以下代码有效:

SELECT count(*) AS count FROM `channel`

where `day` = DAY(CURDATE())

and `channel_id` = '2'

现在需要进行实时测试,如果它与CMS一起使用的话。表格是否隐藏。

如果我手动尝试编辑“{if count&lt; ='100'}”,表单会隐藏,表单会隐藏,但我担心它是否会自动运行。我想生病必须等到早上。

答案 4 :(得分:0)

如果我理解这是正确的,这是您网站上显示的表格(而非控制面板发布表格?) - 如果是这样,这相当简单。根据时间戳对您的数据库(如果您存储表单数据的位置)进行记录计数检查,正如其他人使用示例SQL语句所示。当您达到限制时,您可以显示没有帖子值的表单,并使用javascript&amp; amp;它的样式使它看起来不可用(或者不显示所有内容)。

在伪代码中:

Set timeframe  = week, day, etc.
Set maxsubmissions = 100 (or whatever)

Set sumbissioncount = Query db to get number of submissions within timeframe 

If submissioncount is less than maxsubmissions
 {embed form}
Else 
 {embed disabled form}
End if

注意给出的sql示例只会计算每天,而不是星期,例如你必须修改一周 - 使其通用使用上面示例中的范围之间的between子句或plunk vars:参见相关主题:Date Range Query MySQL