19-06-16, 01:14 AM
السلام عليكم و رحمة الله و بركاته
قد يبدو الموضوع مكررا الى حد ما
نظرا لكثرة الطلبات الخاصة بمثل هذه المشاريع و خصوصا معالجة الاضافة و الحذف و التعديل في الجداول المرتبطة بعلاقات فان الموضوع يحتاج الى نقاشات كثيرة و شروحات معمقة.
الموضوع في اغلبه يخص المبتدئين اكثر لذلك اود المناقشة في الطريقة التقليدية بعيدا عن الطرق الحديثة في التعامل مع قواعد البيانات .
سبب طرح الموضوع هو فكرة برنامج لحفظ محتويات المقالات و المواضيع المهمة في اي موقع ترى فيه فائدة من مواضيعه و تخزينها في قاعدة بيانات مع جلب المرفقات الخاصة بكل موضوع و تخزينها ضمن مجلد البرنامج و ربطها بالموضوع المخزن في القاعدة (سيتم مناقشة هذه الجزئية لاحقا)
في البداية سنناقش طريقة تصميم القاعدة و ربطها مع لغة البرمجة بطريقة الكود مع الاستفادة من كل الكائنات الجاهزة في اللغة توفيرا لكتابة الكود و الحصول على افضل اداء
اولا تصميم القاعدة.
ستحتوي على مجموعة من الجداول ساوضحها هنا بالصور
الجدول الاول جدول الاصناف Kind و بنيته كما في الصورة التالية
الجدول الثاني هو جدول الفروع Poster سيحتوي على الفروع المشتقة من الاصناف Kind
الجدول الثالث هو جدول المواضيع او المقالات Info وهو يحتوي على كل المواضيع التي تندرج تحت فرع معين Poster
الجدول الرابع هو جدول الاكواد و هو جدول Coder يختص بتخزين الاكواد فقط المندرجة تحت صنف معين Kind
الجدول الخامس هو جدول المرفقات Attaches و هي للمرفقات في كل موضوع يتم تخزينه حيث لديك الامكانية لتخزين المرفقات مثل الملفات المضغوطة التي
توضع كمثال على المقالة او الشرح حيث يخزن فيه فقط اسم المرفق و مسار تخزينه في مجلد التخزين المرافق للبرنامج و يتم عرض الملفات المرفقة
المصاحبة لكل موضوع في قائمة ترتبط مع كل مقال مع امكانية فتح المرفق من واجهة البرنامج
الجدول السادس LoginsTb وهو جدول خاص بتخزين المواقع المفضلة لديك او بمعنى اخر المواقع التي انت عضو فيها و تحتاج الى تحميل صفحات منها او مرفقات بعد تسجيل الدخول
يحتوي على مجموعة من الحقول مثل اسم المستخدم و كلمة المرور و رابط الدخول للموقع و بارمترات الدخول اللازمة و كذلك بعض الحقول التي ستعرف عملها لاحقا عند البدء في شرح البرنامج و التعامل معه بشكل فعلي
وجب التنويه ان هذا الجدول مرتبط بشكل فعلي مع اعدادت البرنامج (نموذج الاعدادات الذي سيرد لاحقا)
تخطيط العلاقة بين الجداول في القاعدة و هو للعرض فقط لمعرفة سيناريو الربط بين الجداول اذا اننا سنقوم بالربط من خلال الكود
بعض الادخالات في واجهة البرنامج (اعدادات البرنامج) سنحتاجها خلال عملنا اذا
انها مطلوبة لتمكين الدخول الى المواقع المحمية باسم مستخدم و كلمة مرور
هذه الاعدادت مرتبطة بنموذج داخل البرنامج لتمكين تغير الاعدادت حسب الموقع المراد الدخول اليه
و ساشرح الحاجة اليها وفق ورودها
النموذج الخاص بادخال الموقع الافتراضي مع الحقول اللازمة (اسم المستخدم و كلمة المرور) و البارمترات اللازمة لتمريرها مع طلب الدخول و المصادقة ثم الدخول
الشاشة سهلة جدا و تمكنك من فرض الدخول التلقائي الى اي موقع مسجل فيه بمجرد تعين الموقع كافتراضي ساشرحها لاحقا مع بدء الغوص في البرنامج
نموذج اول لتخزين الاكواد المنبثقة من كل صنف و هو نموذج جانبي لم اكن ارد تضمينه لكن شاء الله و قدر..
تم استخدام مربع نص خاص لعرض الاكواد وفق طريقة لغات البرمجة و هو مضمن في مكتبة مرفقة بالبرنامج
كنت اود استخدام شجرة البيانات لعرض التفريعات بشكل شجري لكن شيئ جعلني اتريث في استخدامها حتى تكتمل كل الافكار
ربما استخدمها لاحقا في نموذج جديد للعرض فقط .
ملاحظة تم استخدام TableLayoutPanel للقيام بعمليات التحجيم التلقائي لعناصر النموذج.
هذا هو النموذج الرئيسي الخاص بالبرنامج يحتوي على الاصناف و التفريعات و المواضيع و المرفقات ايضا
كما و يحتوي على مستعرض ويب داخله للدخول الى الموقع الذي تريده و كذلك لعرض المواضيع المخزنة
لديك في القاعدة
فقط ضع رابط الدخول ثم ادخل الى الموقع (طبعا اذا كنت عضو في الموقع وجب عليك ادخال البيانات في نموذج الاعدادات السابق) و هو سيتكفل بادخالك كعضو
اذا كنت عضو فعلا في الموقع
كانت هناك مشكلة بالنسبة لعملية توريث الكوكيز للمتصفح و الحمد لله تم حلها ببعض دوال API و هي الان تعمل بشكل جيد
بالنسبة لعملية تحميل المرفقات مع المواضيع تتم في اسفل الشاشة عبر زر Download بالنسبة لاغلب المواقع يتم التحميل بشكل طبيعي اذا تمت المصادقة على دخولك
لكن بقيت لدي مشكلة لم اصل لحل لها في بعض المواقع اذا ان الخادم يرسل لي طول حجم غير حقيقي للملف المراد تحميله كحال موقع Codeproject
ساحاول حلها لاحقا ان شاء الله
يتبع.........
قد يبدو الموضوع مكررا الى حد ما
نظرا لكثرة الطلبات الخاصة بمثل هذه المشاريع و خصوصا معالجة الاضافة و الحذف و التعديل في الجداول المرتبطة بعلاقات فان الموضوع يحتاج الى نقاشات كثيرة و شروحات معمقة.
الموضوع في اغلبه يخص المبتدئين اكثر لذلك اود المناقشة في الطريقة التقليدية بعيدا عن الطرق الحديثة في التعامل مع قواعد البيانات .
سبب طرح الموضوع هو فكرة برنامج لحفظ محتويات المقالات و المواضيع المهمة في اي موقع ترى فيه فائدة من مواضيعه و تخزينها في قاعدة بيانات مع جلب المرفقات الخاصة بكل موضوع و تخزينها ضمن مجلد البرنامج و ربطها بالموضوع المخزن في القاعدة (سيتم مناقشة هذه الجزئية لاحقا)
في البداية سنناقش طريقة تصميم القاعدة و ربطها مع لغة البرمجة بطريقة الكود مع الاستفادة من كل الكائنات الجاهزة في اللغة توفيرا لكتابة الكود و الحصول على افضل اداء
اولا تصميم القاعدة.
ستحتوي على مجموعة من الجداول ساوضحها هنا بالصور
الجدول الاول جدول الاصناف Kind و بنيته كما في الصورة التالية
الجدول الثاني هو جدول الفروع Poster سيحتوي على الفروع المشتقة من الاصناف Kind
الجدول الثالث هو جدول المواضيع او المقالات Info وهو يحتوي على كل المواضيع التي تندرج تحت فرع معين Poster
الجدول الرابع هو جدول الاكواد و هو جدول Coder يختص بتخزين الاكواد فقط المندرجة تحت صنف معين Kind
الجدول الخامس هو جدول المرفقات Attaches و هي للمرفقات في كل موضوع يتم تخزينه حيث لديك الامكانية لتخزين المرفقات مثل الملفات المضغوطة التي
توضع كمثال على المقالة او الشرح حيث يخزن فيه فقط اسم المرفق و مسار تخزينه في مجلد التخزين المرافق للبرنامج و يتم عرض الملفات المرفقة
المصاحبة لكل موضوع في قائمة ترتبط مع كل مقال مع امكانية فتح المرفق من واجهة البرنامج
الجدول السادس LoginsTb وهو جدول خاص بتخزين المواقع المفضلة لديك او بمعنى اخر المواقع التي انت عضو فيها و تحتاج الى تحميل صفحات منها او مرفقات بعد تسجيل الدخول
يحتوي على مجموعة من الحقول مثل اسم المستخدم و كلمة المرور و رابط الدخول للموقع و بارمترات الدخول اللازمة و كذلك بعض الحقول التي ستعرف عملها لاحقا عند البدء في شرح البرنامج و التعامل معه بشكل فعلي
وجب التنويه ان هذا الجدول مرتبط بشكل فعلي مع اعدادت البرنامج (نموذج الاعدادات الذي سيرد لاحقا)
تخطيط العلاقة بين الجداول في القاعدة و هو للعرض فقط لمعرفة سيناريو الربط بين الجداول اذا اننا سنقوم بالربط من خلال الكود
بعض الادخالات في واجهة البرنامج (اعدادات البرنامج) سنحتاجها خلال عملنا اذا
انها مطلوبة لتمكين الدخول الى المواقع المحمية باسم مستخدم و كلمة مرور
هذه الاعدادت مرتبطة بنموذج داخل البرنامج لتمكين تغير الاعدادت حسب الموقع المراد الدخول اليه
و ساشرح الحاجة اليها وفق ورودها
النموذج الخاص بادخال الموقع الافتراضي مع الحقول اللازمة (اسم المستخدم و كلمة المرور) و البارمترات اللازمة لتمريرها مع طلب الدخول و المصادقة ثم الدخول
الشاشة سهلة جدا و تمكنك من فرض الدخول التلقائي الى اي موقع مسجل فيه بمجرد تعين الموقع كافتراضي ساشرحها لاحقا مع بدء الغوص في البرنامج
نموذج اول لتخزين الاكواد المنبثقة من كل صنف و هو نموذج جانبي لم اكن ارد تضمينه لكن شاء الله و قدر..
تم استخدام مربع نص خاص لعرض الاكواد وفق طريقة لغات البرمجة و هو مضمن في مكتبة مرفقة بالبرنامج
كنت اود استخدام شجرة البيانات لعرض التفريعات بشكل شجري لكن شيئ جعلني اتريث في استخدامها حتى تكتمل كل الافكار
ربما استخدمها لاحقا في نموذج جديد للعرض فقط .
ملاحظة تم استخدام TableLayoutPanel للقيام بعمليات التحجيم التلقائي لعناصر النموذج.
هذا هو النموذج الرئيسي الخاص بالبرنامج يحتوي على الاصناف و التفريعات و المواضيع و المرفقات ايضا
كما و يحتوي على مستعرض ويب داخله للدخول الى الموقع الذي تريده و كذلك لعرض المواضيع المخزنة
لديك في القاعدة
فقط ضع رابط الدخول ثم ادخل الى الموقع (طبعا اذا كنت عضو في الموقع وجب عليك ادخال البيانات في نموذج الاعدادات السابق) و هو سيتكفل بادخالك كعضو
اذا كنت عضو فعلا في الموقع
كانت هناك مشكلة بالنسبة لعملية توريث الكوكيز للمتصفح و الحمد لله تم حلها ببعض دوال API و هي الان تعمل بشكل جيد
بالنسبة لعملية تحميل المرفقات مع المواضيع تتم في اسفل الشاشة عبر زر Download بالنسبة لاغلب المواقع يتم التحميل بشكل طبيعي اذا تمت المصادقة على دخولك
لكن بقيت لدي مشكلة لم اصل لحل لها في بعض المواقع اذا ان الخادم يرسل لي طول حجم غير حقيقي للملف المراد تحميله كحال موقع Codeproject
ساحاول حلها لاحقا ان شاء الله
يتبع.........
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال


