تصميم موقع الويب الخاص بك مع PHP و MySQL


الدرس: ما هي قاعدة البيانات؟


الصفحة السابقة
لقد اكتشفت في الوقت الحالي كيفية عمل PHP ، ولكن ربما لا تشعر بعد بأنك قادر على إنشاء مواقع ويب حقيقية بما تعلمته. هذا أمر طبيعي تمامًا لأنك تفتقد إلى عنصر حاسم: قاعدة البيانات .
تتيح قاعدة البيانات إمكانية تسجيل البيانات بطريقة منظمة وتسلسل هرمي. بالطبع ، أنت تعرف المتغيرات ، لكنها تبقى فقط في الذاكرة لوقت إنشاء الصفحة. لقد تعلمت أيضًا الكتابة في الملفات ، لكنها سرعان ما تصبح معقدة للغاية بمجرد توفر الكثير من البيانات لتسجيلها.
ومع ذلك ، سيكون من الضروري تخزين قائمة الأعضاء في مكان ما ، ورسائل المنتديات ، وخيارات التصفح للأعضاء ... قواعد البيانات هي أفضل طريقة للقيام بذلك بطريقة بسيطة ونظيفة. سوف ندرسهم خلال هذا الجزء بأكمله من الدورة!

لغة SQL وقواعد البيانات


في قاعدة بيانات (BDD) هو نظام الذي يسجل المعلومات. نوع ما مثل ملف نصي؟ لا ليس حقا. المهم هنا هو أن هذه المعلومات يتم تصنيفها دائمًا . وهذا ما يجعل BDD عمليًا للغاية: إنها طريقة بسيطة لتخزين المعلومات.
ماذا لو كنت أفضل البقاء غير مرتب؟ ماذا لو كنت لا أريد تقديم معلوماتي؟ هل يتعين علينا تصنيف كل قطعة من المعلومات التي نسجلها؟
هذا ما قلته لنفسي قليلاً في البداية ... صنّف بعض الأشياء ، حسناً ، لكن بدا لي أنني لن أحتاج إليها إلا نادراً.
خطأ خطير! سترى: 99 ٪ من الوقت ، نقوم بتخزين معلوماتنا في قاعدة بيانات. بالنسبة للباقي ، يمكننا حفظها في ملف كما تعلمنا القيام به ... ولكن عندما تذوقنا قواعد البيانات ، بالكاد يمكننا الاستغناء عنها!
تخيل على سبيل المثال خزانة ملابس ، حيث يوجد كل مجلد في مكانه.
عندما يكون كل شيء في مكانه ، من الأسهل بكثير العثور على كائن ، أليس كذلك؟ حسنًا ، هذا هو نفس الشيء: بتصنيف المعلومات التي تجمعها (حول زوار موقعك على سبيل المثال) ، سيكون من السهل جدًا عليك استرداد ما تبحث عنه لاحقًا.

DBMS لرعاية التخزين


لقد قدّمت بصفة مبسّطة (Data Base Management System) DBMS في الفصل الأول من هذه الدورة. DBMS هي البرامج التي تخزن بياناتك.
الأكثر شهرة هي ، كتذكير:
  • MySQL   : مصدر مجاني ومفتوح ، من المحتمل أن يكون نظام DBMS الأكثر شهرة. سوف نستخدمها في هذا الجزء ؛
  • PostgreSQL   : مجاني مثل MySQL ، مع المزيد من الوظائف ولكن أقل شهرة ؛
  • SQLite : مجاني ومفتوح ، خفيف جدًا ولكنه محدود جدًا في الوظائف ؛
  • Oracle   : تستخدمه الشركات الكبيرة جدًا ؛ مما لا شك فيه واحد من أكمل نظم إدارة قواعد البيانات ، لكنها ليست مجانية وغالبا ما يكون باهظ الثمن ؛
  • Microsoft SQL Server   : قواعد بيانات Microsoft .
لذلك يجب عليك اختيار قواعد البيانات التي ستستخدمها لتخزين البيانات. أوصي بأن تعمل مع أنظمة إدارة قواعد البيانات المجانية والمفتوحة المصدر ، مثل MySQL و PostgreSQL و SQLite . بعد كل شيء ، الاختيار هو مسألة ذوق وميزات التي تبحث عنها. MySQL هو حل وسط جيد.
سوف نستخدم MySQL ، لكننا نعرف أن معظم ما تتعلمه سيعمل بنفس الطريقة مع نظام إدارة قواعد البيانات آخر. تم تصميم هذا الجزء بحيث يكون لديك أقل قدر ممكن من التعلم مرة أخرى إذا اخترت تغيير نظام إدارة قواعد البيانات.
يمكنك إعطاء الأوامر إلى DBMS بلغة SQL
سيكون عليك التواصل مع DBMS لمنحهم ترتيب استعادة البيانات أو حفظها. "للتحدث" معها ، نستخدم لغة SQL .
والخبر السار هو أن SQL هي المعيار ، أيًا كانت قواعد البيانات التي تستخدمها ، فستستخدم SQL . الأخبار السيئة هي أن هناك بالفعل بعض الاختلافات الصغيرة من DBMS واحد إلى آخر ، ولكن هذا يؤثر عادة على الأوامر الأكثر تقدما.
كما يمكنك أن تتخيل ، سيتعين عليك تعلم لغة SQL للعمل مع قواعد البيانات. هذه اللغة لا علاقة لها بـ PHP ، لكننا سنحتاجها بالتأكيد.
فيما يلي مثال للأمر بلغة SQL ، لإعطائك فكرة:

SELECT id, auteur, message, datemsg FROM livreor ORDER BY datemsg DESC
الهدف الرئيسي من هذا الجزء من الدورة التدريبية هو تعلم كيفية استخدام لغة SQL هذه حتى تتمكن من إعطاء أي ترتيب لقاعدة البيانات ، على سبيل المثال: "احصل على آخر 10 أخبار من موقعي "،" حذف آخر رسالة منشورة في هذا المنتدى "، إلخ.
PHP ينضم العلاقة بينك و بين MySQL
لتعقيد الأمر قليلاً (وإلا ، ليس من المضحك) ، لن نتمكن من التحدث إلى MySQL مباشرة. لا يمكن ،فقط PHP يمكنه القيام بذلك!
وبالتالي فإن PHP هو الذي سيكون بمثابة وسيط بينك وبين MySQL . سيتعين علينا أن نطلب من PHP : "اذهب قل لـ MySQL القيام بذلك." "
أعتقد أن الرسم التخطيطي الصغير لن يكون ترفًا ... انظر الشكل التالي.
web dynamique php
التواصل بين PHP و MySQL
إليك ما يمكن أن يحدث عندما يتلقى الخادم طلبًا من عميل يريد نشر رسالة على المنتديات الخاصة بك:
  1. لا يزال الخادم يستخدم PHP ، لذلك يرسل الرسالة ؛
  2. يقوم PHP بتنفيذ الإجراءات المطلوبة ويدرك أنه يحتاج إلى MySQL . في الواقع ، يحتوي كود PHP في مكان "اذهب اسأل MySQL لتسجيل هذه الرسالة". لذلك ينقل العمل إلى MySQL؛
  3. يقوم MySQL بالعمل الذي قدمه PHP إليه ويجيب "حسنًا ، إنه جيد!" ".
  4. يرسل PHP مرة أخرى إلى الخادم الذي قام به MySQL بالشيء الصحيح.
الآن وبعد أن قدمنا ​​العروض ، سيتعين علينا معرفة كيفية تنظيم قاعدة البيانات. فهم تنظيمها أمر ضروري للغاية.
هيكل قاعدة البيانات
باستخدام قواعد البيانات ، يجب عليك استخدام مفردات دقيقة . لحسن الحظ ، يجب ألا تواجه مشكلة كبيرة في تذكرها ، لأننا سنستخدم صورة: خزانة ملابس. استمع إلي بعناية ولا تتردد في القراءة ببطء ، عدة مرات إذا لزم الأمر.
أطلب منك أن تتخيل ما يلي.
  • تسمى الخزانة  قاعدة في لغة SQL . إنها قطعة الأثاث الكبيرة التي تستخدمها السكريتيرة لحفظ المعلومات.
  • في الخزانة ، هناك العديد من الأدراج. يسمى الدرج ، في SQL ، الجدول (table) . كل درج يحتوي على بيانات مختلفة. على سبيل المثال ، يمكننا أن نتخيل درجًا يحتوي على أسماء مستعارة ومعلومات عن زوار موقعك ، وآخر يحتوي على الرسائل المنشورة في منتداك ...
  • لكن ماذا يحتوي الجدول (table) ؟ هذا هو المكان الذي يتم فيه تسجيل البيانات ، في شكل جدول. في هذا الجدول ، تسمى الأعمدة الحقول (columns)  ، وتسمى الصفوف إدخالات (records)  .
