PDA

View Full Version : سوال: نحوه کم کردن زمان عضویت کاربران به صورت اتوماتیک؟



پیام حیاتی
پنج شنبه 16 مهر 1394, 16:55 عصر
سلام
یک سایت داریم که کاربر برای استفاده باید عضو شود و برای عضویت بسته های مختلفی در نظر گرفته شده مثل بسته یک ماه ، دو ماهه و ...پس از پرداخت عضویت و ثبت اطلاعات قیلدی در جدول هست که تعداد روزهای عضویت در آن نگهداری می شود مثلا" برای بسته یک ماهه عدد 30 در آن ذخیره شده است.
حال می خواهم با گذشت هر روز یک واحد از آن 30 روز کسر شود،به چه شکل باید این کار رو انجام بدم؟کوئری.
تشکر

s.hoseinpoor
پنج شنبه 16 مهر 1394, 20:27 عصر
دلیل اینکارتون چیه؟

شما بیایید زمان عضویت، براساس بسته عضویت، از تاریخ امروز یکماه بعدی رو در فیلد ذخیره کنین.
هر روز که کاربر وارد میشه میتونه، شما با تفریق تاریخ انتها و امروز تعداد روزهای بافی مانده رو بدست میارید

Mousavmousab
پنج شنبه 16 مهر 1394, 20:42 عصر
سلام
یک سایت داریم که کاربر برای استفاده باید عضو شود و برای عضویت بسته های مختلفی در نظر گرفته شده مثل بسته یک ماه ، دو ماهه و ...پس از پرداخت عضویت و ثبت اطلاعات قیلدی در جدول هست که تعداد روزهای عضویت در آن نگهداری می شود مثلا" برای بسته یک ماهه عدد 30 در آن ذخیره شده است.
حال می خواهم با گذشت هر روز یک واحد از آن 30 روز کسر شود،به چه شکل باید این کار رو انجام بدم؟کوئری.
تشکر



شما لازم نیست که هر روز یک واحد از آن کم کنید.
برای حل این مسئله :
فرض کنید کاربر 30 روز نیاز است از سایت شما استفاده کند. شما باید در زمان login شدن کاربر یک شرط را چک کنید.
اگر تاریخ جاری (CurrentDateTime) را از تاریخ قرارداد شما که کاربر VIP شده کم کنیم . عدد به دست آمده ( که تعداد روز ها را نشان می دهد) بیشتر از 30 روز شد نتواند از آن بخش یا محصول سایت شما استفاده کند یا به عبارتی از حالت VIP خارج شده. شما باید یک field از نوع DateTime داشته باشید تا بتوانید این سناریو را پیاده سازی کنید.
hoolity.com
موفق باشید

پیام حیاتی
پنج شنبه 16 مهر 1394, 20:44 عصر
دلیل اینکارتون چیه؟

شما بیایید زمان عضویت، براساس بسته عضویت، از تاریخ امروز یکماه بعدی رو در فیلد ذخیره کنین.
هر روز که کاربر وارد میشه میتونه، شما با تفریق تاریخ انتها و امروز تعداد روزهای بافی مانده رو بدست میارید
فیلد تاریخ رو اگر قرار بدیم بدین شکل : 1394/5/3 بعد برای محاسبه و کم کردن به چه شکل باید عمل کرد که / نادیده گرفته بشه؟
لطفا قطعه کد قرار بدید تشکر.

پیام حیاتی
پنج شنبه 16 مهر 1394, 21:56 عصر
شما لازم نیست که هر روز یک واحد از آن کم کنید.
برای حل این مسئله :
فرض کنید کاربر 30 روز نیاز است از سایت شما استفاده کند. شما باید در زمان login شدن کاربر یک شرط را چک کنید.
اگر تاریخ جاری (CurrentDateTime) را از تاریخ قرارداد شما که کاربر VIP شده کم کنیم . عدد به دست آمده ( که تعداد روز ها را نشان می دهد) بیشتر از 30 روز شد نتواند از آن بخش یا محصول سایت شما استفاده کند یا به عبارتی از حالت VIP خارج شده. شما باید یک field از نوع DateTime داشته باشید تا بتوانید این سناریو را پیاده سازی کنید.
hoolity.com
موفق باشید
متوجه سناریو شدم قطعه کد می خواهم.

aminmousavi
پنج شنبه 16 مهر 1394, 23:23 عصر
سلام پیام جان .
اولا حتما فیلد sql ات رو برابر با datetime قرار بده و به هیچ عنوان تاریخ شمسی وارد نکن ، تاریخ میلادی رو توی دیتابیس ذخیره کن . برای کار با تاریخ هم کافی ابتدا مثلا 30 روزی که مدنظرت هست رو کم کنی از فیلدت مثلا فرض کن اسم فیلد تاریخ عضویت کاربرت ddd است که از جنس Datetime هست

ddd= ddd.AddDays(-30);

و بعد با تاریخ جاری مقایسه کنی

if (ddd <= DateTime.Now)
{
// ozviyat tamom shode
}

ahmad156
جمعه 17 مهر 1394, 10:05 صبح
همون طور که دوستمون aminmousavi (http://barnamenevis.org/member.php?338620-aminmousavi) گفتن همیشه از تاریخ میلادی استفاده کنین ولی اگر تاریخ شمسی رو هم کنارش داشته باشین خوبه .مثلا اگر خواستین بر اساس ماه شمسی گزارش گیری کنین خیلی کارتون رو راحت میکنه که با تاریخ میلادی یه خرده کار میبره

پیام حیاتی
جمعه 17 مهر 1394, 11:18 صبح
سلام پیام جان .
اولا حتما فیلد sql ات رو برابر با datetime قرار بده و به هیچ عنوان تاریخ شمسی وارد نکن ، تاریخ میلادی رو توی دیتابیس ذخیره کن . برای کار با تاریخ هم کافی ابتدا مثلا 30 روزی که مدنظرت هست رو کم کنی از فیلدت مثلا فرض کن اسم فیلد تاریخ عضویت کاربرت ddd است که از جنس Datetime هست

ddd= ddd.AddDays(-30);

و بعد با تاریخ جاری مقایسه کنی

if (ddd <= DateTime.Now)
{
// ozviyat tamom shode
}


یک فیلد به نام n_dt ایجاد کردم در جدول و تاریخ رو با استفاده از قطعه کد زیر در اون ذخیره کردم :


string dt = DateTime.Now.ToString("yyyy-MM-dd h:m:s");

در قسمت لاگین کدهای زیر رو برای انتخاب تاریخ ثبت نام ایجاد شده بر اساس پسورد و ذخیره آن نوشتم :

con.Open();
SqlCommand com = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter();
string result = "SELECT n_dt FROM T_Namayandegi WHERE n_pass= '" + txtPass.Text + "' ";
SqlCommand showresult = new SqlCommand(result, con);
string dtN = showresult.ExecuteScalar().ToString();
if{
???
}
//Label1.Text = dtN + "زمان عضویت به پایان رسیده است";

الآن تاریخ ثبت نام در متغیر dtN ذخیره شده ، در قسمت if شرط رو به چه صورت باید بنویسم؟
یک سوال دیگه اینکه چرا dtN در label نمایش داده نمی شود؟
تشکر