سلام
کاربر وارد سایت میشه و مبلغ مورد نظر را وارد میکنه .
ما چطوری یکماه دیگه بهش اجازه دسترسی بدیم مثلا بگیم شما الان 92/11/06 است تا 92/12/06 حسابتان شارژ شد . این اضافه کردن خودکار به تاریخ چجوری است ؟
ممنون
سلام
کاربر وارد سایت میشه و مبلغ مورد نظر را وارد میکنه .
ما چطوری یکماه دیگه بهش اجازه دسترسی بدیم مثلا بگیم شما الان 92/11/06 است تا 92/12/06 حسابتان شارژ شد . این اضافه کردن خودکار به تاریخ چجوری است ؟
ممنون
اگر از متغیر datetime استفاده کنید اینطور میشه
datetime expiretime=new datetime();
expiretime = f.AddMonths(1).ToString()
اگر متغیر expiretime رو به فیلدت add کنی تاریخ 1 ماه بعد رو میده
یک کم راهنمایی بیشتر این f چی هست . از چه نوعی تعریف میشه ؟
من از این کد برای نمایش تاریخ شمسی استفاده می کنم
DateTime dt1 = DateTime.Now;
string date = pc.GetYear(dt1).ToString() + "/" + pc.GetMonth(dt1).ToString() + "/" + pc.GetDayOfMonth(dt1).ToString();
حالا بخوام یک ماه بعد این تاریخ را نمایش بده چکار کنم .
آخرین ویرایش به وسیله korosh00 : دوشنبه 07 بهمن 1392 در 21:45 عصر
من روی کد خودتون اعمال میکنم که بهتر متوجه بشین:
DateTime dt1 = DateTime.Now;
string date = pc.GetYear(dt1).ToString() + "/" + pc.GetMonth(dt1).ToString() + "/" + pc.GetDayOfMonth(dt1).ToString();
Response.Write(date + "<br />");
dt1 = dt1.AddMonths(1);
date = pc.GetYear(dt1).ToString() + "/" + pc.GetMonth(dt1).ToString() + "/" + pc.GetDayOfMonth(dt1).ToString();
Response.Write(date);
تشکر
فقط اینکه خودش سی روز یا سی و یک روز را متوجه هست دیگه درسته !
خوب الان تاریخ انقضا را ثبت کردیم .
در برنامه چی میگیم که خودش متوجه بشه .
مثلا هر وقت رسید به تاریخ مورد نظر چی بشه ؟ مقدار فیلدی را 0 بگذار یا چی ؟
یا فقط اونهایی را نمایش بده که تاریخشون بین ثبت و انقضاست ؟
چی ؟
ممنون هستم
بله در کلاس DateTime به میلادی و در کلاس PersianCalendar به شمسی ماه ها رو حساب میکنه کدوم ماه 30 یا 31 روز هست، حتی سالهای کبیسه هم توش تعریف شده.
به نظرم یک فیلد برای هر کاربر بذارید مثلا confirm از نوع bit
تا زمانی که تارخ به expierDate نرسیده فیلد confirm مقدارش true باشه، و هنگامی که زمان منقضی شد مقدارش false بشه.
برای دسترسی هر کاربر هم همین فیلد confirm چک بشه
امیدوارم خوب راهنمایی کرده باشم
ببینید این چک کردن چجوری صورت میگیره .
اول کار که true هست حالا کاربر وارد سایت میشه تو pageload صفحه چک می کنیم اگر مقدار تاریخ از تاریخ الان گذشته بود مقدار فیلد را false کنه و خوب کاربر هم نمی تونه وارد بشه یا موارد دیگر .
درسته؟
می تونید ی نحوی چک کردن برام بگذارید ؟
ممنون هستم
دقیقا مثل چک کردن user, pass برای ورود کاربر!
همون موقع که کاربر اطلاعات رو وارد میکنه برای ورود وشما چک میکنید، همزمان چک کنید این user اجازه دسترسی (confirm) دارد یا خیر؟ اگر true بود وارد بشه در غیر اینصورت نه.
اگر هم ورود برای همه مجاز هست و دسترسی به بعضی منابع مانند دانلود از سایت احتیاج به شارژ حساب داره بعد از ورود مقدار confirm رو واکشی کنید و فقط در نمایش منابع ویژه دسترسی رو چک کنید.
منظورم اینه چطوری خودش دیتابیس را پر کنه ؟
بعدش چطور تاریخ رابفهمه از انقضاء گذشته ؟
مثلا بگه اگر از
if data>92/11/06
مقدار فیلد را false کن .
نباید این در یک global باشه و چک بشه ؟
کونری چک ردن تاریخ چجوری ؟
ممنون
برای مقایسه 2 تاریخ میتونید از این روش استفاده کنید:
string date = "01/04/2013";
DateTime myDate = DateTime.ParseExact(date, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture) ;
if (myDate > DateTime.Today)
{
Response.Write("greater than");
}
else
{
Response.Write("Less Than");
}
در پروژه شما چون کاری که قرار است انجام بشه مربوط به تمام کاربران سایت هست، یعنی کل سایت رو پوشش میده پس باید در فایل Global.asax این کار انجام بشه. یک مثال میزنم:
void Application_Start(object sender, EventArgs e)
{
System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(MyThread));
thread.IsBackground = true;
thread.Name = "MyThread";
thread.Start();
}
void MyThread()
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.Elapsed += new System.Timers.ElapsedEventHandler(MyTask);
timer.Interval = 10000;
timer.Enabled = true;
timer.AutoReset = true;
timer.Start();
}
void MyTask(object sender, System.Timers.ElapsedEventArgs e)
{
//My task
}
در این مثال هر کدی که در متد ()MyTask باشه، هر 10 ثانیه یکبار انجام میشه. در واقع این کد یک نمونه برنامه ریزی (Scheduled) برای سایت یه حساب میاد.
نظیر سایت هایی که در زمانی مشخص ایمیلی ارسال میکنند، پیامک می فرستند، یا هر دسترسی رو کنترل میکنند.
تشکر ویژه میرم تست کنم .
فقط اینجا به یکی از سوالات من هم مربوط میشه اونم ارسال ایمیل در زمان آینده است از همین روش استفاده میشه ؟
من تیک ارسال را بزنم و سایت را ببندم و برم خودش یکساعت دیگه همه را ارسال کنه !!
ممنون این را هم حل کنید خیلی کارم راه می افته .
راستی من چجوری اون چک کردن را انجام بدم . چجوری بگم فیلدهای تاریخ انقضارا ببین هر کدام گذشته بود فلان کار را بکن ؟
ممنون
بله از همین روش استفاده میشه، ببینید برنامه های تحت وب روی سرور همیشه آنلاین هستن و لازم نیست شما اون رو باز نگه دارید. خودش رو سرور کار رو انجام میده.
اگر نام فیلدهای جدولتون رو بگید من بهتر میتونم کد بدم.
من یک جدول دارم بنام آگهی agahi
فیلدها :
idagahi,iduser,nameagahi,ghemateagahi,aksagahi,tar ikhsabtnam,tarikhengheza,taeed
آی دی کاربر
آی دی آگهی
نام آگهی
قیمت آگعی
عکس آگهی
تاریخ ثبت
تاریخ انقضا
تایید
این سوال را بی جواب نگذارید . فقط در global چطوری باید چک کرد مقادیر فیلد انقضاء و اگر تاریخ گذاشته بود مقدار فیلد تایید برابر صفر بشه . همین
ممنون
واقعا ببخشید دیشب یک مسافرت فوری برام پیش اومد و اینترنتم واقعا بی کیفیت هست، به همین دلیل تاخیر افتاد!
همونطور که در پست های قبلی خدمتتون گفتم در فایل Global.asax کافیه کد شبیه به این کار بنویسید:
SqlConnection con = new SqlConnection(@"data source=.\sqlexpress; attachdbfilename=|datadirectory|\Database.mdf; integrated security=true; user instance=True");
con.Open();
SqlCommand cmd1 = new SqlCommand("select * from agahi", con);
SqlDataReader r = cmd1.ExecuteReader();
int count = r.Cast<object>().Count();
string[] idagahi = new string[count], tarikhengheza = new string[count];
int i = 0;
while (r.Read())
{
idagahi[i] = r["idagahi"].ToString();
tarikhengheza[i] = r["tarikhengheza"].ToString();
i++;
}
r.Close();
i = 0;
while (i < idagahi.Length)
{
int d = Convert.ToDateTime(tarikhengheza[i]).CompareTo(DateTime.Now);
if (d == -1)
{
SqlCommand cmd2 = new SqlCommand("update agahi set taeed='false' where idagahi=@idagahi", con);
cmd2.Parameters.AddWithValue("@idagahi", Convert.ToInt32(idagahi[i]));
cmd2.ExecuteNonQuery();
}
i++;
}
con.Close();
از روی مراحل این کد میتونید راحت الگوریتم رو درک کنید، و بهتر هست خودتون کد رو بهینه تر کنید، هر چند این کد هم جواب میده!
متاسفانه هنوز اتفاقی نیفتاده!
مشکلتون کجاست؟ اگر خطایی میده بفرماین کدوم خط هست!
من تست کردم جواب گرفتم
هیچ خطایی نمی ده . هیچ کاری انجام نمیشه ؟
همون کد من را تست کردید ؟
شما در دیتابیستون نوع فیلد تاریخ انقضا رو چی در نظر گرفتین؟ nvarchar ؟
با اکسس هست از نوع Short Text گرفتم تست کردم مشکلی نداره چون من قبلا تو گرید ویو گفتم تاریخ های گذشته را با رنگ قرمز و هنوز مانده را با رنگ سبز نشون بده خوب نشون میده . یعنی الان مشکل از اونه ؟
خب در مقایسه 2 تاریخ فکر میکنم مشکل ایجاد بشه! چون دارین متن ذخیره میکنید.
نه مشکل از تاریخ و مقایسه ها نیست همه اونها فکر کنم درست باشه ! چون من در کوئری آخر گفتم آپدیت کن اونی را که (مثلا آی دی سطر را دادم=99) کار کرد . ولی من می خوام همه سطرها را چک کنه نه فقط سطری که آی دیش 99 است !!
ممنون . این را حل کنید تشکر فراوان
بله چون فرمت تاریختون در بانک با فرمت تاریخی که به صورت شمسی تهیه کردین میشه باهم مقایسه کوچکتر و بزرگتر انجام داد.