شرح عمل منتدى باستخدام php و mysql من الألف للياء






دليل المواقع



النتائج 1 إلى 14 من 14

الموضوع: شرح عمل منتدى باستخدام php و mysql من الألف للياء

  1. #1
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    64

    شرح عمل منتدى باستخدام php و mysql من الألف للياء



    بسم الله الرحمن الرحيم

    سنتعلم ان شاء الله فى هذا الدرس كيفية عمل منتدى باستخدام php و mysql من الألف للياء
    هذا الدرس مفيد جدا جدا للراغبين فى احتراف لغة php و طرق تعاملها مع قواعد البيانات .
    متطلبات الدرس :
    • - فهم اللغات التالية ( html - css - php - mysql )
    • - فهم التعامل مع phpmyadmin .
    • - خبرة بسيطة بالتصميم لاضافة لمسات جمالية . ( اختيارى )
    • - مستوى الدرس : المستوى المتوسط – اصحاب الخبرة .
    و سوف يتم العمل على هذا المنتدى كأنة مشروع متكامل بداية من تصميم قواعد البيانات الى كتابة ملفات Html و تنسيقها بلغة css و اخيرا البرمجة باستخدام php .

    نبدأ على بركة الله


    أولا : تكوين قاعدة البيانات و الجداول المطلوبة بها .

    من الأفضل دائما تكوين و اعداد مخطط لقاعدة البيانات او مايسمى data modal . و الآن دعنا نصف المشروع الذى نقوم ببرمجتة بمنتهى البساطة و هو عبارة عن منتدى يحتوى على مستخدمين بامكانهم اضافة الموضوعات فى داخل الأقسام المختلفة من المنتدى و بامكانهم اضافة التعليقات .

    لاحظ من الفقرة السابقة قمنا بتمييز الاسماء التالية ( المستخدمين – التعليقات – الموضوعات – الأقسام ) .
    و هى عبارة عن الجداول الرئيسية التى سوف نستخدمها ان شاء الله .
    تابع الصورة التالية جيدا لتفهم العلاقة بين جداول قاعدة البيانات و بعضها .



    نلاحظ ان جدول المستخدمين مرتبط مع جدول الأقسام و مع جدول الموضوعات و جدول التعليقات .
    حيث يقوم المستخدم بكتابة موضوع داخل قسم معين و يتمكن الاخرين من التعليق عليه .
    لاحظ ان الخطوط السوداء ( المنقطة ) بين الجداول و بعضها توضح العلاقة بين الجداول و بعضها البعض و لا تقلق سيتم شرحها بالتفصيل .

    سيتم شرح الجداول من خلال شرح أوامر mysql اللازمة لتكوين تلك الجداول . مع العلم انه بامكان اى من برامج تصميم قواعد البيانات مثل wordbench الذى استخدمناه هنا ان يقوم بعمل ملف قاعدة البيانات بالكامل بامتداد .sql بامكانك رفعه مباشرة باستخدام phpmyadmin و لكن الأفضل هو كتابة الاكواد يدويا .لسرعة التمرين و الاتقان .

    تكوين جدول المستخدمين :

    كود PHP:
    CREATE TABLE users (
    user_id     INT(8NOT NULL AUTO_INCREMENT,
    user_name    VARCHAR(30NOT NULL,
    user_pass      VARCHAR(255NOT NULL,
    user_email    VARCHAR(255NOT NULL,
    user_date    DATETIME NOT NULL,
    user_level    INT(8NOT NULL,
    UNIQUE INDEX user_name_unique (user_name),
    PRIMARY KEY (user_id)
    TYPE=INNODB
    كما تعلمنا فى دروس mysql فان الجملة (الأمر) CREATE TABLE يقوم بتكوين جدول جديد و اسم الجدول يكتب بعد الجملة السابقة و يصبح الشكل النهائى CREATE TABLE users و بعدها يتم وضع كل الأعمدة الموجودة داخل الجدول بين قوسين .

    و جدول المستخدمين يتكون من الأعمدة التالية ( مع شرحها ) :


    user_id : نوع هذا الحقل هو INT و هى اختصار INTEGER اى ان نوع البيانات التى يتم تخزينها هنا هو ارقام صحيحة فقط . و تم اضافة الخاصية NOT NULL حيث لا يمكن ترك هذا الحقل فارغ . و الخاصية AUTO_INCREMENT لكى يتم زيادة قيمة الحقل بمقدار 1 عند قيام عضو جديد بالتسجيل .


    نلاحظ فى الكود السابق انه تم تعريف الحقل user_id على انه primary key و يتم استخدام primary key ليتم التعرف على كل صف فى الجدول بمفردة بمعنى اخر لمنع تكرار البيانات .
    و اليكم مثال بسيط للتعرف على عمل primary key : عند قيام عضو بالتسجيل باسم ahmed مثلا و قيام عضو اخر بمحاولة التسجيل بنفس الاسم بالتالى هناك مشكلة فكيف يمكن لقاعدة البيانات التعرف على المستخدمين حيث ان لكل منهم كلمة السر الخاصة به و البيانات الخاصة به . و بالتالى يأتى هنا دور primary key حيث يكون لكل عضو رقم ( كود) خاص يمكن قاعدة البيانات من التعرف عليه بسهولة .
    ملحوظة : كل الجداول تحتوى على primary key ايضا لمنع تكرار البيانات . user_name : نوع هذا الحقل هو VARCHAR و هو عبارة عن متغير نصى . و الرقم الموجود بين القوسين يحدد اقصى عدد حروف مسموح به لكتابة اسم المستخدم . و فى الكود السابق بامكان المستخدم التسجيل باسم عدد حروفه 30 حرف . و استخدمنا NOT NULL بحيث لا يمكن تركه فارغا . اى يجب على المستخدم كتابة اسمه .
    ستلاحظ فى اخر الكود ان هذا الحقل تم تعريفة على انه UNIQUE و هذا لمنع تكرار اسماء الأعضاء اى انه لكل عضو اسم خاص به لا يمكن تكراره . حيث يقوم الجزء UNIQUE INDEX باخبار قاعدة البيانات اننا نريد عمل كود مميز لكل اسم . و من ثم نقوم بتعريف الكود المنفرد و هو فى الكود السابق user_name_unique و نضع اسم الحقل الذى نريد عمل كود منفرد له داخل القوسين .

    user_ pass : هذا الحقل مطابق تمام للحقل user_name باستثناء طول الحروف تم وضعه 255 كرقم افتراضى و ذلك لآن هذا الحقل سنقوم بتشفيره لدواعى امنية باستخدام الدالة ()sh1 و بالتالى سيكون الطول الحقيقى لكلمة السر المشفرة ثابت و هو 40 حرف.

    user_email : هذا الحقل لتخزين بريد المستخدم داخل قاعدة البيانات و هو مطابق للحقل
    السابق user_pass user_date : يستخدم هذا الحقل لتخزين تاريخ تسجيل العضو و الوقت . و هنا هو عبارة عن دالة DATETIME الموجودة فى mysql و لا يمكن تركه فارغا . NOT NULL .

    user_level: يستخدم هذا الحقل لتخزين وظيفة العضو . مثلا اذا كان عضو عادى نخصص له القيمة 0 و اذا كان admin او مدير الموقع نخصص له القيمة 1و سيتم شرحها لاحقا .
    جاااااااااااارى اكمال الشرح .انتظرونا








  2. #2
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    64


    مساحة محجوزة 1






  3. #3
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    64


    مساحة محجوزة 2






  4. #4
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    64


    مساحة محجوزة 3






  5. #5
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    64


    مساحة محجوزة 4






  6. #6
    عضو جديد
    تاريخ التسجيل
    Apr 2010
    المشاركات
    22


    في الانتضار وان شاء الله يخرج المنتدى في أخلى حلة وأنا من المتابعين بارك الله فيك






  7. #7
    عضو نشيط
    تاريخ التسجيل
    Jul 2008
    المشاركات
    128


    لا تتأخر علينا
    ننتظرك






  8. #8
    عضو نشيط جدا
    تاريخ التسجيل
    May 2007
    المشاركات
    309


    حميل حدا بخصوص user_date استخدم ال Unix time افضل بكثير ,,,





    __________________
    Bruce - مدونة شديدة التخصص في PHP وتطبيقات الويب

  9. #9
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    حميل حدا بخصوص user_date استخدم ال Unix time افضل بكثير ,,,
    +1

    يمكن ايضًا اختيار CURRENT_TIMESTAMP كقيمة افتراضية للحقل
    وبذلك لا حاجة لإدخالها اصلا(الامر مثل auto increment)
    كود PHP:
    `user_dateTIMESTAMP NOT  NULL  DEFAULT CURRENT_TIMESTAMP 






    التعديل الأخير تم بواسطة ahmad sadiq ; 05-08-2010 الساعة 03:49 AM

  10. #10
    عضو نشيط جدا
    تاريخ التسجيل
    Jan 2008
    المشاركات
    553


    مع معرفتي لكني متابع لك للجديد و التطوير

    أشكرك عزيزي و بارك الله فيك ،، تقبل فائق التقدير





    __________________
    اللهم اغفر لي الذنوب التي تهتك العصم
    اللهم اغفر لي الذنوب التي تنزل النقم
    اللهم اغفر لي الذنوب التي تغير النعم
    اللهم اغفر لي الذنوب التي تحبس الدعاء
    اللهم اغفر لي الذنوب التي تنزل البلاء .

  11. #11
    عضو نشيط جدا
    تاريخ التسجيل
    Jan 2008
    المشاركات
    553


    !!!





    __________________
    اللهم اغفر لي الذنوب التي تهتك العصم
    اللهم اغفر لي الذنوب التي تنزل النقم
    اللهم اغفر لي الذنوب التي تغير النعم
    اللهم اغفر لي الذنوب التي تحبس الدعاء
    اللهم اغفر لي الذنوب التي تنزل البلاء .

  12. #12
    عضو جديد
    تاريخ التسجيل
    Apr 2010
    المشاركات
    16


    متابع, جزاك الله خيرا






  13. #13
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600

  14. #14
    عضو سوبر نشيط
    تاريخ التسجيل
    Jun 2006
    المشاركات
    602


    شكرا على الشرح الرائع اخى الكريم










ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  
0