بسم الله
كما ذكرنا سابقا فى الموضوع التعريفى بلغة php
ان لغة php لغة تتعامل مع السيرفر تمكنك من ان تدخل مجموعة من الأوامر الى صفحتك ( web page ) يقوم بتنفيذها السيرفر قبل ان يرسل الناتج لمتصفح الزائر و يظهر الناتج النهائى
كل هذا جيد جدا لكن عند ادخال قاعدة بيانات إلى هذا الخليط سيصبح الموضع اكثر تشويقا
سنستخدم اليوم قاعدة البيانات MySQL
MySQL :
عبارة عن نوع من قواعد البيانات تستطيع حفظ كمية كبيرة من البيانات بطريقة منظمة
يمكن التعامل معها بسهولة بواسطة لغات الـ screpting مثل php
على سبيل المثال :
يمكنك ان تطلب من php ان تجلب لك من قاعدة البيانات اخر عشرة مواضيع تمت كتابتها فى موقعك ثم تظهرها للزائر فى المتصفح
الميزة هنا :
انك لن تحتاج لكتابة صفحة html لكل موضوع تضعه فى موقعك
لكن ممكن تكتب كود php فى صفحة واحدة و هو سيقوم بجلب المواضيع و تنسيقها كما تريد
غير ان انت مش محتاج تغير فى صفحة html كل شوية عشان تكتب موضوع جديد
لا انت كل اللى حتعمله انك حتدخل الموضوع فى قاعدة البيانات و هو حيظهر على صفحتك زى مانت امرت الـ php
تعالوا نتعمق اكتر فى موضوع قواعد البيانات و نعرف ايه فكرتها :
قاعدة البيانات بتتكون من جدول واحد او اكثر
كل جدول بيحوى بداخله مجموعة من البيانات تختلف من جدول لأخر
فى حالتنا دى دلوقتى نقول مثلا ان عندنا جدول اسمه article يحوى قائمة بمواضيع الموقع
كل جدول فى قاعدة البيانات يحوى داخله مجموعة من الأعمدة
كل عمود يحوى داخله معلومة محددة عن كل شئ مخزن فى الجدول
فى المثال الى بنتكلم عنه : ممكن يكون الجدول articles بيتكون من
عمود يحوى رقم الموضوع فى الجدول ( الرقم دة مش بيتكرر ) id
عمود يحوى الموضوع نفسه content
و عمود تانى لعنوان الموضوع title
و عمود ثالث لتاريخ كتابة الموضوع date
كل موضوع بيتكتب فى الجدول بياخد صف واحد داخل الجدول
يبقى بعد كدة إذا قلنا ( صف جديد ) يبقى نقصد ( موضوع جديد )
ايه لازمة العمود id ?
انا ممكن يكون عندى حوالى 1000 موضوع فى قاعدة البيانات على سبيل المثال
و فى احتمال ان يكون موضوعين بنفس الأسم بس بمحتوى مختلف و تاريخ كتابة مختلف
بس انا عشان افرق بين كل موضوع و التانى لازم اعطى لكل موضوع رقم منفرد
لا يتكرر لأى موضوع اخر
فبيفضل ان يكون العد بالترتيب 1 , 2 , 3 , 4 ...
لو لاحظت الجدول الى عملناه دلوقتى بيتكون من اربع اعمدة و صفين اثنين
بما ان فيه صفين يبقى فيه موضوعين بس
هنا ممكن نكون فهمنا ميكنة عمل قاعدة البيانات مبدئياٌ
و ممكن نبدأ فهم لغة التعامل مع قواعد البيانات SQL
ملحوظة :
فى هذا الجزء انا لم اشرح التعامل مع قاعدة البيانات MySQL من خلال الـ API
الخاص بها و اكتفى بـ SQL
SQL :
هى مجموعة الأوامر التى سنتعامل من خلالها مع قاعدة البيانات MySQL و اى نوع اخر يدعم SQL
لأنها لغة قياسية للتفاعل مع اغلب انواع قواعد البيانات
بذلك تستطيع ان تعمل على اكثر من قاعدة بيانات مختلفة بنفس الكود
و للتوضيح اكثر MySQL هو خادم قواعد بيانات لكن SQL هى اللغة التى سنتعامل بها معه
و هى اختصار لـ Structured Query Language
تقولها ( اس كيو إل ) او ( سكل ) مش مشكلة
الأوامر ( commands ) فى SQL تسمى queries
لنكمل الحديث عن مثالنا السابق :
الأن نحن فى حاجة لقاعدة بيانات بها جدول واحد
هذا الجدول به اربعة اعمدة
العمود ID سيحوى رقم الموضوع
العمود CONTENT لمحتوى الموضوع
العمود TILTLE لعنوان الموضوع
العمود DATE لتاريخ كتابة الموضوع
.............................................
إذا اول امر سنكتبه هو امر إنشاء قاعدة بيانات بأسم SAVEN و هو كما يلى
شفرة:CREATE DATABASE SAVEN ;
كما لاحظنا فى الأمر انه بسيط و يتكون من الأمر CREATE DATABASE اولا
ثم يليه { اسم قاعدة البيانات المراد إنشائها } ( SAVEN ) و ننهى الأمر بالعلامة ( ؛ )
طبعا اسم SAVEN دة افتراضى انت ممكن تغيره و تدى قاعدة البيانات اى اسم اخر
باللغة الأنجليزية
الأن قمنا بإنشاء قاعدة البيانات و بقى لنا إنشاء الجدول المسمى ARTICLES
إنشاء الجداول يعتبر شئ سهل و بسيط لكن بسبب المرونة فى بناء الجداول يظهر الأمر
طويل بعض الشئ فستكون اوامر إنشاء الجداول على هذا النمط
شفرة:
CREATE TABLE table_name (
column_1_name column_1_type column_1_details,
column_2_name column_2_type column_2_details,
...
);
الشكل غامض بعض الشئ ؟!!
اولا : كتبنا امر إنشاء الجدول CREATE TABLE ثم تليناه بأسم الجدول المراد إنشائه ARTICLES
ثانيا : قمنا بفتح قوس جديد ) و بدئنا كتابة امر بناء اول عمود فى جدولنا و هو ID
لنفكر لحظة فيما سيكن لهذا العمود من خواص :
بما انه مخصص لحفظ رقم الموضوع فيجب ان يكون عمود رقمى
اى من النوع INT اختصار INTEGER فسيحوى هذا العمود ارقام فقط
و ليس من المنطقى ان يكن احد المواضيع بدون رقم اى ان عمود ID الخاص به فارغ
فيجب ان نخبر MySQL ان هذا العمود لا يمكن ان يكن فارغ
فسيكون من النوع NOT NULL
لاحظ : NULL تعنى فارغ و نحن فى امرنا السابق نفيناها بـ NOT فأصبحت غير فارغ
لقد ذكرنا ان جدول ID سيحوى ارقام تسلسية لكل موضوع
فيجب ان يكون رقم اخر موضوع فى الجدول اكبر من رقم الموضوع السابق له برقم واحد
فمن الممكن ان نخبر MySQL ان تضيف الأرقام تلقائيا بدون تدخلنا بعد ذلك
و هكذا نكن حملنا عن عاتقنا امر معرفة رقم اخر موضوع و اضافة واحد اليه بواسطة
اضافة الخاصية AUTO_INCREMENT على انه احد خصائص العمود ID
لكل كتاب جيد فهرس منظم و لكى ننظم جدولنا يجب ان نعرف سننظمه على اى اساس
و من حيث اننا قررنا تنظيمه بواسطة رقم الـ ID الخاص بكل موضوع
فيجب ان نخبر MySQL ان هذا العمود هو مفتاح التعامل مع محتويات الجدول
و ذلك بأن نعطيه الصفة PRIMARY KEY
و هذا شكل السطر الخاص ببيانات خصائص العمود ID فى جدولنا
شفرة:ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
لاحظ ان بين سطر تعريف كل عمود نفصل بالعلامة ( , )
لنرى الأن العمود CONTENT :
كل حقل فى هذا العمود سيحوى كتل كبيرة نسبيا من من الحروف و الأرقام
فسنجعل هذا العمود من النوع TEXT
شفرة:CONTENT TEXT
العمود TILTLE :
سيحوى عنوان كل موضوع
لنفترض ان اقصى عدد من الحروف يتكون منه العنوان هو 60 حرف
فسنجعل هذا العمود من النوع VARCHAR ذى عدد حروف اقصاها 60 حرف
فسيكتب كود تعريفه بهذا الشكل
شفرة:TITLE VARCHAR(60)
اخر عمود لدينا هو DATE :
سيحوى تاريخ اضافة الموضوع لقاعدة البيانات
فنجعله من النوع DATE
ولا اجد له شرح اكثر من ذلك فلنرى الكود الخاص به
شفرة:DATE DATE NOT NULL
الأن ننهى هذا الكود بغلق القوس ( ثم وضع علامة ( ؛ )
نكتفى فى هذا الموضوع ببناء قاعدة البيانات و نكمل فى مواضيع قادمة بإذن الله اوامر
اخرى ستفيدنا فى عملنا مع لغة PHP
شكراً