السلام عليكــم ورحمـة الله وبركاتــه ،،
عامل ابليكشن لتسجيل الكورسات اون لاين بس عاوز اخلى المستخدم اللى مسجل فى كورس فى فترة زمنية معينة ميقدرش يسجل فى كورس تانى لو هيكون فية ايام فى نفس الفترة الزمنية بتاعت الكورس التانى
ارجو المساعدة
السلام عليكــم ورحمـة الله وبركاتــه ،،
عامل ابليكشن لتسجيل الكورسات اون لاين بس عاوز اخلى المستخدم اللى مسجل فى كورس فى فترة زمنية معينة ميقدرش يسجل فى كورس تانى لو هيكون فية ايام فى نفس الفترة الزمنية بتاعت الكورس التانى
ارجو المساعدة
وعليكم السلام
اعتقد ان الحل هيكون فى تصميم الdatabase بتاعتك
يعنى العلاقه بين الطالب والكورس هتبقى one to many
لان الكورس الواحد فيه اكتر من طالب لكن الطالب الواحد فى (التاريخ الواحد) ملوش غير كورس واحد
وهتزود فى جدول الطالب column اسمه status
وده بيدل على حاله الطالب لو مسجل فى كورس معين هتخليه بواحد ولو العكس هتخليه بصفر
فلو الطالب عاوز يسجل فى كورس تانى هتروح تشوف حالته اولا 0 ولا 1
وعند انتهاءمحتوى الكورس هتعمل update لكل الطلبه المشتركين فيه وتخلى status =0
وبكده يقدروا يشتركوا فى كورسات تانيه
يارب اكون ساعدتك
أُحبُّ الصَّالِحِينَ وَلسْتُ مِنْهُمْ ××× لَعَلِّي أنْ أنَالَ بهمْ شَفَاعَهْ
وَأكْرَهُ مَنْ تِجَارَتُهُ المَعَاصِي ××× وَلَوْ كُنَّا سَواءً في البضَاعهْ
اشكرك يا اخى على سرعة الرد
بس المشكلة
انا عامل ان الطالب يقدر يسجل فى اكتر من كورس لأنة ممكن يسجل فى كورس ميعادة مثلا 12/5 وينتهى 20/5 ويسجل فى كورس تانى 25/5 وينتهى فى 30/5 بس المشكلة ان ممكن ان الطالب يسجل فى اكتر من كورس فى نفس التوقيت مثلا يسجل فى كورس 12/5 اللى هينتهى 20/5 ويروح مسجل فى كورس تانى يبتدى فى 13/5 فكدا هيكون عمل مشكلة وهوا مش عارف لأنة مش ممكن يحضر اكتر من كورس فى نفس الوقت انما يقدر يسجل فى اكتر من كورس بس المهم انهم مش يشتركو فى نفس الوقت
انا عامل جدول للكورسات فيها IDCourse للكورس وبياناتة منها ال Date
وعامل جدول للطلبة فيها IDUser الطالب وبياناتة
وعامل جدول ثالث فية IDCourse و IDUser
ارجو المساعدة
تم تعديل هذه المشاركة بواسطة hamada252_eg في 12 مايو 2009 في 20:34
يعنى العلاقة بين الطالب والكورس many to many
فى اكتر من طريقه
لكن ممكن تريح دماغك وتزود حقل فى جدول الطالب اسمه MinRegisterDate ويكون allow null
ولما الطالب يسجل فى كورس معين تسجل CourseEndDate فى هذا الحقلMinRegisterDate
ولما الطالب يسجل فى كورس تانى حد الحقل ده لو فاضى يبقى الطالب مسجلش فى اى كورس
لو فيه قيمه تبقى هى دى تاريخ انتهاء اخر كورس خده وقارنها CourseBeginDate الجديد
لو
تاريخ انتها الكورس القديم CourseBeginDate > MinRegisterDate يتاريخ بداية الكورس الجديد
ok يسجل وبعد كده تعمل تحديث
الجديد MinRegisterDate=CourseEndDate
أُحبُّ الصَّالِحِينَ وَلسْتُ مِنْهُمْ ××× لَعَلِّي أنْ أنَالَ بهمْ شَفَاعَهْ
وَأكْرَهُ مَنْ تِجَارَتُهُ المَعَاصِي ××× وَلَوْ كُنَّا سَواءً في البضَاعهْ
طب مهو ممكن ينزل كورس فى شهر 5 مثلا هيسجل فية وبعد كدة ينزل كورس لشهر 8 يسجل فية بردة لغاية دلوقتى كويس بس لو نزلت كورسات شهر 6 او شهر 7 وحب يسجل فيها فى الحالة دى مش هينفع مع انو مش هيكون عندو كورسات فى الحالة دى وهيكون فاضى
اعمل اية
نفترض ان ده حصل
برده ريح دماغك وزود حقل جديد فى جدول الطالب اسمه newCoureStartDate ويكون allow null
وده هيكون تاريخ بدا الكورس الجديد
اول كورس
1-5-2009 بدايته
15-5-2009نهايته
1-8-2009بدايه الكورس الجديد كور س لسه نازل هشوف لو او العكس اتحقق
بدايته 1-6- 2009> 15-5-2009
AND نهايته 15-6-2009 اقل من 1-8-2009
كور س جديد
1-8-2009بدايته
15-8-2009نهايته
nullبدايه الكورس الجديد 1-6-2009 updated
كور س لسه نازل هشوف لو
بدايته 1-7- 2009 اقل من 15-8-2009 او العكس اتحقق
AND نهايته 15-7-2009 اكبرمن 1-6-2009
يارب اكون ساعدتك
أُحبُّ الصَّالِحِينَ وَلسْتُ مِنْهُمْ ××× لَعَلِّي أنْ أنَالَ بهمْ شَفَاعَهْ
وَأكْرَهُ مَنْ تِجَارَتُهُ المَعَاصِي ××× وَلَوْ كُنَّا سَواءً في البضَاعهْ
لو انا دلوقتى الطالب مسجل فى كورس
بدايتة 15/5/2009
ونهايتة 20/5/2009
وسجل فى كورس تانى
بدايتة 25/5/2009
ونهايتة 30/5/2009
ونزل كورس ثالث
يبتدى 17/5/2009
وينتهى فى 22/5/2009
ازاى اقدر اعمل فحص للتاريخ بتاعة وامنعة من التسجيل لأن كدا الكورس الثالث هيكون فية ايام واقعة فى مواعيد الكورس الاول اللى هوا كان مسجل فية قبل كدا
انا شرحت الفكرة بس الكتابة مظبتتش
اولا كل تعاملك هيعتمد على الفترات
انت المطلوب منك انك تعرف الفترات اللى الطالب فاضى فيها
وهى عباره عن تاريخ انتهاء الكورس القديم الى تاريخ بدايه الكورس الجديد
ولما يجى كور س تانى هتشوف هل ينفع الفتره بتاعت الكورس ده تدخل فى كل الفترات اللى الطالب فاضى فيها
طب هتعمل ده ازاى
علشان متشتغلش على اكثر من row حاول تجمع الفترات فى row واحد
يعنى هتزود حقل جديد اسم بدايه الكورس الجديد allow null
لو انا دلوقتى الطالب مسجل فى كورس
بدايتة 15/5/2009
ونهايتة 20/5/2009
بدايه الكورس الجديد null
وسجل فى كورس تانى
بدايتة 25/5/2009
ونهايتة 30/5/2009
بدايه الكورس الجديد null
هشوف هل فتره الكورس دى 25-5الى 30-5 ملهاش تقاطع مع 20-5 ال null
هتقارن البدايه للكورس التانى مع النهايه وتقارن نهايه الكورس التانى مع البدايه
وتقول لو البدايه للكورس التانى > النهايه AND نهايه الكورس التانى <البدايه
OR
البدايه للكورس التانى < النهايه AND نهايه الكورس التانى >البدايه
والموضوع ده هتطبقه على كل الصفوف بس علشان معندناش غير كورس واحد الطالب مسجل فيه
طبعا الشرط هيتحقق لان البدايه للكورس التانى > النهايه 25-5 > 20-5 والnull ممكن نتجاهلها لان ده اخر كور س خده
بعد كده نعمل update بتاريخ الكورس التانى فى الكورس الاول
بدايتة 15/5/2009
ونهايتة 20/5/2009
بدايه الكورس الجديد 25-5-2009
وبكد يكون عندى الفتره اللى الطالب فاضى فيها من 20-5 الى 25-5 ودى اللى بعمل عليها check فى حاله كورس جديد
ونزل كورس ثالث
يبتدى 17/5/2009
وينتهى فى 22/5/2009
بدايه الكورس الجديد null
الفترات اللى فاضيه عند الطالب من 20-5الى 25-5
من 30-5 الى null
هل 17-5 > 20-5 و 22-5<25-5 لم يتحقق
او
هل 17-5 < 20-5 و 22-5 > 25-5 لم يتحقق
والموضوع ده على كل الفترات للطالب
ونعمل الشرط ده لان ممكن نكون بدايه الفتره اكبر من نهايتها
مثال نهايه كور س شهر 8 15-8 بدايه كورس شهر 6 1-6
الفترة 15-8 الى 1-6
او العكس
مثال نهايه كورس شهر خمسه 15-5 بدايه كورس شهر 8 1-8
الفتره 15-5 الى 1-8
يارب اكون ساعدتك
أُحبُّ الصَّالِحِينَ وَلسْتُ مِنْهُمْ ××× لَعَلِّي أنْ أنَالَ بهمْ شَفَاعَهْ
وَأكْرَهُ مَنْ تِجَارَتُهُ المَعَاصِي ××× وَلَوْ كُنَّا سَواءً في البضَاعهْ
اقتباسهشوف هل فتره الكورس دى 25-5الى 30-5 ملهاش تقاطع مع 20-5 ال nullهتقارن البدايه للكورس التانى مع النهايه وتقارن نهايه الكورس التانى مع البدايه
وتقول لو البدايه للكورس التانى > النهايه AND نهايه الكورس التانى <البدايه
OR
البدايه للكورس التانى < النهايه AND نهايه الكورس التانى >البدايه
ازاى اعمل فحص لهذا التقاطع ودا عندى تاريخ مش رقم اقدر اقارنة
if (Calendar1.SelectedDate > Calendar2.SelectedDate)
{
Response.Write(" calender1 greater than calender2");
}
else if (Calendar1.SelectedDate < Calendar2.SelectedDate)
{
Response.Write(" calender1 less than calender2");
}
else if (Calendar1.SelectedDate == Calendar2.SelectedDate)
{
Response.Write(" calender1 equal calender2");
}أُحبُّ الصَّالِحِينَ وَلسْتُ مِنْهُمْ ××× لَعَلِّي أنْ أنَالَ بهمْ شَفَاعَهْ
وَأكْرَهُ مَنْ تِجَارَتُهُ المَعَاصِي ××× وَلَوْ كُنَّا سَواءً في البضَاعهْ
الأخ الكريم/الأخت الكريمة
السلام عليكم ورحمة الله وبركاته
مرحباً بكم في منتدى الفريق العربي للبرمجة
نود تنبيهك أن العنوان غير مناسب.
الرجاء اختيار عنوان مناسب أكثر في مواضيعك القادمة، وهذا بمثابة إشعار للأهمية.
وفي حال التكرار سيتعرض موضوعك للإغلاق والحذف!!!
قواعد المشاركة
شاكرين لكم حُسن تعاونكم
Do as I say, not as I do
We are Anonymous. We are Legion. We don't forgive. We don't forget
عنوان الموضوع ليس لكتابة الموضوع
Do as I say, not as I do
We are Anonymous. We are Legion. We don't forgive. We don't forget
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…