PDA

View Full Version : سوال: تحلیل



soroush.r70
شنبه 01 شهریور 1393, 17:50 عصر
من باید بخشی در وب سایتم ایجاد کنم که شیوه ی کارش به این صورته که کاربر اولین بار وارد حساب کاربریش میشه فقط میتونه 10 ملک رو به رایگان ثبت کنه و فقط میتونه بخشی از اون چیزهایی رو که ثبت کرده ویرایش کنه و برای ثبت ملک های بیشتر باید هزینه ای پرداخت کنه که باید به این صورت باشه که یک ماهه سه ماهه شش ماهه و یک ساله میتونه حسابشو تمدید کنه و ثبت کلک رو انجام بده حالا من باید اینو به چه صورت پیاده سازی کنم که کاربر یکی از اون مدت زمان ها رو انتخاب کرد تا اون مدت زمان بتونه ملک ثبت کنه و بعد اینکه مدت زمانش تموم شد دوباره برگرده به همون اولی که 10 ملک رایگان ثبت میکرد تا حسابشو دوباره تمدید کنه و یه پیغام بده که باید تمدید حساب کنی ممنون میشم دوستان که منو در پیاده سازی این کار راهنمایی کنید چون تا حالا در این سطح انجام ندادم و لطف میکنید اگه توضیحاتتون دقیقو واضح باشه با تشکر

arash691
شنبه 01 شهریور 1393, 18:05 عصر
شما یک فیلد برای کاربر بگیر که نشون بده کاربر چه حسابی داره ... مثلا" اگر حساب رایگان بود کد 0 ، حساب 3 ماهه کد 3 و ... بعدش تاریخ واریز شدن پول رو داشته باش بعد با تاریخ جاری مقایسه کن اگر تاریخ انقضاء تموم شد اون فیلد به کد 0 تغییر بده

2undercover
شنبه 01 شهریور 1393, 19:15 عصر
می تونید توی یک جدول بعد از خرید طرح یا تمدید اون تاریخ انقضا رو محاسبه کنید و ذخیره بکنید و بعد کافیه فقط بررسی کنید تاریخ اون لحظه ی درخواست از اون تاریخ انقضای طرح بیشتر هست یا نه.

soroush.r70
یک شنبه 02 شهریور 1393, 17:48 عصر
شما یک فیلد برای کاربر بگیر که نشون بده کاربر چه حسابی داره ... مثلا" اگر حساب رایگان بود کد 0 ، حساب 3 ماهه کد 3 و ... بعدش تاریخ واریز شدن پول رو داشته باش بعد با تاریخ جاری مقایسه کن اگر تاریخ انقضاء تموم شد اون فیلد به کد 0 تغییر بده


ممنون میشم یه مثال بزنین که این تاریخ واریز شدن و تاریخ جاری رو چطور مقایسه کنم که وقتی تموم شد مثلا تمدید یک ماهه دوباره برگرده به همون صفحه 10 رایگان ثبت شده؟

arash691
یک شنبه 02 شهریور 1393, 19:13 عصر
ببینید مثلا" کاربر X میاد تو سایت شما ثبت نام میکنه خوب پس تا اینجای کار شما عدد 0 رو برای فیلد مربوط به نوع حساب کاربر درنظر میگیرید در صورتی که خواست حساب خودش رو به یکی از حالت های ممکن ( 1 ماهه ، 3 ماهه و ... ) ارتقاء بده با توجه به نوع حساب کد مربوط به نوع حساب مشتری رو تغییر میدین و یک فیلد از قبل برای ثبت تاریخ پرداخت تو جدول کاربرها درنظر گرفته شده که در صورت ارتقاء حساب مقدارش میشه time stamp روزی که پول واریز شده ، طبیعتا" حساب کردن time stamp مربوط به 1 یا 3 و ... ماه دیگه یک عدد ثابت میشه و با توجه به نوع حساب و time stamp واریز مبلغ قابل محاسبه خواهد بود پس فقط تنها کاری که لازم هستش بکنید اینه که زمانی که کاربر میخواد لاگین کنه به حساب خودش اختلاف این دو مقدار رو بررسی کنید که بزرگتر از صفر باشه یعنی هنوز اختلاف منفی نشده . البته چک کردن اختلاف رو میشه به عهده ی سرور بگذاریم که خودش بیاد و این اختلاف رو واسه کاربرها بررسی کنه اینطوری اگه کاربری هم لاگین نکنه تغییرات برروی حسابش اعمال میشه ...

soroush.r70
دوشنبه 03 شهریور 1393, 09:54 صبح
ممنون فقط میشه بگید چطور تاریخ ثبت شده در جدول و تاریخ جاری مقایسه کنم طبق اون ماهی که انتخاب کرده امکانش هست لطف کنید با یه مثال توضیح بدید. متشکرم

arash691
سه شنبه 04 شهریور 1393, 12:19 عصر
اینا اسم های فرضی خودم برای جدول کاربرها هستش :

من تو جدول user_tbl دو تا فیلد ( peyment_ts و account_type ) قرار دادم مثلا" موقع لاگین کاربر این دوتا مقدار رو میریزم تو سشن و پاس میدم به تابع زیر :


function getEXP($account_type , $peyment_ts){
switch($account_type){
case 1:
return $peyment_ts + (3600 * 24 * 30);
break;
case 3:
return $peyment_ts + (3600 * 24 * 30 * 3);
break;
case 6:
return $peyment_ts + (3600 * 24 * 30 * 6);
break;
case 9:
return $peyment_ts + (3600 * 24 * 30 * 9);
break;
case 12:
return $peyment_ts + (3600 * 24 * 30 * 12);
break;
}
}

بعدش مقداری که این تابع برمیگردونه را با تابع time چک میکنیم :


if( getEXP($_SESSION['acc_type'],$_SESSION['pey_ts']) > time() ){

}

اگه time که ts جاری رو میده کوچکتر از getEXP بود یعنی هنوز حساب طرف منقضی نشده.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
یک کار دیگه ای هم میشه ts مربوط به انقضا رو تو جدول نگه داریم و دو تا فیلد ts مربوط به پرداخت و انقضا رو با هم مقایسه کنیم