نمایش نتایج 1 تا 4 از 4

نام تاپیک: بررسی تاریخ شمسی برای محدود کردن سن شخص در ثبت نام

  1. #1

    بررسی تاریخ شمسی برای محدود کردن سن شخص در ثبت نام

    سلام و خسته نباشید.
    من یک کامبوباکس سال دارم که به صورت جداگانه تاریخ شمسی رو نشان میدهد . و میخواهم تاریخ شمسی امروز را با مقدار تاریخ شمسی کامبوباکس مقایسه کنم که اگر تاریخ شمسی یا همان سن طرف بیشتر از 20 سال بود ثبت نام را انجام دهد اگر کمتر از 20 سال داشت انجام ندهد.
    این رو هم بگم این نوع کد نویسی برای ASP هستش و الان با مشکلی که برخورد دارم این هستش که اگه یک اطلاعات ناقص یا مقادیر خواسته شده اشتباه باشه پیغام alert ظاهر میشه ولی وقتی پیغام ظاهر میشه من میخوام تمام مقادیر داخل کادر متن بماند و از بین نرود ولی هر نوع کد نویسی انجام دادم وقتی پیغام اشکال در اطلاعات ظاهر شد سریعا تمام مقادیر کادر متن به حالت اول و یا خالی میشود. و برای جلویگری اش نمی دانم چیکار کنم اینهم دستورات بنده.
    این هم در فرم لود نوشتم.


    protected void Page_Load(object sender, EventArgs e)
    {
    if (!IsPostBack)
    {
    if (Session["U_ID_Card"] == null)
    {
    Response.Redirect("~/Index.aspx");
    }
    else
    {
    if (Convert.ToInt32(TxtYear.Text) == 1300)
    {
    LoadDate();
    string sesion = Session["U_ID_Card"].ToString();
    var q = from user in db.Tbl_Demo_User_Registration
    where user.U_ID_Card == sesion
    select new
    {
    codeemali = user.U_ID_Card,
    };
    foreach (var value in q)
    {
    TxtCodeMali.Text = value.codeemali;
    }
    }
    else
    {
    if (IsPostBack)
    {
    if (Convert.ToInt32(TxtYear.Text) == 1300)
    {
    showInfor();
    LoadDate();
    return;
    }
    else
    {
    showInfor();
    return;
    }
    }
    }
    }
    }
    }

    این دستور هم برای ذخیره نوشتم.

    void Save()
    {
    try
    {
    string sesion = Session["U_ID_Card"].ToString();
    PersianCalendar persian = new PersianCalendar();
    string shamsi = TxtYear.Text + "/" + TxtMonth.Text + "/" + TxtDay.Text;
    string yearr = shamsi.Substring(0, 4);
    string manth = shamsi.Substring(shamsi.Length - 5, 2);
    string day = shamsi.Substring(shamsi.Length - 2, 2);
    int datebefor = 20;
    if (Convert.ToInt32(TxtYear.Text) <= persian.GetYear(DateTime.Now.AddYears(-datebefor).Date))
    {
    if (TxtShomareHesab.Text.Length < shomarehesab)
    {
    string script = "window.onload = function(){ alert('";
    script += "شماره حساب بانک ملی صحیح نمی باشد.";
    script += "');";
    script += "window.location = '";
    script += "'; }";
    ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
    return;
    }
    if (TxtPhoneHome.Text.Length > limitPhone)
    {
    string script = "window.onload = function(){ alert('";
    script += "شماره منزل صحیح نمی باشد.";
    script += "');";
    script += "window.location = '";
    script += "'; }";
    ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
    return;
    }
    if (TxtMoblie.Text.Length > limitPhone)
    {
    ClientScript.RegisterStartupScript(this.GetType(), "", "alert('شماره موبایل صحیح نمی باشد.');", true);
    string script = "window.onload = function(){ alert('";
    script += "شماره موبایل صحیح نمی باشد.";
    script += "');";
    script += "window.location = '";
    script += "'; }";
    ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
    return;
    }
    if (TxtPhoneJob.Text.Length < limitPhone)
    {
    ClientScript.RegisterStartupScript(this.GetType(), "", "alert('شماره تماس محل کار صحیح نمی باشد.');", true);
    string script = "window.onload = function(){ alert('";
    script += "شماره تماس محل کار صحیح نمی باشد.";
    script += "');";
    script += "window.location = '";
    script += "'; }";
    ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
    return;
    }
    else
    {
    string emial = TxtEmial.Text;
    string expression;
    expression = "\\w+([-+.\']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
    if (Regex.IsMatch(emial, expression))
    {
    if (Regex.Replace(emial, expression, String.Empty).Length == 0)
    {
    Tbl_Demo_User_Registration tblDemoUserRegistration =
    db.Tbl_Demo_User_Registration.First(d => d.U_ID_Card == sesion);
    tblDemoUserRegistration.U_Name = TxtName.Text;
    tblDemoUserRegistration.U_Last = TxtLast.Text;
    tblDemoUserRegistration.U_Semet = "کاربر";
    tblDemoUserRegistration.U_Passport = TxtShomariShenasname.Text;
    tblDemoUserRegistration.U_Birth_Shamsi_Year = TxtYear.Text;
    tblDemoUserRegistration.U_Birth_Shamsi_Month = TxtMonth.Text;
    tblDemoUserRegistration.U_Birth_Shamsi_Day = TxtDay.Text;
    tblDemoUserRegistration.U_Birth_Miladi =
    Convert.ToDateTime(ClsChangeDate.Miladi(yearr, manth, day));
    tblDemoUserRegistration.U_Name_Father = TxtnameFather.Text;
    tblDemoUserRegistration.U_Brith_City = TxtBornPlace.Text;
    tblDemoUserRegistration.U_Home_Phone = Convert.ToInt64(TxtPhoneHome.Text);
    tblDemoUserRegistration.U_Name_Bame = TxtNameBamie.Text;
    tblDemoUserRegistration.U_Shomare_Bamie = TxtShomareBamie.Text;
    tblDemoUserRegistration.U_Shomare_Hesab = TxtShomareHesab.Text;
    tblDemoUserRegistration.U_Mobile = Convert.ToInt64(TxtMoblie.Text);
    tblDemoUserRegistration.U_Job_Phone = Convert.ToInt64(TxtPhoneJob.Text);
    tblDemoUserRegistration.U_Full_Address_Home = txtAddressHome.Text;
    tblDemoUserRegistration.U_Full_Address_Job = TxtAddressJob.Text;
    tblDemoUserRegistration.U_Emial = TxtEmial.Text;
    tblDemoUserRegistration.U_Site = TxtUrl.Text;
    if (TxtMale.Checked == true)
    {
    tblDemoUserRegistration.U_Sex = TxtMale.Text;
    }
    else if (TxtFemale.Checked == true)
    {
    tblDemoUserRegistration.U_Sex = TxtFemale.Text;
    }
    db.SaveChanges();
    Session["U_ID_Card"] = TxtCodeMali.Text;
    showInfor();
    Response.Redirect("~/WebFormuploadInformation/UploadImagePersnoal.aspx");
    }
    else
    {
    string script = "window.onload = function(){ alert('";
    script += "ایمیل را وارد کنید";
    script += "');";
    script += "window.location = '";
    script += "'; }";
    ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
    return;
    }
    }
    else
    {
    string script = "window.onload = function(){ alert('";
    script += "ایمیل اشتباه می باشد.";
    script += "');";
    script += "window.location = '";
    script += "'; }";
    ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
    return;
    }
    }
    }
    else
    {
    string script = "window.onload = function(){ alert('";
    script += "سن شما اشتباه می باشد.";
    script += "');";
    script += "window.location = '";
    script += "'; }";
    ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
    return;
    }
    }
    catch (Exception ex)
    {
    string script = "window.onload = function(){ alert('";
    script += "خطا در اجرا دستورات / خطا 101." + ex.Message;
    script += "');";
    script += "window.location = '";
    script += "'; }";
    ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
    return;
    }
    }

    ممنون میشم برای جلوگیری از بین رفتن اطلاعات راهنمایی کنید با تشکر.
    آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 02 فروردین 1396 در 22:10 عصر

  2. #2

    نقل قول: بررسی تاریخ شمسی برای محدود کردن ثبت نام

    ابتدا یک نکته ای رو بگم اون اینکه بهتر هست که قبل از ارسال اطلاعات به سرور، در سمت کلاینت هم عمل Validation رو انجام بدید حالا یا با استفاده از کنترلهای Validation یا با javascript خودتون بنویسید. البته سمت سرور هم بایست عمل validation انجام بشه اما اعتبارسنجی سمت کلاینت و سرور به تنهایی کافی نیستند و بایست با هم وجود داشته باشند.

    اما در مورد کدهای شما؛
    اولین اشکال کد شما در متد Page_Load هست. خط 28 تا 40 هیچ وقت اجرا نخواهند شد چون در جایی این کد رو نوشتید که postback نبودن را بررسی کردید
                if (!IsPostBack)
    {
    //...
    if (IsPostBack)
    {
    //...
    }
    }

    در مورد مقایسه تاریخ ها(یا بدست آوردن سن)، چون به سن نیازی ندارید بهتر هست هر دو تاریخ (تاریخ تولد و آخرین تاریخ مجاز) را به میلادی بدست بیارید و مقایسه کنید. کدهای تکراری رو هم حذف کنید. و بهتر هست همه اطلاعات رو چک کنید و یک پیام کلی به کاربر بدید. (کد رو خودتون تست کنید)
            private void Save()
    {
    try
    {
    string sessionIdCard = Session["U_ID_Card"].ToString();
    PersianCalendar persian = new PersianCalendar();
    int minimumAge = 20;
    DateTime maximumBirthDate = persian.AddYears(DateTime.Today, -minimumAge);
    DateTime birthDate;
    int age = 0;
    StringBuilder messages = new StringBuilder();
    bool isValid = true;

    int year, month, day;
    bool yearIsValid = int.TryParse(TxtYear.Text, out year);
    bool monthIsValid = int.TryParse(TxtMonth.Text, out month);
    bool dayIsValid = int.TryParse(TxtDay.Text, out day);
    if (!yearIsValid)
    {
    messages.AppendLine("سال باید عدد باشد.");
    isValid = false;
    }
    if (!monthIsValid)
    {
    messages.AppendLine("ماه باید عدد باشد.");
    isValid = false;
    }
    if (!dayIsValid)
    {
    messages.AppendLine("روز باید عدد باشد.");
    isValid = false;
    }
    if (yearIsValid && monthIsValid && dayIsValid)
    {
    birthDate = new DateTime(year, month, day, persian); // convert persian Date to gregorian
    if (birthDate > maximumBirthDate)
    {
    messages.AppendLine("سن شما اشتباه می باشد.");
    isValid = false;
    }
    }
    if (TxtShomareHesab.Text.Length < shomarehesab)
    {
    messages.AppendLine("شماره حساب بانک ملی صحیح نمی باشد.");
    isValid = false;
    }
    if (TxtPhoneHome.Text.Length > limitPhone)
    {
    messages.AppendLine("شماره منزل صحیح نمی باشد.");
    isValid = false;
    }
    if (TxtMoblie.Text.Length > limitPhone)
    {
    //ClientScript.RegisterStartupScript(this.GetType(), "", "alert('شماره موبایل صحیح نمی باشد.');", true);
    messages.AppendLine("شماره موبایل صحیح نمی باشد.");
    isValid = false;
    }
    if (TxtPhoneJob.Text.Length < limitPhone)
    {
    //ClientScript.RegisterStartupScript(this.GetType(), "", "alert('شماره تماس محل کار صحیح نمی باشد.');", true);
    messages.AppendLine("شماره تماس محل کار صحیح نمی باشد.");
    isValid = false;
    }
    string email = txtEmail.Text.Trim(); // TxtEmial.Text;
    string expression = "\\w+([-+.\']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
    if (!Regex.IsMatch(email, expression) || Regex.Replace(email, expression, string.Empty).Length != 0)
    {
    messages.AppendLine("ایمیل اشتباه می باشد.");
    isValid = false;
    }

    if (!isValid)
    {
    string script = "window.onload = function(){ alert('";
    script += messages;
    script += "');";
    script += "window.location = '";
    script += "'; }";
    ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
    return;
    }

    Tbl_Demo_User_Registration tblDemoUserRegistration = db.Tbl_Demo_User_Registration.First(d => d.U_ID_Card == sessionIdCard);
    tblDemoUserRegistration.U_Name = TxtName.Text;
    tblDemoUserRegistration.U_Last = TxtLast.Text;
    tblDemoUserRegistration.U_Semet = "کاربر";
    tblDemoUserRegistration.U_Passport = TxtShomariShenasname.Text;
    tblDemoUserRegistration.U_Birth_Shamsi_Year = TxtYear.Text;
    tblDemoUserRegistration.U_Birth_Shamsi_Month = TxtMonth.Text;
    tblDemoUserRegistration.U_Birth_Shamsi_Day = TxtDay.Text;
    tblDemoUserRegistration.U_Birth_Miladi = birthDate;
    tblDemoUserRegistration.U_Name_Father = TxtnameFather.Text;
    tblDemoUserRegistration.U_Brith_City = TxtBornPlace.Text;
    tblDemoUserRegistration.U_Home_Phone = Convert.ToInt64(TxtPhoneHome.Text);
    tblDemoUserRegistration.U_Name_Bame = TxtNameBamie.Text;
    tblDemoUserRegistration.U_Shomare_Bamie = TxtShomareBamie.Text;
    tblDemoUserRegistration.U_Shomare_Hesab = TxtShomareHesab.Text;
    tblDemoUserRegistration.U_Mobile = Convert.ToInt64(TxtMoblie.Text);
    tblDemoUserRegistration.U_Job_Phone = Convert.ToInt64(TxtPhoneJob.Text);
    tblDemoUserRegistration.U_Full_Address_Home = txtAddressHome.Text;
    tblDemoUserRegistration.U_Full_Address_Job = TxtAddressJob.Text;
    tblDemoUserRegistration.U_Emial = email;
    tblDemoUserRegistration.U_Site = TxtUrl.Text;
    if (TxtMale.Checked == true)
    {
    tblDemoUserRegistration.U_Sex = TxtMale.Text;
    }
    else if (TxtFemale.Checked == true)
    {
    tblDemoUserRegistration.U_Sex = TxtFemale.Text;
    }
    db.SaveChanges();
    Session["U_ID_Card"] = TxtCodeMali.Text;
    showInfor();
    Response.Redirect("~/WebFormuploadInformation/UploadImagePersnoal.aspx");
    }
    catch (Exception ex)
    {
    string script = "window.onload = function(){ alert('";
    script += "خطا در اجرا دستورات / خطا 101." + ex.Message;
    script += "');";
    script += "window.location = '";
    script += "'; }";
    ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
    return;
    }
    }

  3. #3

    نقل قول: بررسی تاریخ شمسی برای محدود کردن ثبت نام

    سلام و تشکر بابت راهنمایی تان ولی در دستور تاریخ که دادید.

    tblDemoUserRegistration.U_Birth_Miladi = birthDate;

    مقدار birthDate که برای بنده قرار دادید تا تاریخ شمسی به میلادی درایافت کند رو ایراد گرفت.
    و همین طور تمام دستور های مربوط رو که دادید Trace گرفتم و گفتم اگه سن طرف کمتر از 20 سال بود یعنی همین مقدار

    int minimumAge = 20;
    DateTime maximumBirthDate = persian.AddYears(DateTime.Today, -minimumAge);
    DateTime birthDate;
    int age = 0;

    همه مقادیر رو کمتر از حد مورد نظر و سن هم کمتر از 20 سال دادم تمام مقادیر رو Trace کردم سیستم رد کرد ولی اصلا پیغامی نداد.
    ممنون بابت کمکتان

  4. #4

    نقل قول: بررسی تاریخ شمسی برای محدود کردن ثبت نام

    اگر میتونی پروژه رو پیام خصوصی کن یا یک پروژه تست ایجاد کن و همینجا قرار بده.

تاپیک های مشابه

  1. برنامه ای برای محدود کردن اجرای فایل در ویندوز
    نوشته شده توسط a_m_i_n_000 در بخش برنامه نویسی در 6 VB
    پاسخ: 7
    آخرین پست: یک شنبه 24 آبان 1388, 22:31 عصر
  2. تاریخ شمسی برای تازه کار
    نوشته شده توسط mahtabi در بخش Access
    پاسخ: 3
    آخرین پست: جمعه 25 فروردین 1385, 10:36 صبح
  3. جایگزینی برای isa برای محدود کردن یوزها
    نوشته شده توسط meysam39 در بخش شبکه و Networking‌
    پاسخ: 2
    آخرین پست: شنبه 08 بهمن 1384, 16:56 عصر
  4. کامپنوننت تاریخ شمسی برای فلش
    نوشته شده توسط نعیم رضاییان در بخش Flash و ActionScript
    پاسخ: 2
    آخرین پست: سه شنبه 29 آذر 1384, 20:55 عصر
  5. تاریخ شمسی برای قبل از سال 1970
    نوشته شده توسط Amir Fekrazad در بخش PHP
    پاسخ: 5
    آخرین پست: دوشنبه 28 آذر 1384, 23:52 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •