我们在joomla中使用RSform pro构建了一个表单。 有一个脚本可以将注册会员提交的总数限制为5份。
// Define the maximum number of submissions.
$max = 5;
$user = JFactory::getUser();
$db = JFactory::getDbo();
$query = $db->getQuery(true);
// Setup the query.
$query->select('COUNT('.$db->qn('UserId').')')
->from($db->qn('#__rsform_submissions'))
->where($db->qn('FormId').'='.$db->q($formId))
->where($db->qn('UserId').'='.$db->q($user->get('id')));
$db->setQuery($query);
$counter = $db->loadResult();
if ($counter >= $max){
$formLayout = '<p style="color:red;">Rejected</p>';
}
但是 - 我们必须对其进行修改,以便: - &gt;最大提交条款保留24小时 - 用户可以在首次提交完成后的24小时内完成最多5次提交 - 以及24小时后自动关闭的限制
任何建议或帮助!!
答案 0 :(得分:0)
在数据库中创建一个字段,提交时间为(int),使用php time()函数插入时间,并使用current_time-last_post_time比较每次提交的时间。
答案 1 :(得分:0)
您需要保存保存到数据库的每个提交的创建日期。
因此,例如,在createdDate
<{1}}中将字段添加到DATETIME
然后确保更新INSERT
以传递DATE()
,以便在保存提交时将当前时间保存到其中。
然后你可以使用这样的东西:
$query->select('COUNT('.$db->qn('UserId').')')
->from($db->qn('#__rsform_submissions'))
->where($db->qn('FormId').'='.$db->q($formId))
->where($db->qn('UserId').'='.$db->q($user->get('id')));
->where($db->qn('createDate').'=> DATE_SUB(NOW(), INTERVAL 24 HOUR)'));
获取该UserId过去24小时内的所有提交
你计算结果:
$db->setQuery($query);
$counter = $db->loadResult();
您可能需要使用count($counter)
来获取总数。
我不确定你的loadResult()函数如何返回数据。