پارس جوم ::  انجمن های تخصصی جوملا
محدوديت ارسال فرم براي هر كاربر در rs form - نسخه‌ی قابل چاپ

+- پارس جوم :: انجمن های تخصصی جوملا (https://forums.parsjoom.ir)
+-- انجمن: پشتیبانی (/forum-70.html)
+--- انجمن: مباحث و مشکلات عمومی (/forum-33.html)
+--- موضوع: محدوديت ارسال فرم براي هر كاربر در rs form (/thread-5001.html)



محدوديت ارسال فرم براي هر كاربر در rs form - aparizi - ۱۹-۱۲-۱۳۹۰ ۰۶:۰۵ صبح

همانطور که استحضار دارید rsform pro امکانی را به طراح می دهد که بتواند اسکریپتهای مختلف را در آن وارد کند من به دنبال اسکریپتی هستم که وقتی کاربر لاگین کرد نام کاربری او چک شود و بطور مثال هر کاربر فقط دو بار مجاز به ارسال فرم باشد و در دفعه سوم پیامی به او نمایش داده شود
در سایت سازنده به این کد برخوردم:
$rsuser =&JFactory::getUser();$myid = intval($rsuser->get('id'));if ($myid > 0 && mysql_num_rows(mysql_query("SELECT `SubmissionId` FROM `jos_RSFORM_SUBMISSIONS` WHERE `UserId`='".$myid."' AND `FormId`='1' LIMIT 1")) > 0)$formLayout = 'You have already completed this form.';
اما با ارور شبیه ارور زیر مواجه می شوم:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/xxxxxx/public_html/administrator/components/com_rsform/helpers/rsform.php(1043) : eval()'d code on line 3
آیا راهکاری دارید
چك كردن از طريق ip يا ايميل مد نظر نمي باشد


RE: محدوديت ارسال فرم براي هر كاربر در rs form - محمدسلیمانی - ۱۹-۱۲-۱۳۹۰ ۰۷:۳۰ صبح

براي اينكار به يك اسكريپت در "ناحيه ي اسكريپت هاي فراخواني شده روي فرم نمايش "نياز است :
کد:
global $database;
$database = JFactory::getDBO();
$database->setQuery("SELECT COUNT(`SubmissionId`) FROM jos_rsform_submissions WHERE `formId`='2'");
$database->query();
if (intval($database->loadResult()) >= 50)
{
echo 'Sorry, no more submissions are accepted !';
$formLayout = '';
}
مثال بالا تعداد ارسالات را براي فرمي با id = 2 محدود مي كند .در صورتي كه تعداد ارسالات به تعداد محدوديت ( در اين مثال 50) برسد فرم واقعي با يك پيغام هشدار عوض مي شود .
(البته پیغامی خطایی که برای شما نمایش داده شده به این معنا است که sql شما قادر به برگرداندن نتیجه درخواست نیست.)


RE: محدوديت ارسال فرم براي هر كاربر در rs form - aparizi - ۱۹-۱۲-۱۳۹۰ ۱۱:۱۰ عصر

(۱۹-۱۲-۱۳۹۰ ۰۷:۳۰ صبح)mohammas نوشته شده توسط: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
براي اينكار به يك اسكريپت در "ناحيه ي اسكريپت هاي فراخواني شده روي فرم نمايش "نياز است :
کد:
global $database;
$database = JFactory::getDBO();
$database->setQuery("SELECT COUNT(`SubmissionId`) FROM jos_rsform_submissions WHERE `formId`='2'");
$database->query();
if (intval($database->loadResult()) >= 50)
{
echo 'Sorry, no more submissions are accepted !';
$formLayout = '';
}
مثال بالا تعداد ارسالات را براي فرمي با id = 2 محدود مي كند .در صورتي كه تعداد ارسالات به تعداد محدوديت ( در اين مثال 50) برسد فرم واقعي با يك پيغام هشدار عوض مي شود .
(البته پیغامی خطایی که برای شما نمایش داده شده به این معنا است که sql شما قادر به برگرداندن نتیجه درخواست نیست.)

دوست عزیز اسکریپت شما همه ارسال های مربوط به یک فرم را شامل می شود منظور من ارسالهای هر کاربر می باشد


RE: محدوديت ارسال فرم براي هر كاربر در rs form - a-sadeghi - ۱۵-۳-۱۳۹۴ ۰۸:۳۰ عصر

کار نمیکنه عزیز یه راهکار دیگه بده


RE: محدوديت ارسال فرم براي هر كاربر در rs form - پیام عمرانی - ۱۶-۳-۱۳۹۴ ۰۸:۵۳ عصر

از این کد استفاده کنید
این کد تعداد ارسالهای هر کاربر رو محدود میکنه به یک ارسال ، حالا اگه بیشتر میخواهید اون قسمت LIMIT رو بکنید 2

کد php:
$rsuser =&JFactory::getUser();
$myid intval($rsuser->get('id'));
if (
$myid && mysql_num_rows(mysql_query("SELECT `SubmissionId` FROM `jos_RSFORM_SUBMISSIONS` WHERE `UserId`='".$myid."' AND `FormId`='1' LIMIT 1")) > 0)
$formLayout 'شما هم اکنون این فرم را پر کرده اید.'
البته فراموش نکنید که قسمت "FROM `jos_RSFORM_SUBMISSIONS`" اون کلمه jos_ که پیشوند دیتا بیس هست رو تغییر بدید !!