Warning: Function get_magic_quotes_gpc() is deprecated in /home/forumbs/public_html/includes/class_core.php on line 1960
الدرس العاشر [الأرشيف] - منتديات بانى ستار

المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الدرس العاشر



walid_8281500
03-23-2009, 04:57 AM
السلام عليكم ورحمة الله وبركاتة

كيفكم حبايبي عساكم تكونوا بألف خير

في الدرس الماضي تعرفنا على قواعد البيانات وماهيتها واستخدامها وعلى بعض الامور

الواجب معرفتها قبل الخوض في الدروس التطبيقية لقواعد البيانات

وسنتطرق في هذا الدرس الى :

1- MySql syntax and Commands (اوامرها وطريقة كتابتها)

2- كيفية دمج الـPHP مع MySQL

3- الربط بخـادم الـ MySQL

4- كيفية انشاء قواعد البيانات وعمل الجداول من خلال الأكواد

5- تطبيقات عملية وشرح كل كود سنقوم بكتابته على حدى

6- Querying the Data**** (الاستفسار من قاعدة البيانات)

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

اولا: MySql syntax and Commands

تكلمنا عن طريق ارسال الاوامر الى قواعد البيانات وقلنا بأن هنالك العديد من الطرق

ولكن في شروحاتنا سنتظرق لأرسالها من خلال ملفات الـ PHP فهنا وهناك الـ syntax هو نفسة

ولا يوجد اي اختلاف به.

اوامر التي سنستخدمها خلال شروحاتنا هي :

* CREATE : وهي لأنشاء قواعد البيانات والجداول في MySQL .
* ALTER : لتعديل الجداول الموجوده في قواعد البيانات .

* SELECT : اختيار اي نوع من البيانات الموجوده في القواعد مثلا الاسم الاول او موضوع معين.

* DELETE : لحذف البيانات الموجودة في الجداول .

* DESCRIBE : لتعرف تنظيم وتفصيلات الجداول .

* INSERT INTO tablename VALUES : لوضع القيم داخل الجداول

* UPDATE : لتحديث البيانات في الجداول .

* DROP : لحذف جدول محدد او قاعدة بيانات كاملة.

ثانيا : كيفية دمج الـPHP مع MySQL

بأستطاعتنا استخدام اوامر الـMySql مع الـ PHP بكل سهولة ويسر مثلما قمنا بذلك مسبقا مع الـHTML

وهذه بعض الدوال التي سنستخدمها في دروسنا القادمة وفي هذا الدرس :

1-



mysql_connect("hostname", "user", "pass")


وتستخدم هذه الدالة للربط مع السيرفر الخاص بـMySql
وهي مكونه من الدالة mysql_connect و hostname ويكون اغلب الاوقات localhost
user وهو مستخدم السيرفر ويكون في خادم الجمل هو root والـpass وبتكون حسب اختيارك
وفي حالتنا اعتقد بأنك لم تقم باختيار pass او كلمة مرور للخادم فتكون فارغة .

2-



mysql_select_db("data**** name")

وتستخدم لأختيار قاعدة البيانات التي تريد العمل عليها وهذه data**** name ستكون اسم قاعدة البيانات
التي سنقوم بأرسال البيانات لها وملئها بالجداول .

3-



mysql_query("query")


تستخدم لأرسال اي نوع من البيانات او الاوامر للخادم او للserver

4-



mysql_fetch_rows("results variable from query")


تستخدم لأرجاع القيم والمدخلات من الاعمدة او الحقول من قاعدة البيانات

5-



mysql_fetch_array("results variable from query")


تستخدم لأرجاع مجموعه من الاعمدة او الحقول من قاعدة البيانات

6-



mysql_error()


لأظهار الاخطاء التي تعود من سيرفر الـmysql

عليك ان تكون اكثر تألفا مع هذه الاوامر والاوامر الكثيرة الاخرى فهي ستسهل عليك عملك بشكل كبير
فبأمكانك ارسال اي نوع من الاوامر الى قاعدة البيانات بأستخدام هذه الاوامر مثلا هذا :




$query="SELECT * from TABLE";
$results=mysql_query($query);

سهلة جدا لا تتفاجأ فعند سرحها ستجدها من ابسط الاوامر التي ستراها في حياتك .

لننتقل الان الى الامرالثالث وهو
الربط بخـادم الـ MySQL

قبل ان تقوم بعمل اي شي مع MySql عليك اولا ان تقوم بربط قاعدة البيانات مع الخادم عن طريق بعض الاوامر
وهذا شرح لهذه الاوامر او ما ستحتاجه لربط قاعدة البيانات مع الخادم ..

* Host name : وفي حالتنا فأنك قمت بتنصيب خادم الجمل على localhost ولن تتغير الا اذا
كان اسم الخادم مختلف في بعض السيرفرات التي ستعمل عليها سكربتاتك

* Username and Password : اذا كنت قد غيرت اسم المستخدم للخادم من خلال تنصيب خادم الجمل
فسيكون حسب ما اخترت من اسم المستخدم او كلمة المرور اما اذا لم تغير في شيء فسيكون
اسم المرور هو : root
وكلمة المرور :فارغة او حسب اخيارتك من خلال تنصيبك للسيرفر الشخصي في بداية دروسنا

ستسخدم هذه الاوامر مع دالة تسمى mysql_connect ويمكنك استخدامها بطريقتين اما ان تضعها
داخل متغيرات او تجعلها كما هي نصية وهذا مثال على ما مضى..



$host = "localhost";
$user = "root";
$pass = "";
$connect = mysql_connect($host , $user , $pass);


وهذه الجملة هي مطابقة تماما للجملة الماضية ..



$connect = mysql_connect ("localhost , "root" , "");

فأختر ما شئت منهما ..

والجزء الاهم الان هو الطريق السليم لتصميم قاعدة بياناتك وجداولك التي ستوضع بها وما هي
افضل الاكواد البرمجية التي ستستخدمها ..

كيفية انشاء قواعد البيانات وعمل الجداول من خلال الأكواد
قاعدة البيانات التي سنستخدمها في سكربتنا التي عملنا عليه منذ بداية دورتنا وهو سكريبت موقع الافلام
ستحتوي على ثلاث جداول
1- movie والذي سيستخدم لتخزين اسماء الافلام ومعلومات عنها
2- movietype الذي سيستخدم لتخزين انواع الافلام المختلفة
3- people والذي سيستخدم لتخزين اسماء الممثلين والمخرجين لهذه الافلام

لننتقل الان الى تطبيق ما سبق تطبيقا عمليا وسنشرح ما سنقوم به كل حرف على حدى
حتى تصل لكم المعلومة بالطريقة الصحيحة والسليمة بأذن الله ..

تأكد بعد كتابة الاكواد ان تقوم بفتح الملف creatmovie.php ومن ثم moviedata.php

وانه لم يظهر لك اي خطأ وظهرت جملتين النجاح بالعملية

اولا لنقم بفتح ملف جديد ولنقم بتسميته creatmovie.php .. واكتب به الكود التالي :

http://www.3baer.com/php-les/les10/1.jpg
http://www.3baer.com/php-les/les10/2.jpg

شرح ما قمنا بكتابتة في هذا الملف ..

كما لاحظنا في البداية قمنا بالاتصال بالخادم من خلال الدالة mysql_connect
وقمنا بأعطائها القيم المطلوبة للأتصال ومن ثم من خلال الدالة or die فأنه اذا حدث خطأ في الاتصال
سيقوم المتصفح بأظهار الجملة فشل الاتصال تأكد من البيانات

ومن ثم قمنا بأنشاء قاعدة البيانات التي سنقوم بالعمل عليها في كامل السكريبت وهذه الاكواد التي ستخدمناها
mysql_query وارسلنا من خلالها الامر بأنشاء قاعدة البيانات
CREATE DATA**** وهو امر ضروري يجب كتابته عندما تريد ان تنشئ قاعدة
IF NOT EXISTS وهذا الشرط الذي يساعد على عدم ظهور خطأ عند بناء قاعدة البيانات
فأذا كانت موجود فلن يظهر خطأ يقول لك بأنها موجودة مسبقا
moviesite وهو اسم قاعدة البيانات..

ومن ثم قمنا بالتأكد بأننا نقوم بالاتصال بقاعدة البيانات التي نريد وهو اساسي من خلال الدالة
mysql_select_db

نأتي الان لأنشاء الجداول ..

قمنا بأستدعاء الامر CREAT TABLE وهو لانشاء الجدول المراد انشاءه ومن ثم وضعنا اسم الجدول بجانبه
وهو movie

ومن ثم قمنا بفتح قوس ووضعنا اسم اول عمود او حقل بهذا الجدول وكان movie_id
بعدها اخترنا النوع وكان نوعه INT وفتحنا قوس ووضعنا عدد الارقم وهو 11
وعيناه على انه ليس فارغ بأستخدام NOT NULL
ومن ثم اضفنا عليه بأنه متزايد بالعباره auto_increment وانهينا الحقل الاول بالفاصلة ,

وكذلك الحال مع باقي الحقول وهناك اضافات على الحقول وهي
default وهي لتعيين الرقم الافتراضي بـ صفر
ومن ثم اخترنا الحقل movie_id على انه الفهرس الاساسي PRIMARY KEY

ومن خلال هذه الجملة



KEY movie_type (movie_type,movie_year)


قمنا بوضع الحقل movie_type على انه فهرس اضافي ويندرج تحته movie_type و movie_year

ثم من خلال الدالة mysql_query قمنا بوضع هذه المعلومات داخل قاعدة البيانات

وكذلك الحال في باقي الجداول ....

يرجى دراستها جيدا واي استفسار او شيء غير مفهوم السؤال عنه لأنها مهمه جدا

وملاحظة مهمه جدا ايضا تأكد جيدأ بأنك قد كتبت الكود بالشكل الصحيح ارجوكم ثم ارجوكم
تأكدوا من كل حرف تكتبوه ومن طريقة كتابتكم للحروف لأنها حساسة جدا وتحتاج الى الكثير من التركيز..

لننتقل الان الى ادراج المعلومات التي نريدها في قاعدة البيانات والجداول التي قمنا بأنشائها

ولنقم بفتح ملف جديد ونسمية moviedata.php واكتب به الكود التالي :

http://www.3baer.com/php-les/les10/3.jpg
http://www.3baer.com/php-les/les10/4.jpg

لنقم الان بشرح ما سبق شرحا كاملا ولكن انتبه اولا قبل ان تذهب للشرح عليك بالتأكد من ظهور جملة

تم ادخال البيانات بنجاح!

واذا واجهتكم مشاكل سأقوم بشرح بأخر الدرس كيف تقوم بحل المشكلة بشكل جذري حتى تستطيع
كتابة الكود كاملا وتظهر لديك النتائج الصحيحة بدون الرجوع الى phpmyadmin وهو البرنامج
الخاص بتحرير قواعد البيانات

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

لنأتي الان للأمر INSERT INTO في هذا الامر نقوم بأدخال البيانات التي نريد في جدول معين
وقمنا بتعين الجدول movie في هذا الامر لنقوم بأدخال المعلومات الية
ومن ثم قمنا بفتح قوس ووضعنا اسماء الحقول التي نريد وضع البيانات بها انتبه فترتيب اسماء
الحقول مهم جدا في هذه المرحلة ومن ثم قمنا بكتابة كلمة VALUES لندل الكود على ان هذه
هي القيم التي نريد ادراجها في هذه الحقول لنأخذ مثلا



(movie_id, movie_name, movie_type, " .
"movie_year, movie_leadactor, movie_diractor) " .
"VALUES


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



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


لاحظ بالحقل الاول قمنا بوضع الرقم 1 بجانب لتعيينه في movie_id
ومن ثم وضعنا 'Bruce Almighty' لتعيينه في movie_name اي انه اسم الفيلم
ومن ثم وضعنا الرقم 5 بجانب movie_type حسنا هنا من اين اتى الرقم 5 سأجيب
ولكن هل تذكرون الملف الاول مالذي قمنا بفعله في جدول movietype قمنا بجعل الحقل
movietype_id على انه مفتاح اساسي PRIMARY KEY صحيح وفي الملف الثاني
قمنا بأدخال انواع الافلام Drama و Comedy كان رقم Comedy هو الرقم 5

حسنا لتفهمو اكثر المفتاح الاساسي الذي هو Comedy تم استدعاء الرقم الخاص به وهو 5
في الحقل movie_type في الادخال الاول الذي سيتم في الجدول movie
اي اننا قمنا بربط الحقل movie_type بالجدول movie بالرقم 5 من الجدول movietype

ومن ثم ادخلنا movie_year وكانت 2003
وبعدها movie_leadactor الذي قمنا بوضع القيمة له وهي واحد (1) اي ان هذا الفيلم لـJim Carrey
وقمنا بربطه بالجدول people

انظر للصورة وستفهم ان شاء الله

http://www.3baer.com/php-les/les10/table.jpg


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


لننتقل الان الى الجزء السادس والاخير من هذا الدرس وهو

Querying the Data**** (الاستفسار من قاعدة البيانات)

الان لدينا بعض البيانات في قاعدة البيانات التي قمنا بأنشاءها ونود ان نعرضها على الزوار في موقعنا
فكيف يتم ذلك ؟ فالنتذكر ما قمنا بشرحه في بداية الدرس وهو الامر SELECT
انظر لكيفية عملة بالطريقة الصحيحة والمفصلة ...



SELECT [fieldname]
AS [alias]
FROM [tablename]
WHERE [criteria]
ORDER BY [fieldname to sort on]
LIMIT [offser, maxrows]


لا تتفاجأ من الكود فهو بسيط وسترى ذلك بعينك لنشرحه الان كلمة كلمة..

SELECT [fieldname] : هذا الامر يقوم بأختيار الحقل الذي تريد عرض بياناته
واذا كنت تريد عرض جميع الحقول ما عليك سوا اضافة * اي نجمة مكان fieldname
تذكر بأن fieldname تعني اسم الحقل المراد اختياره

AS [alias] : بهذا الامر يمكنك دمج عدة حقول في حقل واحد واستدعائها في متغير واحد كبير مثلا



SELECT first_name , last_name AS full_name ... ORDER BY full_name...

ملاحظة : لايمكنك استخدام AS مع WHERE

FROM : في هذا الجزء البسيط تحتاج فقط لكتابة اسم الجدول الذي تريد احضار البيانات منه

WHERE : ستشرح لاحقا مع المثال

ORDER BY : استخدم هذا الامر اذا كنت تريد ترتيب البيانات في الحقول
واذا كنت تريد ان تظهر الحقول مرتية تنازليا اضف DESC

LIMIT : هذا الخيار يسمح لك بأختيار الحد الذي تريد جلبه من البيانات مابين وبين مثلا
LIMIT 9, 10
هذا الامر يظهر لك المدخلات من 10 الى 19 يستخدم مثلا عندما تقوم ببرمجة سكريبت
ويوجد خيار يسمح للمستخدم بالوصول الى الصفحة التالية مثلا عند فتح موضوع يوجد به اكثر من صفحة
فبأمكانك من خلال هذا الخيار عند ضغط العضو على رقم الصفحة ان ينتقل لها...

وفي الدرس القادم سنتعلم كيفية استدعاء هذا الامر للنقوم ببعض الامور الجميلة بصفحات برنامجنا^^

اعتقد بأنه بيكفي لحد هون لأنه عنجد الدرس جدا طويل ومحتاج متابعة وفهم مظبوط
حتى تطلع معاكم الامور تمام

والي ما فهم اي نقطه ممكن انه يستفسر عنها بالموضوع المخصص
الموضوع ليس بالهين ولكن ايضا ليس بالصعب فقط شوية تركيز وصدقوني لو ركزتو فقط ساعه او ثنين
رح تسيب الدرس وتروح تطبق بدون اي مشاكل

بالنسبة للتطبيق بيكون بالمشاركة التالية ان شاء الله

طبعا الوقت المحدد للدرس حيكون يومين من هذه اللحظة ان شاء الله

والله يوفقكم جميعا حبايبي

واتمنى اني اكون وفقت في عرض الشرح
وبصراحة ما رح تجدوا اسهل من هيك شرح لكل نقطه في اي مكان http://traidnt.net/vb/images/smilies/bleh.gif

والله يوفقكم وايانا ان شاء الله

والسلام ^^