2014-10-12 72 views
4

我們在使用RSform pro構建的joomla中有一個窗體。 有一個腳本,可以限制一個註冊會員提交的5個提交文件。限制Joomla 24小時每用戶ID的提交數

// 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>'; 
    } 

但是 - 我們必須修改它,以便: - >最大提交子句保持24小時 - 和限制 - 用戶可以在24小時內從做第一次提交的時間做最多5份意見書24小時後自動關機

任何建議或幫助!

回答

0

在數據庫中創建一個字段,提交時間爲(int),並使用php time()函數插入時間,並使用current_time-last_post_time比較每次提交的時間。

0

您需要保存保存到數據庫的每個提交的創建日期。

因此,例如,一個字段添加到您的表稱爲createdDateDATETIME

,然後確保你更新INSERTDATE()所以當前時間保存到它傳遞時,提交保存。

然後你可以使用這樣的事情:

$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)')); 

要獲得在過去24小時內所有來稿該用戶ID

你算的結果:

$db->setQuery($query); 
$counter = $db->loadResult(); 

您可能需要使用count($counter)獲得總數。 我不知道你的loadResult()函數如何返回數據。