لذلك يتم تمثيل الجدول في شكل جدول. على سبيل المثال ، يوضح لك الجدول التالي ما قد تبدو عليه محتويات الجدول المسمى "الزوار".
العدد الإسم المستعار البريد الإلكتروني العمر
1 Kryptonic kryptonic@free.fr 24
2 Serial_Killer serialkiller@unitedgamers.com 16
3 M@teo21 top_secret@siteduzero.com 18
4 Bibou bibou557@laposte.net 29
... .........
يمثل هذا الجدول محتويات الجدول (أي درج الخزانة).
الحقول في هذا المثال هي: "العدد" و "الاسم المستعار" و "البريد الإلكتروني" و "العمر" . كل سطر هو إدخال. يوجد هنا أربعة ، ولكن يمكن أن يحتوي الجدول جيدًا على 100 أو 1000 أو حتى 100000 (أتمنى أن يكون لديك أكبر عدد من الزوار.
في كثير من الأحيان ، نقوم بإنشاء حقل "العدد" ، يُطلق عليه أيضًا "معرف" (id). كما سنرى لاحقًا ، من المريح جدًا ترقيم إدخالاته ، حتى لو لم يكن إلزاميًا.
وأخيرًا ، إليك المخطط الأساسي ، في الشكل التالي ، بحيث يكون كل هذا واضحًا.
web dynamique php
تنظيم قاعدة بيانات MySQL
 قاعدة البيانات تحتوي على العديد من الجداول (يمكنك وضع ما تريد في الداخلها) . كل جدول هو في الواقع جدول حيث تسمى الأعمدة الحقول وحيث تسمى الصفوف إدخالات .
لإعطائك بعض الأمثلة الملموسة ، إليك بعض أسماء الجداول التي قد نضطر إلى إنشاؤها لتلبية احتياجات موقعنا على الإنترنت:
  • news  : يخزن كل الأخبار التي يتم عرضها في الاستقبال ؛
  • Guestbook : يخزن جميع الرسائل المنشورة على سجل الزوار ؛
  • forum  : يخزن جميع الرسائل المنشورة في المنتدى ؛
  • Newsletter : يخزن عناوين البريد الإلكتروني لجميع الزوار المشتركين في النشرة الإخبارية.
الآن يجب أن تبدأ في فهم سبب حاجتك إلى قاعدة بيانات على موقعك.
إذا كان هناك شيء غير واضح لك ، إذا كان لديك انطباع بخلط بعض "القواعد" أو "الجداول" أو "الحقول" أو "الإدخالات" ، فاقرأ هذا القسم مرة أخرى. يجب أن تكون قادرًا على إعادة إنتاج الرسم التخطيطي بمفردك على قطعة من الورق.

ولكن أين يتم تخزين البيانات؟


قبل الانتهاء من الفصل ، إليك سؤال نطرحه على أنفسنا غالبًا عندما نقرأ هذا النوع من الفصل في قواعد البيانات لأول مرة.

إنها جميلة جداً هذه الجداول وهذه المخططات ، هذه القواعد ، هذه الحقول ... لكنني لا أرى ما هو ملموس ، أنا! أين خلية تخزين البيانات؟
في الواقع ، كل ما أظهرته للتو هو وسيلة لتصور الشيء. عليك أن تتخيل أن قاعدة البيانات تدير المعلومات في شكل جداول ، لأنها أفضل تمثيل يمكن أن يمتلكه المرء.
ولكن بعبارات ملموسة ، عندما يسجل MySQL المعلومات ، فإنه يكتبها في مكان ما. نعم ، مثل أي شخص آخر ، فهو يحفظهم في الملفات  !

توجد هذه الملفات في مكان ما على محرك الأقراص الثابتة ، ولكن يجب ألا تفتحها أبدًا ، بل يمكنك تعديلها مباشرة. تحدث دائمًا مع MySQL الذي سيهتم باستخراج المعلومات الموجودة في هذه الملفات وتعديلها.
لكل DBMS طريقته الخاصة لتسجيل البيانات ، لكن لا يمكن لأي منها الهروب من ذلك: لكي تظل البيانات مسجلة ، يجب تخزينها في ملفات على القرص الصلب. على سبيل المثال ، باستخدام MySQL على Windows ، إذا كنت تستخدم WAMP ، فيجب أن تجد الملفات التي يتم تخزين المعلومات بها C:\wamp\mysql\data . أوصي بشدة بعدم لمسها لأنها لا تُعدل مباشرة!

في الممارسة العملية ، لن نلمس هذه الملفات أبدًا بشكل مباشر . سنطلب دائمًا من MySQL حفظ أو قراءة الأشياء. بعد ذلك ، هو الذي يستطيع أن يصنفها كما يريد في ملفاته.
وهذا هو بالضبط ميزة كبيرة من قاعدة البيانات: لا يوجد صداع لتخزين المعلومات. تطلب من MySQL أن تحصل على جميع الأخبار من موقعك المسجلة من فبراير إلى يوليو: سيتم قراءتها في ملفاتها ، وتظهر لك الإجابات. أنت فقط "تحدث" مع MySQL . إنه يتولى العمل القذر ، أي تخزين بياناتك في ملفاته.

في الخلاصة


  • قاعدة البيانات هي أداة تخزن بياناتك بطريقة منظمة وتتيح لك العثور عليها بسهولة لاحقًا.
  • نتواصل مع MySQL باستخدام لغة SQL . هذه اللغة شائعة في جميع أنظمة إدارة قواعد البيانات (مع وجود بعض الاختلافات الطفيفة ، لبعض الميزات المتقدمة).
  • PHP هو الوسيط بينك وبين MySQL .
  • تحتوي قاعدة البيانات على عدة جداول.
  • كل table هو عبارة عن جدول حيث تسمى الأعمدة "الحقول" و الصفوف "إدخالات" .