как ограничить общее количество отправленных форм в день - PullRequest
2 голосов
/ 25 мая 2011

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

Или как ограничить общее количество отправлений формы в день или в неделю и т. Д.

Например,

Мне нужно, чтобы форма автоматически отключалась, как только 100 отправленных форм были отправлены в день или час и т. Д.

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

Требование: нам нужно обрабатывать определенное количество вопросов / заявок в день.Форма должна быть отключена, как только число представлений в определенной таблице достигнет 100 или любого другого числа.

Какой запрос MySQL можно использовать?

Или форму можно отключить с помощью 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>

Обновление: благодаря Квентину

вот код, который я набрал.

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 ]

2 голосов
/ 25 мая 2011

Вы не можете сделать это на стороне клиента.

Запрос по направлениям:

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

должен помочь.

Используйте его при принятии решения, еслиВы должны сгенерировать форму, и при принятии решения о том, следует ли принимать форму отправки.

0 голосов
/ 26 мая 2011

Если я правильно понимаю, это форма, отображаемая на вашем сайте (а не форма публикации панели управления?) - если это так, то это довольно просто. Проведите проверку количества записей в вашей БД (если именно там вы храните данные формы) на основе отметки времени, как другие показали в примере оператора SQL. Когда вы достигнете своего предела, вы можете отобразить форму без значения сообщения и отключить ее, используя javascript и стилизовав ее так, чтобы она выглядела непригодной для использования (или не отображала все).

В псевдокоде:

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 будут учитываться только в день, а не в неделю, вам нужно будет изменить это, например, на неделю - для того, чтобы сделать это обобщенным, используйте предложение Между или Планк-переменные между диапазонами в примерах выше: см. Связанную ветку : Диапазон дат Query MySQL

0 голосов
/ 25 мая 2011

Сработал следующий код:

SELECT count(*) AS count FROM `channel`

where `day` = DAY(CURDATE())

and `channel_id` = '2'

Теперь его нужно тестировать в реальном времени, работает ли он с CMS или нет. Форма скрывается или нет.

Форма скрывается, если я вручную пытаюсь редактировать "{if count <= '100'}", форма скрывается, но меня беспокоит, будет ли она работать автоматически Я думаю, что надо ждать до утра. </p>

0 голосов
/ 25 мая 2011

Добавить поле времени в вашу базу данных и создать экземпляр curdate, затем выполнить этот запрос

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

Затем вы можете реализовать функцию в вашем коде для обработки отправки формы.

0 голосов
/ 25 мая 2011

На вашей странице отображается форма: Запрос к вашей базе данных: используйте MySQL COUNT для индекса, чтобы получить num строк (1row = 1 ответ ??), где 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 для «отображения: нет» вашей формы, «отображения: блокирования» вашего div

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

...