99
الصفحة1 PHP Personal Home Page ستخدام لغةرنت بانت برمجة مواقع اPHP حيات مع تم والتدريبتعلير ال قطاhttps://www.facebook.com/EandT.Train/?ref=hl عكم م يحلو المسير

PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

1الصفحة

PHP

Personal Home Page

PHPبرمجة مواقع اإلنترنت باستخدام لغة

مع تحيات

قطار التعليم والتدريب

https://www.facebook.com/EandT.Train/?ref=hl

المسير يحلومعكم

Page 2: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

2الصفحة

احملتويات لغة هي ما: األول الدرس PHP ؟

المزودات: الثاني الدرس

صفحة أول إنشاء: الثالث الدرس PHP

والتاريخ الوقت مع التعامل: الرابع الدرس

الحلقات: الخامس الدرس

الشروط: السادس الدرس

المصفوفات: الثامن الدرس

برامجك في تعليقات ضع: السابع الدرس

الوظائف: التاسع الدرس

الموقع عنوان خالل من المتغيرات تمرير: العاشر الدرس (URL)

النماذج خالل من المتغيرات تغيير: عشر الحادي الدرس

الجلسات: عشر الثاني الدرس (Sessions)

الكوكيز: عشر الثالث الدرس (Cookies)

الملفات نظام: عشر الرابع الدرس

نصي ملف من القراءة: عشر الخامس الدرس

نصي ملف في الكتابة: عشر السادس الدرس

البيانات قواعد: عشر السابع الدرس

والجداول البيانات قاعدة إنشاء: عشر الثامن الدرس

البيانات قاعدة في البيانات إدخال: عشر التاسع الدرس

البيانات قاعدة من البيانات استرجاع: العشرون الدرس

البيانات قاعدة من البيانات حذف: والعشرون الواحد الدرس

البيانات قاعدة في البيانات ثتحدي: والعشرون الثاني الدرس

Page 3: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

3الصفحة

مقدمة

للكلماتهو اختصار PHPالمصطلح

Personal Home Page وه عبارة عن لغة برمجة تعطك الحرة إلضافة خصائص متقدمة ف موقعك

اإللكترون.

، الدرس بدأ من الصفر PHP الهدف من هذا الدرس هو توفر مقدمة سهلة متكاملة ودققة للغةفعلك أن HTML تعرف، إن كنت ال HTML لكنه تطلب منك أن كون لدك معرفة جدة بلغة

. HTMLبدرس تبدأ

PHP مكن استخدامها ف الكثر من الحاالت، إلنشاء المنتدات، االستفتاءات، المتاجر، بواباتهو خالك، PHP ما مكنك فعله فللرسائل النصة القصرة، قوائم بردة وغر ذلك، الحد الوحد ل

PHP لست صعبة لكن تذكر أنها أكثر تطورا وتطلبا من HTML لذلك الصبر عند تعلمها ..ضروري

هذا الدرس ال مكنه تعلمك كل شء، لذلك المطلوب منك أن تشارك وتجرب بنفسك، إن احتجت للحصول على دعم، ف المنتدات ستلتق بخبراء مكنهم المنتدات لمساعدة فننصحك بزارة

.مساعدتك بالتلمحات والمقترحات والنصائح

ما المطلوب؟

.نفترض أنك تملك محررا نصا وتعرف كف تستخدمه

لغة CSSو HTML ، على النقض منPHP بعد ذلك أنت بحاجة لحاسوب أو مزود مكنه تشغلتتؤثر بؤي متصفح ستخدمه زوار موقعك بل بنوع المزود الذي ستضف موقعك، ال PHP البرمجة

.من جهة المزود ه تقنة PHP ألن

وكف تعد حاسوبك لتشغلها، بعد ذلك ستتعلم PHP ف الدروس القللة القادمة ستتعلم كف تعمل .وظائفها وطرقها

وبالتال ستحصل على إمكانات PHP خدامعندما تنته من هذا الدرس، ستتمكن من البرمجة باست .غر محدودة إلضافة التفاعل ف صفحات موقعك

!استمتع

Page 4: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

4الصفحة

؟PHP : ما هي لغةألول االدرس

؟ وكف تعمل؟PHP السإال الذي تكرر طرحه هو: ما ه PHP عندما بدأ أي شخص ف تعلم

قبل PHP المتعلقة بلغة هذا بالضبط ما سنجب عنه ف هذا الدرس، من المفد أن تفهم األساسات .أن تبدأ تطور صفحات موقعك بها، فهم األساسات سعجل من سرعة تعلمك بشكل كبر

!لنبدأ

؟PHP لغة ما ه

PHP ه اختصار Personal Home Pages لكنها اآلن ،طورت ف البداة من قبل المطور الدنمارك .PHP: Hypertext Preprocessor تعن

لست من المعار القاسة للوب PHPذلك تحولت لمشروع برنامج حر، راسموس لدروف، بعدلست لغة برمجة حققة لكنها تسمح لك بدمجها ف صفحات PHPلكنها تقنة مفتوحة المصدر،

.موقعك

HTML حوي خلطا من php. مكنك أن تقول بؤنها ملف بامتداد PHP لوصف ما ه صفحة .ل على مزود وبوه تعم PHP ولغة البرمجة

لست لغة برمجة كبقة اللغات األخرى، بل ه لغة PHP مالحظة المترجم: المقصود هنا أن .متخصصة لتطور المواقع فقط وه لغة مرنة مكن دمجها ف صفحات المواقع

؟PHP كف تعمل

، تصور أنك كتبت عنوان صفحةHTML ه بمقارنتها مع PHP أفضل طرقة لشرح كف تعملHTML (مثال http://www.mysite.com/page.htm) ،ف حقل العناون ف المتصفح

:، مكن تصور هذه العملة بهذا الشكلHTML صفحة تطلب بهذه الطرقة أنت

Page 5: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

5الصفحة

إلى الزبون أي إلى حاسوب الزائر، لكن إذا HTML كما ترى المزود ببساطة رسل ملفسحتاج - PHP صفحة طلبت أي - http://www.mysite.com/page.php كتبت

:المزود لمزد من بذل الجهد

بعناة لرى إن كان هناك أي مهمات عله تنفذها، فقط عندما PHP المزود عله أوال أن قرأ ملفنته المزود مما جب عله فعله سرسل النتجة إلى الزبون، من الضروري أن تفهم بؤن الزبون

.PHP ولس األوامر الموجودة ف ملفعمل المزود نتيجة رى فقط

فلن PHP أو "استعراض المصدر" ف صفحة "view source" هذا عن أنك إن نقرت علىعندما PHP ، لذلك ال مكنك أن ترى كف كتبت صفحةHTML بل فقط وسوم PHP ترى أوامر

.درس مثال تحاول استعراض مصدرها، علك أن تتعلم اللغة بطرقة مختلفة، بقراءة هذا ال

!ما تتعلمه في هذا الدرس هو ما تكتبه من أوامر للمزود

ف البداة علك أن تحصل على مزود، لكن ال تقلق، ال جب علك شراء حاسوب جدد، أنت بحاجة فقط إلى تثبت برنامج على حاسوبك لجعله عمل كمزود، الخار اآلخر هو أن تملك موقعا مستضافا

.، عندها علك أن تكون على اتصال باإلنترنت عندما تبرمجPHP على مزود دعم

.الدرس التال سكون حول كفة إعداد حاسوبك لعمل كمزود

Page 6: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

6الصفحة

: المزوداتلثاني االدرس

PHP لذلك تحتاج لمزود شغلمن جهة المزود ه تقنة ، PHP لكن هذا ال عن أنك بحاجة ، .ودلشراء أي شء، هناك خارات مختلفة للحصول على مز

أنت تحتاج لخار واحد، هذا الدرس مقسم إلى ثالثة أقسام، األول مقدمة للخارات الثالثة واختر منها .PHP ما ناسبك، عندما كون لدك مزود عمل سنكمل الدرس ف الجزء الثالث لنكتب أول صفحة

: موقع مستضاف على مزود1الخار

.PHP مكنك أن تختار مزودا ستضف موقعك ودعم

اختبر مزود موقعك لتعرف إن كان دعمPHP إن لم كن لدك موقع ف مزود مكنك أن تسجل ف حساب مجان

.PHPوه خدمة استضافة تدعم 000webhost.com على

على حاسوبك PHP : تثبت2 الخار

على حاسوبك لس نزهة ف الحدقة، هذا الخار مناسب لخبراء مستخدم الحاسوب، PHP تثبتودلال لتثبتها على PHP على حاسوبك، هنا ستجد روابط لتنزل PHP ومكن بالطبع إنجاز تثبت

:أنظمة مختلفة

دلل التثبت على وندوز دلل التثبت على ماك دلل التثبت على لنكس

XAMPP :3خار

XAMPP ممكن لنا أن نشغلهو برنامج جعل من السهل وال PHP على حواسبنا دون أن نثبتها .بؤنفسنا

تعلم كف تثبتXAMPP

Page 7: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

7الصفحة

PHP الدرس الثالث: إنشاء أول صفحة

كنك ، ثبت مزودا على حاسوبك أو مPHP من الدرس األول والثان تعلمت القلل حول ماهة لغة، الدرس سكون PHP الوصول لمزود دعم هذه اللغة، اآلن أنت جاهز لتبدأ ف كتابة أول صفحة

.وماذا مكنك إنجازه باستخدامها PHP سهال وبسطا، لكن بعد أن تنجز الدرس ستفهم ما ه لغة

:وتؤلف من php. هو ملف نص بامتداد PHP ببساطة ملف

نص وسوم HTML برمجة بلغة PHP

.PHP ، لذلك لنلق نظرة على برمجةHTML ت تعرف مسبقا ما هو النص وما ه وسومأن

، خالل الدرس سنضع كثرا من PHP وثائق مفصلة للغة أصدر PHP فرق توثقPHP برامجلغة واسعة PHPو أن تعتاد على البحث وإجاد األجوبة ألسئلتك، الروابط لهذه الوثائق، الهدف ه

تبدو PHPوال مكنك أن تتعلم كل إمكاناتها ف هذا الدرس، لكنها لست لغة صعبة، على العكس، .ف بعض األحان كاللغة اإلنجلزة

.األولى PHP لنبدأ بإنشاء صفحة

!Hello World :مثال

واحفظه ف المجلد page.php دة لكن أعط للملف اسمعا HTML ابدأ ف إنشاء صفحة :الرئس للموقع

إن كنت تستخدمXAMPP ( 2الدرس اقرأ)المسار إلى المجلد الرئس هو ، "c:\xampp\htdocs\page.php" اقرأ المزد .ف حاسوبك الذي عمل كمزود اآلن

. XAMPPف PHPحول حفظ ملفات أن كنت تستخدم استضافة فببساطة ارفع الملف إلى مزود موقعك.

:جب أن تكون بهذا الشكل HTML وسوم

<html>

<head>

<title>My first PHP page</title>

</head>

<body>

</body>

</html>

Page 8: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

8الصفحة

لذلك دعنا نكتب بعض بكتابة أوامر للمزود، متعلق PHP كما تتذكر من الدرس األول، كل شء ف .األوامر

تستخدم PHP ف .ستتوقف ومتى PHP ستبدأ ف البداة نحن بحاجة ألن نخبر المزود أنب على المزود تنفذها، ف معظم الت ج PHP لتحدد بداة ونهاة أوامر <?و php?> وسوم

ه الطرقة األفضل لك عندما php?> كوسم بداة فقط سكون كافا لكن ?> المزودات استخدام .ألول مرة ف الملف PHP تستخدم

:HTML اآلن أضف التال لوسوم

<html>

<head>

<title>My first PHP page</title>

</head>

<body>

<?php

echo "<h1>Hello World!</h1>";

?>

</body>

</html>

:ف المتصفح جب أن كون الملف بهذا الشكل PHP عندما تستعرض ملف

Page 9: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

9الصفحة

:"view source" األمر صبح مثرا أكثر عندما تنظر لمصدر الصفحة ف المتصفح باختار

-، PHP الذي ستطع أن رى أوامرذهبت! كما تتكر ف الدرس األول المزود وحده PHP أوامر !الزبون )أي المتصفح( يرى النتائج فقط

، بلغة <h1> Hello World!</h1>لنلق نظرة على ما حدث، نحن طلبنا من المزود أن كتب لنكتب سلسلة محارف محددة للزبون )المتصفح( echo تقنة أكثر سنقول بؤننا استخدمنا الوظفة

والفاصلة المنقوطة تنه األمر، لكن ال تخف، ف هذا الدرس سنحاول أن نبق اللغة التقنة ف حدها .األدنى

ف مثالنا األول من الواضح أنه لس مثرا للحماس، لكن انتظر فقط! من اآلن وصاعدا ستزداد .نظرة على مثال آخر األمور حماسا، لنلق

!مثال: اآلن

:لنجعل المزود كتب شئا آخر، مكننا مثال أن نطلب منه أن كتب تارخ الوم والوقت

<html>

<head>

<title>My first PHP page</title>

</head>

<body>

<?php

echo date("r");

Page 10: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

11

?>

</body>

</html>

:لشكل ف المتصفحهذا سظهر بهذا ا

:ف المقابل ستكون HTML ووسوم

اآلن األمور تبدو مسلة أكثر، ألس كذلك؟

Page 11: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

11

، الحظ أنك إذا جربت تحدث PHP جعلنا المزود كتب التارخ والوقت عندما تعرض صفحةالصفحة سترى وقتا جددا كتب، المزود كتب التارخ والوقت الحال ف كل مرة ترسل الصفحة

.لى الزبونإ

، لذلك المثال PHP حتوي فقط التارخ ولس أوامر HTML من المهم أضا أن تالحظ بؤن مصدرجهة ال تؤثر بؤي متصفح استخدم، ف الحققة كل الخصائص الت تعتمد على تقنات

!في كل المتصفحات ستعمل المزود

لة مهمة جدا وجب أن تضاف وإال ومرة أخرى الحظ الفاصلة المنقوطة بعد سطر األمر، هذه الفاص .لن عمل البرنامج

.، وه وظفة تعطنا الوقت والتارخ الحالن ف المزود dateف المثال استخدمنا وظفة

"." فصل بنهما - ظفة برمجةوو سلسلة محارف لنجرب إضافة المزد للمثال من خالل كتابة :هكذا -نقطة( )

<html>

<head>

<title>My first PHP document</title>

</head>

<body>

<?php

echo "<p>Current date and time: " . date("r")

. "</p>";

?>

</body>

</html>

:ستظهر بهذا الشكل ف المتصفح

Page 12: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

12

: المقابل ستكونف HTML ووسوم

.واألشكال المختلفة للتارخ والوقت date ف الدرس التال سنلق نظرة مفصلة أكثر على وظفة

Page 13: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

13

الدرس الرابع: التعامل مع الوقت والتاريخ

، ف PHP لمختلفة للتعامل مع الوقت والتارخ فف هذا الدرس سنلق نظرة على الخارات االدرس السابق استعرضنا أمثلة بسطة لنشرح ماهة اللغة، ف هذا الدرس سنلق نظرة على

date .وظفة

وظائف الوقت والتارخ

PHP ف هذا الدرس سنلق نظرة على الوظائف المتعلقة بالوقت والتارخ تقدم مجموعة واسعة من ، : date.أهم هذه الوظائف

أن تعط التارخ الحال أو الوقت dateظفةمع وجود الكثر من العوامل المختلفة مكن لو :بؤشكال مختلفة، بعض أكثر العوامل المفدة ه

date("y")

15 :عطنا السنة الحالة، وبتارخ الوم فهو عطنا

date("m")

الوم فهو عطنا عطنا الشهر الحال، وبتارخ : 12

date("F")

December :عطنا اسم الشهر الحال، وبتارخ الوم فهو عطنا

date("d")

13 :عطنا الوم الحال ف الشهر، وبتارخ الوم فهو عطنا

date("l")

Sunday :عطنا اسم الوم، وبتارخ الوم فهو عطنا

date("w")

بوع، وبتارخ الوم فهو عطناعطنا رقم الوم ف األس : 0

date("H")

07 :عطنا الساعة الحالة، وبالتوقت الحال فهو عطنا

date("i")

42 :عطنا الدققة الحالة، وبالتوقت الحال فهو عطنا

date("s")

Page 14: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

14

52 :عطنا الثانة الحالة، وبالتوقت الحال فهو عطنا

date:فةهذا المثال وضح استخدام وظ

<html>

<head>

<title>Time and date</title>

</head>

<body>

<?php

echo "<p>Today it's " . date("l") . "</p>";

?>

</body>

</html>

شاهد المثال

1444499442الوقت هو

وبالتحدد من 4714تعطنا الوقت الحال كعدد من الثوان منذ الواحد من نار ()time وظفة .مساء بتوقت غرنتش 12الساعة

<html>

<head>

<title>time and date</title>

</head>

<body>

<?php

echo "<p>It's been exactly " . time() . "

seconds since January 1, 1970, 12:00 PM, GMT </ p>

";

?>

</body>

</html>

Page 15: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

15

شاهد المثال

مساء بتوقت غرنتش سمى 12الساعة 1447نار 1الوقت المعبر عنه بعدد الثوان منذ "timestamp" مفد عند التعامل مع أو الطابع الزمن وسمى أضا الطابع الزمن لونكس وهو

.التوارخ واألوقات ف المستقبل أو الماض

، لكن من ()timeتستخدم الطابع الزمن الحال أي القمة الحالة لوظفة dateتلقائا وظفةخالل عوامل إضافة مكنك أن تحدد طابعا زمنا مختلفا وهكذا مكنك التعامل مع الماض

مساء بتوقت 12الساعة 1447نار 1والمستقبل، ف المثال أدناه حددنا الثانة صفر من تارخ :غرنتش، هكذا مكننا معرفة أي وم كان هذا

<html>

<head>

<title>time and date</title>

</head>

<body>

<?php

echo "<p>January 1, 1970 was a " . date("l",0)

. "</p>";

?>

</body>

</html>

شاهد المثال

إلى وقت محدد ف المستقبل أو الماض، إال إن كنت 1447نار 1زداد تعقد عد الثوان منذ دد ، الت مكنها أن تحسب ع: mktimeعبقري راضات! لكن مكنك لوظفة مفدة أن تساعدك

.الثوان

، المثال أدناه حول الوقت (ساعة، دققة، ثانة، شهر، وم، عام )ه mktime طرقة كتابة قم :72:56ف 1464ولو 21ألول خطوة على القمر

<html>

<head>

<title>time and date</title>

Page 16: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

16

</head>

<body>

<?php

echo mktime (2,56,0,7,21,1969);

?>

</body>

</html>

شاهد المثال

.1447نار 1ارخ الذي طلبناه كان قبل الحظ أنه عطنا رقما سلبا ألن الت

.لنجد أي وم وقع هذا الحدث التارخ date مكننا أن نجمع بن هذه الوظفة ووظفة

<html>

<head>

<title>time and date</title>

</head>

<body>

<?php

echo date("l", mktime(2,56,0,7,21,1969));

?>

</body>

</html>

شاهد المثال

كف مكنك استخدامها؟

، األهم من ذلك ()timeف مكنك أن تستخدم وظفة مثلكل ما سبق بدو نظرا حتى اآلن، ك متى ستتعلم شئا مكنك أن فعال أن تضفه ف صفحاتك؟

Page 17: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

17

بها هو إبداعك اإلجابة ه أن ما تتعلمه هنا ه لبناء البناء األساسة، الحد الوحد لما مكنك فعله وخالك! سؤتجرأ ألقول بؤنك تعلمت أكثر مما تظن، مثال هل تظن أنه بإمكانك إنشاء موقع عرض

خلفة للصفحة تتغر بحسب أام األسبوع وعمل على كل المتصفحات؟

:بالتؤكد مكنك، ألق نظرة على المثال

<html>

<head>

<title>time and date</title>

</head>

<body background="background_<?php echo

date("w"); ?>.png">

</body>

</html>

شاهد المثال

صور لخلفة الموقع وتسم كل واحدة 4المثال أعاله بصور متغرة، ببساطة تطلب منك أن تصنع .إلخ ... background_3.pngو background_2.pngو background_1.png منها

كخلفة، ف background_2.png إن زار مستخدم موقعك وم الثالثاء الموقع سعرض صورة !، بسط وسهلbackground_3.png الوم التال سعرض

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

PHP ممتعة، ألس كذلك؟

Page 18: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

18

الدرس الخامس: الحلقات

من الممكن أن تدر تنفذ البرامج بهاكل تحكم مختلفة، ف هذا الدرس سنلق نظرة على PHP فعدد محدد من المرات أو إلى ، الحلقات مكن استخدامها لتكرار أجزاء من البرنامج ب(loop) الحلقات

.أن تحقق شرط محدد

while حلقات

:ه while طرقة كتابة حلقة

while (condition) {

Statement

}

.رط المحدد محققالش بينما إفعل كذا :بناء الحلقة مكن ترجمته إلى العربة

:لنلق نظرة على مثال بسط

<html>

<head>

<title>Loops</title>

</head>

<body>

<?php

$x = 1;

while ($x <= 50) {

echo "<p>This text is repeated 50

times</p>";

$x = $x + 1;

}

?>

</body>

</html>

Page 19: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

19

شاهد المثال

دائما تبدأ برمز "$"، من PHP ، كما ترى المتغرات ف"x$" المسمى المتغر ف المثال استخدمنا .عمل البرنامجالسهل نسان هذه النقطة ف البداة لكن من الضروري تذكر ذلك وإال لن

، ثم الحلقة تسؤل 1أعطناه القمة x$ بعد هذه النقطة المثال شرح نفسه تقربا، ف البداة المتغرستزداد قمته x$ ، ف كل تكرار المتغر57أقل أو ساوي x$ المزود أن أن كرر النص ما دام أن

.1بإضافة

for حلقات

:بهذا الشكل for ا من خالل األمرهناك طرقة أخرى الستخدام الحلقات وهذ

for (Initialization; Condition; Step) {

Statement

}

حققان الشرط (step) والخطوة (Initialization) كرر ما دام أن التهئة (statement) البان(Condition)إن لم تفهم هذا فانظر إلى المثال ،:

<html>

<head>

<title>Loops</title>

</head>

<body>

<?php

for ($x=0; $x<=50; $x=$x+5) {

echo "<p>variable $x is now = " . $x .

"</p>";

}

?>

</body>

</html>

Page 20: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

21

شاهد المثال

أقل من أو x$ ف كل حلقة، التكرار سستمر ما دام أن 5زداد بقمة x$ ف المثال أعاله المتغر .تستخدم كجزء من الجملة x$ ، الحظ أضا أن القمة57تساوي

:هذا مثال آخر

<html>

<head>

<title>Loops</title>

</head>

<body>

<?php

for ($x=1; $x<=6; $x=$x+1) {

echo "<h" . $x . ">Heading level " . $x .

"</h" . $x . ">";

}

?>

</body>

</html>

شاهد المثال

بالعدد واحد، ثم ف كل تكرار نكتب عنوانا على x$ هل فهمت المثال؟ ف البداة حددنا قمة المتغر .تساوي ستة x$ إلخ( إلى أن تصبح قم ... h3 ثم h2 ثم h1) أي x$ مستوى

حلقات داخل حلقات

تضع حلقات داخل حلقات كمبدأ، لس هناك حد لكفة استخدام الحلقات، فمثال مكنك بسهولة أن .من التكرار العديد وهكذا تنشؤ

تصبح بطئة ومعقدة وكبر حجم البرنامج ، ألق نظرة على المثال التال حث PHP !لكن احذر !ملون لونا 16حلقات مكننا كتابة 3باستخدام

بالتال قللنا عدد ، و37لك ال نجعل الصفحة بطئة قللنا العدد بؤن جعلنا الخطوة محدودة بالرقم .512األلوان إلى

Page 21: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

21

<html>

<head>

<title>Loops </title>

</head>

<body>

<?php

for ($intRed=0; $intRed<=255;

$intRed=$intRed+30) {

for ($intGreen=0; $intGreen<=255;

$intGreen=$intGreen+30) {

for ($intBlue=0; $intBlue<=255;

$intBlue=$intBlue+30) {

$StrColor = "rgb(" . $intRed . "," .

$intGreen . "," . $intBlue . ")";

echo "<span style='color:" . $StrColor

. "'>" . $StrColor . "</span>";

}

}

}

?>

</body>

</html>

شاهد المثال

، أي مركب 255و 7ف هذا المثال كل لون أول )أحمر أخضر وأزرق( مكنه أن حمل قمة ما بن .<span>، رقم اللون ستخدم ف وسم rgb(255,255,255) من األلوان الثالثة كون لونا بشكل

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

الدرس السادس: الشروط

Page 22: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

22

الشروط تستخدم لتنفذ أجزاء من البرنامج فقط عندما تستوفى متطلبات محددة مسبقا، فمثال الشرط .4أو متغر أكبر من 2712مكن أن كون تارخ بعد األول من نار

If...

:، وهو كتب بهذا الشكل ifنظرة عله هوأول نوع من الشروط سنلق

if (condition) {

statement

}

، تحقق شرط فنفذ كذا وكذا (If) إذا مرة أخرى، طرقة كتابة األمر قربة جدا من اللغة الطبعة، :بسط لنلق نظرة على مثال

<html>

<head>

<title>Loops </title>

</head>

<body>

<?php

$x = 2;

if ($x > 1) {

echo "<p>variable $x is greater than 1

</p>";

}

?>

</body>

</html>

if ... else ...

:، وهو ما مكن أن كتب بهذا الشكل elseالنوع التال من الشروط الذي سنلق نظرة عله هو

Page 23: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

23

if (condition) {

statement

}

else {

statement

}

تحقق شرط نفذ كذا وكذا، (if) إذا :مرة أخرى، أسلوب كتابة األمر قرب من اللغة الطبعة .نفذ شئا آخر else وإال

و if تعلمت كف تجد رقم الشهر، ف المثال التال سنستخدم رقم الشهر ف حلقة الدرس الرابع فelse والشرط وضعت لمعرفة الموسم:

<html>

<head>

<title>Conditions</title>

</head>

<body>

<?php

if (date ("m") == 3) {

echo "<p>Now it's spring!</p> ";

}

else {

echo "<p>I do not know what season it

is!</p> ";

}

?>

</body>

</html>

شاهد المثال

!ن الشهر مارسكما ترى، الشرط لس شرطا ذكا وفقط عمل إن كا

Page 24: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

24

(operators) على أي حال هناك كثر من الطرق لتحسن الشرط وزادة دقته، أدناه قائمة العوامل :الت مكن استخدامها ف الشروط

ساوي == أقل من > أكبر من <

أقل من أو ساوي => أكبر من أو ساوي =< ال ساوي =!

:باإلضافة إلى ذلك هناك عوامل منطق

و && أو || ال !

العوامل مكن استخدامها لوضع شروط أكثر دقة، اآلن مكن توسع المثال أعاله إلدراج كل شهور :الربع

<html>

<head>

<title>Conditions</title>

</head>

<body>

<?php

if (date("m") >= 3 && date("m") <= 5) {

echo "<p> Now it's spring!</p> ";

}

else {

echo "<p> Now it's either winter, summer or

autumn!</p> ";

}

?>

</body>

</html>

Page 25: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

25

::لنلق نظرة مقربة على الشرط المحسن

date("m") >= 3 && date("m") <= 5

:مكن ترجمة الشرط إلى

، والشهر أقل من 3إن كان الشهر أكبر من أو يساوي

5 أو يساوي

.PHP شرط ذك، ألس كذلك؟ العوامل تلعب دورا مهما ف كثر من أجزاء

لكن ال زال البرنامج عمل لشهور مارس، أبرل وماو، بقة الشهور لم تذكر ف الشرط، لذلك دعنا .نطور الشرط أكثر

if ... elseif ... else...

:مكننا توسع الشرط لعمل على كافة الشهور elseif باستخدام

<html>

<head>

<title>Conditions</title>

</head>

<body>

<?php

if (date("m") >= 3 && date("m") <= 5) {

echo "<p>Now it's spring!</p>";

}

elseif (date("m") >= 6 && date("m") <= 8) {

echo "<p>Now it's summer!</p>";

}

elseif (date("m") >= 9 && date("m") <= 11) {

echo "<p>Now it's autumn!</p>";

}

Page 26: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

26

else {

echo "<p>Now is winter!</p>";

}

?>

</body>

</html>

شاهد المثال

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

switch ... case

switch:هناك طرقة أخرى لكتاب الشروط باستخدام

switch (expression) {

case 1:

statement

break;

case 2:

statement

break;

default:

statement

break;

}

ثم تضع قائمة بمختلف األجوبة والقم من خالل expression هذه الطرقة تعتمد على الشرط أو .، أسهل طرقة لشرح هذا األمر هو من خالل مثالstatements والبان أ

تعطنا رقم الوم ف األسبوع، هذا مكن date("w") كما تتذكر ف الدرس الرابع وظفة :استخدامه ف المثال بكتابة اسم الوم بدال من رقمه

<html>

Page 27: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

27

<head>

<title>Conditions</title>

</head>

<body>

<?php

switch(date("w")) {

case 1:

echo "Now it's Monday";

break;

case 2:

echo "Now it's Tuesday";

break;

case 3:

echo "Now it's Wednesday";

break;

case 4:

echo "Now it's Thursday";

break;

case 5:

echo "Now it's Friday";

break;

case 6:

echo "Now it's Saturday";

break;

default:

echo "Now it's Sunday";

break;

}

?>

</body>

</html>

شاهد المثال

، ما جب علك استخدامه ف أي ظرف عتمد elseو if تستخدم كبدل ألمر switch غالبا على أي طرقة تجدها أسهل وأكثر منطقة، محاولة أن تجعل برنامجك منطقا وواضحا سكون تحدا

لى كفة إضافة تعلقات لبرنامجك وكف تعمل، التعلقات ف الدرس التال سنلق نظرة ع.كبرا .الجدة مكنها أن تكون ضرورة لشخص آخر عله تغر شء ما ف برنامجك ف مرحلة الحقة

Page 28: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

28

الدرس السادس: الشروط

الشروط تستخدم لتنفذ أجزاء من البرنامج فقط عندما تستوفى متطلبات محددة مسبقا، فمثال الشرط .4أو متغر أكبر من 2712ن كون تارخ بعد األول من نار مكن أ

If...

:، وهو كتب بهذا الشكل ifأول نوع من الشروط سنلق نظرة عله هو

if (condition) {

statement

}

تحقق شرط فنفذ كذا (If) إذا ألمر قربة جدا من اللغة الطبعة،مرة أخرى، طرقة كتابة ا :، لنلق نظرة على مثال بسطوكذا

<html>

<head>

<title>Loops </title>

</head>

<body>

<?php

$x = 2;

if ($x > 1) {

echo "<p>variable $x is greater than 1

</p>";

}

?>

</body>

</html>

if ... else ...

:، وهو ما مكن أن كتب بهذا الشكل elseالنوع التال من الشروط الذي سنلق نظرة عله هو

Page 29: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

29

if (condition) {

statement

}

else {

statement

}

تحقق شرط نفذ كذا وكذا، (if) إذا :ى، أسلوب كتابة األمر قرب من اللغة الطبعةمرة أخر .نفذ شئا آخر else وإال

و if التال سنستخدم رقم الشهر ف حلقة تعلمت كف تجد رقم الشهر، ف المثال الدرس الرابع فelse والشرط وضعت لمعرفة الموسم:

<html>

<head>

<title>Conditions</title>

</head>

<body>

<?php

if (date ("m") == 3) {

echo "<p>Now it's spring!</p> ";

}

else {

echo "<p>I do not know what season it

is!</p> ";

}

?>

</body>

</html>

شاهد المثال

!كما ترى، الشرط لس شرطا ذكا وفقط عمل إن كان الشهر مارس

Page 30: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

31

(operators) على أي حال هناك كثر من الطرق لتحسن الشرط وزادة دقته، أدناه قائمة العوامل :الت مكن استخدامها ف الشروط

ساوي == أقل من > أكبر من <

أقل من أو ساوي => ويأكبر من أو سا =< ال ساوي =!

:باإلضافة إلى ذلك هناك عوامل منطق

و && أو || ال !

العوامل مكن استخدامها لوضع شروط أكثر دقة، اآلن مكن توسع المثال أعاله إلدراج كل شهور :الربع

<html>

<head>

<title>Conditions</title>

</head>

<body>

<?php

if (date("m") >= 3 && date("m") <= 5) {

echo "<p> Now it's spring!</p> ";

}

else {

echo "<p> Now it's either winter, summer or

autumn!</p> ";

}

?>

</body>

</html>

Page 31: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

31

::لنلق نظرة مقربة على الشرط المحسن

date("m") >= 3 && date("m") <= 5

:مكن ترجمة الشرط إلى

، والشهر أقل من 3إن كان الشهر أكبر من أو يساوي

5أو يساوي

.PHP شرط ذك، ألس كذلك؟ العوامل تلعب دورا مهما ف كثر من أجزاء

لكن ال زال البرنامج عمل لشهور مارس، أبرل وماو، بقة الشهور لم تذكر ف الشرط، لذلك دعنا .نطور الشرط أكثر

if ... elseif ... else...

:مكننا توسع الشرط لعمل على كافة الشهور elseif باستخدام

<html>

<head>

<title>Conditions</title>

</head>

<body>

<?php

if (date("m") >= 3 && date("m") <= 5) {

echo "<p>Now it's spring!</p>";

}

elseif (date("m") >= 6 && date("m") <= 8) {

echo "<p>Now it's summer!</p>";

}

elseif (date("m") >= 9 && date("m") <= 11) {

echo "<p>Now it's autumn!</p>";

}

Page 32: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

32

else {

echo "<p>Now is winter!</p>";

}

?>

</body>

</html>

شاهد المثال

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

switch ... case

switch:هناك طرقة أخرى لكتاب الشروط باستخدام

switch (expression) {

case 1:

statement

break;

case 2:

statement

break;

default:

statement

break;

}

ثم تضع قائمة بمختلف األجوبة والقم من خالل expression هذه الطرقة تعتمد على الشرط أو .، أسهل طرقة لشرح هذا األمر هو من خالل مثالstatements والبان أ

تعطنا رقم الوم ف األسبوع، هذا مكن date("w") كما تتذكر ف الدرس الرابع وظفة :استخدامه ف المثال بكتابة اسم الوم بدال من رقمه

<html>

Page 33: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

33

<head>

<title>Conditions</title>

</head>

<body>

<?php

switch(date("w")) {

case 1:

echo "Now it's Monday";

break;

case 2:

echo "Now it's Tuesday";

break;

case 3:

echo "Now it's Wednesday";

break;

case 4:

echo "Now it's Thursday";

break;

case 5:

echo "Now it's Friday";

break;

case 6:

echo "Now it's Saturday";

break;

default:

echo "Now it's Sunday";

break;

}

?>

</body>

</html>

شاهد المثال

، ما جب علك استخدامه ف أي ظرف عتمد elseو if تستخدم كبدل ألمر switch غالبا على أي طرقة تجدها أسهل وأكثر منطقة، محاولة أن تجعل برنامجك منطقا وواضحا سكون تحدا

لى كفة إضافة تعلقات لبرنامجك وكف تعمل، التعلقات ف الدرس التال سنلق نظرة ع.كبرا .الجدة مكنها أن تكون ضرورة لشخص آخر عله تغر شء ما ف برنامجك ف مرحلة الحقة

Page 34: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

34

الدرس السابع: ضع تعليقات في برامجك

مكنها أن تبدو مثرة للحرة، ف هذا الدرس سنتحدث عن أهمة PHP كما قد الحظت، برامج .ات وكف تضعها ف برامجكالتعلق

لماذا من المهم أن تضع تعلقات ف برامجك؟

عندما تبرمج فؤنت تكتب لمزود أو حاسوب وتحتاج لكتابة لغة منهجة قد ال تعبر عن أفكارك عندما .تكتب البرنامج

لذلك قد كون من الصعب على اآلخرن وعلك أن تفهم هكل البرنامج وبالتال من الصعب تصحح .األخطاء ف البرنامج

التعلقات تساعد على كتابة نص قصر شرح جزء من البرنامج، المزود ستجاهل هذا التعلق ولن .إثر التعلق على وظائف البرنامج

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

كف تضع التعلقات؟

."//" :من السهل أن تضع تعلقات ف برنامجك، ببساطة ابدأ التعلق بعالمة

:ألق نظرة على هذا المثال من الدرس الخامس ، أضفنا فه تعلقات

<html>

<head>

<title>Loops</title>

</head>

<body>

<?php

// Here we write color codes using three loops

// Red can be between 0 and 255

for ($intRed=0; $intRed<=255;

$intRed=$intRed+30) {

// Green can be between 0 and 255

for ($intGreen=0; $ intGreen<=255;

$intGreen=$intGreen+30) {

Page 35: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

35

// Blue can be between 0 and 255

for ($ intBlue=0; $intBlue<=255;

$intBlue=$intBlue+30) {

// The color code is made on the form

rgb(red,green,blue)

strColor = "rgb(" . intRed . "," .

intGreen . "," . intBlue . ")"

// Now we write the color code to the

client

echo "<span style='color:" . $strColor

. "'> " . $ strColor . " </span>";

// Closes the loops

}

}

}

?>

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

!لذلك، تذكر أن تضع تعلقات ف برنامجك

Page 36: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

36

الدرس الثامن: المصفوفات

.ف هذا الدرس سنلق نظرة على المصفوفات، كف تستخدم وماذا مكنها أن تفعل

كون صعبا ف البداة، لكن لنجرب على أي حال ... حاولنا أن نجعلها فهم المصفوفات مكن أن .سهلة بقدر اإلمكان

ما ه المصفوفة؟

ه مجموعة من من العناصر المفهرسة حث كل عنصر له رقم تعرف خاص (array) المصفوفة .به

.بدو هذا مثرا للحرة، لكنها ف الواقع لست بهذا القدر من التعقد

قائمة من الكلمات فصلنا بنها باستخدام فاصلة، تسمى القائمة مفصولة بفواصل، ومكنها أن تصور :تكون بهذا الشكل

apples, pears, bananas, oranges, lemons

:جرب أن تتخل تقسم القائمة عند كل فاصلة، ثم أعط كل قسم رقما ممزا كما ف الصورة

، الفكرة ه أنك تستطع "fruits" نا مثال أن نسم المصفوفة فواكه أوما تراه هو مصفوفة، مكن :الوصول إلى المصفوفة برقم وتحصل على قمة، كما ف القائمة أدناه

fruits(0) = apples fruits(1) = pears fruits(2) = bananas fruits(3) = oranges

fruits(4) = lemons

.لنستخدمها عملا هذه ه فكرة المصفوفات، اآلن

كف تستخدم المصفوفة؟

سنكمل مع مثال الفواكه، خطوة بعد خطوة سنجعلها تعمل كمصفوفة حققة، أوال علنا أن نضع :متغرات مساوة لقائمة الفواكه

Page 37: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

37

<?php

$fruitlist = "apples, pears, bananas, oranges,

lemons";

?>

:لفصل القائمة عند كل فاصلة explode بعد ذلك نستخدم وظفة

<?php

$fruitlist = "apples, pears, bananas, oranges,

lemons";

$arrFruits = explode(",", $fruitlist);

?>

!أصبح مصفوفة اآلن "arrFruits$" مرحى! المتغر

:بخاصتن explode الحظ أننا استخدمنا الوظفة

.األولى ه القائمة الت جب تقسمها .1 :(نا استخدمنا الفاصلةوالثانة ه المحدد أو الحرف الذي استخدم لتقسم القائمة )ف حالت .2

",".

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

:PHP لنجرب إضافة تعلق على البرنامج ووضعه ف صفحة

<html>

<head>

<title>Array</title>

</head>

<body>

<?php

Page 38: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

38

// Comma separated list

$fruitlist = "apples, pears, bananas, oranges,

lemons";

// Create an array by splitting the list (with

comma as delimiter)

$arrFruits = explode(",", $fruitlist);

// Write the values from our array

echo "<p>The list of fruits:</p>";

echo "<ul>";

echo "<li>" . $arrFruits[0] . "</li>";

echo "<li>" . $arrFruits[1] . "</li>";

echo "<li>" . $arrFruits[2] . "</li>";

echo "<li>" . $arrFruits[3] . "</li>";

echo "<li>" . $arrFruits[4] . "</li>";

echo "</ul>";

?>

</body>

</html>

شاهد المثال

هذا مثال بسط جدا ومكن أن تجد صعوبة ف فهم فائدة المصفوفات ف هذه المهمة بالتحدد، لكن .ف أشاء كثرة مفدةانتظر، المصفوفات مكن أن تكون تستخدم

داخل مصفوفة حلقة

.تعلمت الحلقات، اآلن مكننا استخدام حلقة للتعامل مع المصفوفة الدرس الخامس ف

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

:ستكون بهذا الشكل

<html>

<head>

<title>Array</title>

Page 39: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

39

</head>

<body>

<?php

// Comma separated list

$fruitlist = "apples, pears, bananas, oranges,

lemons";

// Create an array by splitting the list (with

a comma as delimiter)

$arrFruits = explode (",", $fruitlist);

echo "<p>The list of fruits:</p>";

echo "<ul>";

// Loop through the array $arrFruits

for ($x=0; $x<=4; $x++) {

echo "<li>" . $arrFruits[$x] . "</li>";

}

echo "</ul>";

?>

</body>

</html>

شاهد المثال

ف الحلقة استخدم لجلب المصفوفة 4إلى 7الذي ترتفع قمته من x$ كما ترى، المتغر

كف تجد حجم المصفوفة؟

، هل 5 ماذا لو أضفنا فاكهة أخرى إلى القائمة؟ ستحوي القائمة عنصرا إضافا وسحمل رقم التعرفوإال لن نستطع 5إلى 7أن تكرر نفسها من ترى مشكلة هنا؟ نحن بحاجة لتغر الحلقة حتى تستطع

.التعامل مع كل العناصر ف المصفوفة

ألن كون من المفد أن تكون هناك طرقة إلجاد عدد العناصر ف أي مصفوفة؟

، اآلن مكننا أن نصمم حلقة تعمل بغض النظر achforeهذا بالضبط ما مكن أن تفعله وظفة :عن عدد العناصر ف المصفوفة

Page 40: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

41

<?php

foreach ($arrFruits as $x) {

echo arrFruit[$x];

}

?>

.هذه الحلقة ستعمل بغض النظر عن عدد العناصر الت تحوها المصفوفة

:دام المصفوفة لكتابة اسم كل شهرالمثال أدناه وضح كفة استخ مثال آخر

<html>

<head>

<title>Array<title>

</head>

<body>

// Creates array with each month.

// Creates array with the months. Note the

comma before January - because there is no month

with the number 0

$arrMonths =

array(,"January","February","March","April","May","J

une","July","August","September","October","November

","December);

// Call the array with the number of the month

- write to the client

echo $arrMonths[date("m")];

?>

</body>

</html>

شاهد المثال

.إلنشاء مصفوفة explode بدال من وظفة array الحظ أننا استخدمنا وظفة

.تتعلم كف تطور وظائف خاصة بكحسنا، اكتفنا بالمصفوفات، ف الدرس التال س

Page 41: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

41

الدرس التاسع: الوظائف

، ف هذا الدرس سنتعلم إنشاء ()arrayو ()date ف الدروس السابقة تعلمنا أن وظائف مثل function.وظائف بؤنفسنا باستخدام أمر

ما ه الوظفة؟

، مكنها أن تكون مفدة إذا مثال لدك طف واسع من مخرجات وتعطنا مدخالت الوظفة تعالج .ءات جب أن تجرها مرات عددةالبانات الت تحتاج لمعالجة أو لدك حسابات أو إجرا

:الوظفة تكتب بهذا الشكل

Function Name(list of parameters) {

Statement

}

:إلى أي رقم، ستكون بهذا الشكل 1بهذه الطرقة مكننا إنشاء وظفة بسطة تضف القمة

function AddOne($x) {

$x = $x + 1;

echo $x;

}

:34وه تطلب مع رقم وف المثال وضعنا الرقم AddOne الوظفة سمناها

echo AddOne(34);

.35وستعطنا الوظفة القمة

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

: وظفة بمزد من المدخالت1المثال

كما ذكرنا ف السابق مكنك بسهولة إنشاء وظفة تحتاج للعدد من المدخالت، ف المثال التال سننشؤ :مدخالت وه ثالث أرقام وستعطنا قمة جمع األرقام الثالثة 3وظفة تتطلب

Page 42: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

42

<html>

<head>

<title>Functions</title>

</head>

<body>

<?php

function AddAll($number1,$number2,$number3) {

$plus = $number1 + $number2 + $number3;

return $plus;

}

echo "123 + 654 + 9 equals " .

AddAll(123,654,9);

?>

</body>

</html>

شاهد المثال

حسنا، هذا كان بسطا جدا، لكن النقطة هنا ه توضح أن الوظفة مكنها أن تقبل المزد من .المدخالت

: الوقت والتارخ باإلنجلزة2مثال

لنجرب إنشاء وظفة معقدة أكثر، وظفة تتطلب إدخال التارخ فتحوله لنا إلى هذا Wednesday, 15 February, 2012, 10:00:00 AM :الشكل

<html>

<head>

<title>Functions</title>

</head>

<body>

<?php

function EnglishDateTime($date) {

Page 43: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

43

// Array with the English names of the days

of the week

$arrDay =

array("Monday","Tuesday","Wednesday","Thursday","Fri

day","Saturday","Sunday");

// Array with the English names of the

months

$arrMonth =

array("","January","February","March","April","May",

"June","July","August","September","October","Novemb

er","December");

// The date is constructed

$EnglishDateTime =

$arrDay[(date("w",$date))] . ", " . date("d",$date);

$EnglishDateTime = $EnglishDateTime . " " .

$arrMonth[date("m",$date)] . " " . date(Y,$date);

$EnglishDateTime = $EnglishDateTime . ", "

. date("H",$date) . ":" . date("i",$date);

return $EnglishDateTime;

}

// Test function

echo EnglishDateTime(time());

?>

</body>

</html>

شاهد المثال

كتبا على عدة أسطر، فعلنا ذلك لتظهر 'EnglishDateTime$'و 'arrMonth$' الحظ كف أن .بشكل جد لمن ملك شاشة صغرة، طرقة كتابة البرنامج ال تإثر على البرنامج

الوظفة أعاله ستعمل ف كل المزودات بغض النظر عن اللغة، هذا عن أنك تستطع استخدام هذه .فة إن كان موقعك مستضافا ف مزود فرنس لكنك ترد التوارخ باإلنجلزةالوظ

.ف هذه المرحلة لن نتعمق أكثر ف الوظائف، لكنك اآلن تعلمت القلل حول كفة عمل الوظائف

Page 44: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

44

(URL) الدرس العاشر: تمرير المتغيرات من خالل عنوان الموقع

تغرات من صفحة ألخرى، ف هذا الدرس حول تمرر مكنك أن تمرر الم PHP عندما تبرمج بلغة .المتغرات من خالل عنوان الموقع

كف تعمل؟

:لعلك تساءلت لم بعض عناون المواقع تبدو بهذا الشكل

http://html.net/page.php?id=1254

لم هناك عالمة استفهام بعد اسم الصفحة؟

HTTP ، سلسلة استعالمHTTP سلسلة استعالم هاإلجابة ه أن األحرف بعد عالمة االستفهام ."1254وقمته " "id" مكنها أن تحوي متغرات وقم، ف المثال أعاله السلسلة تحوي متغرا اسمه

:هذا مثال آخر

http://html.net/page.php?name=Joe

."Joe" وقمته "name" مرة أخرى، هناك متغر اسم

؟PHP خالل كف تحصل على المتغر من

، اآلن مكنك أن تطلب هذه الصفحة من people.php اسمها PHP لنفترض أن لدك صفحة :خالل العنوان التال

people.php?name=Joe

:بهذا األمر 'name' ، مكنك الحصول على قمة المتغرPHP باستخدام

$_GET["name"]

Page 45: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

45

:لتجد قمة متغر محدد، لنجربه ف مثال GET_$ أنت تستخدم أمر

<html>

<head>

<title>Query string</title>

</head>

<body>

<?php

// The value of the variable name is found

echo "<h1>Hello " . $_GET["name"] . "</h1>";

?>

</body>

</html>

(keep an eye on the URL)شاهد المثال

لصفحة بإسمك ف عنوان الموقع واطلب ا "Joe" عندما تطلع على المثال أعاله جرب أن تغر االسم .مرة أخرى

متغرات عددة ف نفس العنوان

مكن تمرر & مكنك تمرر أكثر من متغر ف عنوان الموقع، بفصل المتغرات باستخدام حرف :متغرات متعددة

people.php?name=Joe&age=24

متهما ، بنفس الطرقة أعاله مكنك الحصول على قageو nameف عناون الموقع هناك متغرن، :بهذا الشكل

$_GET["name"]

$_GET["age"]

Page 46: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

46

:لنضف متغرا آخرا للمثال

<html>

<head>

<title>Query string </title>

</head>

<body>

<?php

// The value of the variable name is found

echo "<h1>Hello " . $_GET["name"] . "</h1>";

// The value of the variable age is found

echo "<h1>You are " . $_GET["age"] . " years

old </h1>";

?>

</body>

</html>

ep an eye on the URL)(keشاهد المثال

اآلن تعلمت طرقة واحدة لتمرر القم بن الصفحات باستخدام عنوان الموقع، ف الدرس التال .سنلق نظرة على طرقة ثانة، النماذج

Page 47: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

47

الدرس الحادي عشر: تغيير المتغيرات من خالل النماذج

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

.ف هذا الدرس سنلق نظرة على كفة إنشاء نموذج ومعالجة مدخالته ف المزود

<form>

.methodو action :عندما تبرمج نموذجا فهناك خاصتان مهمتان

action

ترده PHP تستخدم إلدخال عنوان الصحفة الت ستسقبل مدخالت النموذج، ستكون ملف

.أن تعامل مع المدخالت

method

، وهما طرقتان مختلفتان لتمرر "get" أو "post" مكنها أن تقبل إحدى القمتن إما

البانات ترسل من "get" المدخالت، ف هذه المرحلة لست بحاجة لمعرفة الكثر، باستخدم

ل كتلة بانات من خالل البانات ترسل من خال "post" خالل عنوان الموقع، وباستخدام

، ف بقة الدرس سنلق نظرة على كفة الحصول على البانات من خالل (STDIN) تقنة

، ف هذا الدرس سنلق نظرة على كفة استرجاع GET_$عنوان الموقع باستخدام

."post" بطرقة البانات المرسلة

تحوي نموذجا HTML صفحة

، مكنها أن تكون إن أردت، وال تحتاج PHP الصفحة الت تحوي نموذجا ال تحتاج ألن تكون ملف .حتى ألن تكون ف نفس الموقع الذي حوي ملفا ستلقى البانات

::ف المثال األول سنلق نظرة على نموج بسط حوي حقال نصا واحدا

<html>

<head>

<title>Form</title>

</head>

<body>

<h1>Enter your name</h1>

<form method="post" action="handler.php">

<input type="text" name="username">

<input type="submit">

Page 48: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

48

</form>

</body>

</html>

:النتجة ف المتصفح ستكون

.PHP ء الممتع: تلق البانات ومعالجتها باستخدامهنا ؤت الجز

PHP طلب بانات النموذج باستخدام

فعلك استخدام أمر post عندما تحتاج لطلب بانات أرسلت من خالل نموذج بطرقة:$_POST

$_POST["fieldname"];

.الذي ؤخذ قمة حقل ف النموذج، لنجرب استخدامه ف مثال

وسمها PHP ف البداة اكتب صفحة تحوي النموذج كما ف المثال أعاله، ثم اكتب صفحة"handler.php" الحظ أن هذا هو اسم الصفحة الذي كتبناه ف خاصة action ف النموذج.

:سحوي التال "handler.php" ملف

<html>

Page 49: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

49

<head>

<title>Form</title>

</head>

<body>

<?php

echo "<h1>Hello " . $_POST["username"] .

"</h1>";

?>

</body>

</html>

الشاهد المث

مدخالت المستخدم والشروط

:ف المثال التال سنجرب استخدام مدخالت المستخدم إلنشاء شروط، ف البداة نحن بحاجة لنموذج

<html>

<head>

<title>Form</title>

</head>

<body>

<form method="post" action="handler.php">

<p>What is your name:</p>

<input type="text" name="username"></p>

<p>What is your favorite color:

<input type="radio" name="favoritecolor"

value="r" /> Red

<input type="radio" name="favoritecolor"

value="g" /> Green

<input type="radio" name="favoritecolor"

value="b" /> Blue </p>

<input type="submit" value="Submit" />

Page 50: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

51

</form>

</body>

</html>

:سبدو بهذا الشكل ف المتصفح

اآلن سنستخدم هذه المدخالت إلنشاء صفحة تغر لون خلفتها تلقائا بحسب اختار المستخدم للونه ستخدم البانات الت أدخلها (الدرس السادس المفضل، مكننا فعل ذلك من خالل إنشاء شرط، )اقرأ

.المستخدم ف النموذج

<?php

$strHeading = "<h1>Hello " .

$_POST["username"] . "</h1>";

switch ($_POST["favoritecolor"]) {

case "r":

$strBackgroundColor = "rgb(255,0,0)";

break;

case "g";

$strBackgroundColor = "rgb(0,255,0)";

break;

case "b":

$strBackgroundColor = "rgb(0,0,255)";

break;

default:

Page 51: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

51

$strBackgroundColor = "rgb(255,255,255)";

break;

}

?>

<html>

<head>

<title>Form</title>

</head>

<body style="background: <?php echo

$strBackgroundColor; ?>;">

<? echo $strHeading; ?>

</body>

</html>

لون خلفة الصفحة سكون أبضا إن لم ختر المستخدم لونا مفضال ف النموذج، هذا مكن إنجازه من .لتحدد ما حدث إن لم تتحقق أي من الشروط السابقة default خالل أمر

سنضف شرطا إضافا لتغر ,"Hello" لكن ماذا لو لم دخل المستخدم اسمه؟ البرنامج سقول فقط .هذا

<?php

$strUsername = $_POST["username"];

if ($strUsername != "") {

$strHeading = "<h1>Hello " .

$_POST["username"] . "</h1>";

}

else {

$strHeading = "<h1>Hello stranger!</h1> ";

}

switch ($_POST["favorite color"]) {

case "r":

$strBackgroundColor = "rgb(255,0,0)";

break;

Page 52: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

52

case "g";

$strBackgroundColor = "rgb(0,255,0)";

break;

case "b":

$strBackgroundColor = "rgb(0,0,255)";

break;

default:

$strBackgroundColor = "rgb(255,255,255)";

break;

}

?>

<html>

<head>

<title>Form</title>

</head>

<body style="background: <?php echo

$strBackgroundColor; ?>;">

<? echo $strHeading; ?>

</body>

</html>

.لشاهد المثا

من المعلومات الت أرسلها المستخدم، ف هذه الحالة قد ال للتحقق ف المثال أعاله استخدمنا شرطا كون من المهم أن كتب المستخدم اسمه، لكن عندما تبدأ ف برمجة برامج متقدمة من الضروري أن

.تضع ف الحسبان أن المستخدم قد ال دخل المعلومات كما ترغب

راسلةمثال: نموذج م

والنماذج مكنك إنشاء نموذج مراسلة من خالل استخدام PHP بمعرفتك الجددة حول لغة :، الت تكتب بهذه الطرقة mailالوظفة

mail(to, subject, message);

Page 53: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

53

:أوال نحن بحاجة لنموذج بسط

<html>

<head>

<title>Contact form</title>

</head>

<body>

<h1>Contact form</h1>

<form method="post" action="handler.php">

<p>Subject:<br /><input type="text"

name="subject" /></p>

<p>Message:<br /><textarea

name="message"></textarea></p>

<input type="submit">

</form>

</body>

</html>

:لرسل مدخالت المستخدم PHP ثم نحن بحاجة إلى برنامج

<html>

<head>

<title>Functions</title>

</head>

<body>

<?php

// Recipient (change to your e-mail address)

$strEmail = "[email protected]";

// Get user inputs

$strSubject = $_POST["subject"];

$strMessage = $_POST["message"];

mail($strEmail,$strSubject,$strMessage);

echo "Mail Sent.";

Page 54: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

54

?>

</body>

</html>

الحظ أن المثال سعمل فقط إن كنت تملك حق الوصول إلى مزود برد إلكترون، هذا غر متوفر لك وبعض شركات االستضافة تطلب إضافة ومعظم خدمات االستضافة المجانة، كذ XAMPP ف

:معلومات المرسل والذي مكن إضافته بهذا الشكل

mail("[email protected]", "Test", "This is a

test mail", "From: [email protected]");

Page 55: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

55

(Sessions) الدرس الثاني عشر: الجلسات

ل من صفحة ألخرى وربما تضع معلومات ف عندما تزور موقعا فؤنت تفعل أشاء مختلفة، تنتق .نموذج أو تشتري منتجا

.كمطور مواقع مثل هذه المعلومات لها أهمة كبرة لتوفر حلول ناجحة للوب

افترض مثال أنك تطور موقعا حوي بضع صفحات محمة باسم وكلمة سر، لك تكون الحماة فعالة ر من الوصول إلى معلومات حول إمكانة دخول جب أن تتمكن الصفحات المحمة بكلمة الس

.المستخدم ف وقت سابق، بمعنى آخر جب على الصفحة أن تتذكر ما فعله المستخدم سابقا

لحفظ واسترجاع PHP هذا بالضبط ما دور حوله هذا الدرس، كف مكنك استخدام الجلسات ف .المعلومات أثناء زارة المستخدم لموقعك

الجلسات

سمح لك بإدارة المعلومات حول جلسة المستخدم، مكنك كتابة PHPف session أمر .تطبقات ذكة مكنها معرفة المستخدم وجمع معلومات حوله

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

.دققة هو المعار(، بالطبع مكنك أن تنه الجلسة ف برنامجك

ف نفس الوقت، أفضل وسلة لحفظ -متجر مثال -شخصا تصفحون نفس الموقع 57لنفترض أن ما قد تحوه سلة المشترات لكل واحد منهم ه الجلسات، لك نحدد كل زائر المزود معلومات

، الكوكز هو ملف نص صغر حفظ ف (cookie) ستخدم رقم تعرف محدد حفظ ف كوكز، لذلك الجلسات تتطلب دعم (الدرس الثالث عشر حاسوب المستخدم، )للمزد حول الكوكز اقرأ

.الكوكز ف متصفح الزائر

مثال الستخدام الجلسات

عندما تطلب هذه الصفحة ستحفظ الوقت الحال ف جلسة، فعلت ذلك لك أوضح لك بالمثال كف .تعمل الجلسات

:PHP وحفظته بإضافة هذه األسطر لبرنامج "StartTime" سمت المتغر

<?php

session_start();

$_SESSION["StartTime"] = date("r");

?>

Page 56: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

56

.هكذا بدأنا جلسة، كما هو مذكور أعاله كل جلسة لها رقم تعرف خاص بها ف المزود

4cokl3agv0t18mo5ajf9ebtdk7 :الجلسة الخاصة بك رقم تعرفها

:من الجلسة بكتابة التال "StartTime" مكنن أن أطلبف أي وقت،

<?php

session_start();

echo $_SESSION["StartTime"];

?>

Sun, 13 Dec 2015 07:50:33 والذي سظهر لنا أن هذه الصفحة طلبت ف هذا الوقت .(بحسب ساعة المزود) 0100+

جلسة حتى لو تركت الصفحة، المعلومة ستالحقك حتى لكن ما هو مثر أن المعلومة ستبقى ف ال .تنته الجلسة

تلقائا الجلسة تدوم حتى غلق الزائر المتصفح وهكذا تنته الجلسة تلقائا، لكن إن أردت أن تنه :الجلسة مكنك أن تفعل ذلك بهذه الطرقة

<?php

session_destroy();

?>

.لسات تستخدم: كلمات السرلننظر ف مثال آخر حث الج

نظام دخول مع الجلسات

.ف المثال التال سنطور مثاال بسطا لنظام دخول، سنستخدم كثرا مما تعلمناه ف الدروس السابقة

:أول ما نحتاجه هو نموذج دخل فه الناس االسم وكلمة السر، سكون بهذا الشكل

Page 57: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

57

<html>

<head>

<title>Login</title>

</head>

<body>

<form method="post" action="login.php">

<p>Username: <input type="text"

name="username" /></p>

<p>Password: <input type="text"

name="password" /></p>

<p><input type="submit" value="Let me in"

/></p>

</form>

</body>

</html>

.login.php د ذلك ننشؤ ملفبع

ف هذا الملف سنتؤكد ما إذا أدخل المستخدم اسما وكلمة سر صححن، ف هذه الحالة نبدأ جلسة تقول .بؤن المستخدم سجل دخوله باسم وكلمة سر صححن

<html>

<head>

<title>Login</title>

</head>

<body>

<?php

// Check if username and password are correct

if ($_POST["username"] == "php" &&

$_POST["password"] == "php") {

// If correct, we set the session to YES

session_start();

Page 58: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

58

$_SESSION["Login"] = "YES";

echo "<h1>You are now logged correctly

in</h1>";

echo "<p><a href='document.php'>Link to

protected file</a><p/>";

}

else {

// If not correct, we set the session to NO

session_start();

$_SESSION["Login"] = "NO";

echo "<h1>You are NOT logged correctly in

</h1>";

echo "<p><a href='document.php'>Link to

protected file</a></p>";

}

?>

</body>

</html>

ف الملفات المحمة نرد أن نتؤكد أن المستخدم سجل دخوله بشكل صحح، ف حال لم نجز ذلك :المستخدم سعود إلى نموذج الدخول، هكذا تحم الصفحات

<?php

// Start up your PHP Session

session_start();

// If the user is not logged in send him/her

to the login form

if ($_SESSION["Login"] != "YES") {

header("Location: form.php");

}

?>

Page 59: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

59

<html>

<head>

<title>Login</title>

</head>

<body>

<h1>This document is protected</h1>

<p>You can only see it if you are logged

in.</p>

</body>

</html>

اختبر نظام الدخول

اآلن نحن نعرف أمر الجلسات، ف الدرس التال سنعمل ف نفس المساحة لكن سنلق نظرة مقربة .الكوكزأكثر على

Page 60: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

61

(Cookies) الدرس الثالث عشر: الكوكيز

كف وما ه المعلومات الت تجمعها المواقع من مستخدمها وكف تستخدم هذه المعلومات هو موضوع ساخن، الكوكز تذكر كمثال لكفة جمع المعلومات وكف تشكل تهددا لخصوصاتك، لكن

.ننته من هذا الدرس سترى ماذا مكن فعله بالكوكزهل علك فعال أن تقلق؟ احكم بنفسك، عندما

ما ه الكوكز؟

الكوكز هو ملف نص صغر تستخدمه المواقع لحفظ معلومات مختلفة، الكوكز تحفظ ف حاسوب .المستخدم ولس ف المزود

وحتى معظم الكوكز تنته صالحتها )تحذف نفسها( بعد مدة محددة من الزمن تتراوح ما بن دققة .سنوات، لكن المستخدم مكنه تحدد وحذف الكوكز من حاسوبه

معظم المتصفحات مثل ماكروسوفت إنترنت إكسبلورر وموزال فارفوكس وغوغل كروم مكنها أن تعدل إعداداتها لتترك الخار للمستخدم الختار ما إذا كان رد أو ال رد قبول الكوكز، لكن لم ال

لكوكز؟، مكن فعل هذا، لكن كثر من المواقع لن تعمل كما جب بدون الكوكز ألن نقول "ال" لكل ا .الكوكز تستخدم لتحسن قابلة االستخدام ولوظائف مختلفة ف الموقع

كف تحفظ المعلومات ف الكوكز؟

، ف المثال األول سنقوم setcookie باستخدام PHPمن السهل إنشاء وتعدل الكوكز ف .بإنشاء كوكز وسنضع فه قمة

، ثم سنضع فه قمة كما ف "HTMLTest" أوال أنت بحاجة لتسمة الكوكز، ف المثال سمناه :المثال التال

<?php

// Setting the cookie

setcookie("HTMLTest", "This is a test

cookie");

?>

تلقائا الكوكز تبقى حتى غلق المستخدم المتصفح، لكن بإمكانك وبسهولة تعدلها بإضافة معار آخر :لتحدد تارخ االنتهاء

Page 61: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

61

<?php

// Setting the cookie

setcookie("Name", "C. Wing, time()+3600);

setcookie("Interests", "plane spotting",

time()+3600);

?>

"Time()+3600" من اآلن -دققة 67أي -ثانة 3677تحدد أن الكوكز سنته بعد.

ف المثال أعاله حفظنا معلومة حول اسم المستخدم واهتماماته هذه المعلومات مكنها مثال أن تكون .مفدة لتوجه الموقع لكون مخصصا لهذا الزائر

رجع المعلومات من الكوكز؟كف تست

، مثال إذا أردنا المعلومات ف المثال COOKIE_$للحصول على القم ف الكوكز استخدام أمر :أعاله سنحتاج لفعل التال

<?php

// Retrieve values from the cookie

$strName = $_COOKIE["Name"];

$strInterest = $_COOKIE["Interest"];

// Write to the client

echo "<p>" . strName . "</p>"

echo "<p>Your interest is . " strInterest .

"</p>"

?>

من مكنه قراءة الكوكز؟

الذي أنشؤ -أي ف نفس الموقع -العنوان من المستوى الثان تلقائا الكوكز مكن أن تقرأ ف نفس ، بإمكانك أن تضع مزدا من القود على pathو domain الكوكز، لكن باستخدام عوامل مثل

:الكوكز كما ف المثال التال

Page 62: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

62

setcookie(name, value, expiration time, path,

domain);

:لنلق نظرة على مثال

<?php

// Setting the cookie: name, value, expiration

time, path, domain

setcookie("Name", "C. Wing",

time()+60*60*24*365, "/tutorials/php/",

"www.html.net");

?>

وهذه الكوكز ستنته ".C. Wing" وتحوي قمة "Name" ف المثال أعاله أنشؤنا كوكز اسمهاوم، ومكن أن تقرأ فقط ف المواقع الموجودة 356× ساعة 24× دققة 67× ثانة 67عد عام، ب

."www.html.net" ف العنوان "/tutorials/php/" ف مجلد

مثال لكوكز

.مكننا أن نجرب حفظ مثال لكوكز ف حاسوبك وننظر كف ستبدو

:المثال التال نشؤ وعد الكوكز

<?php

// Setting the cookie

setcookie("HTMLTest", "This text is in a

cookie!", time()+60*60*24, "/tutorials/php/",

"www.html.net");

// Write the information to the client

echo $_COOKIE ["HTMLTest"];

?>

شاهد المثال

Page 63: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

63

الكوكز وضعت ف القرص الصلب ف حاسوبك، بحسب نظام التشغل الذي تستخدمه ستحفظ :الكوكز ف مكان مختلف، عندما تجدها ستكون بهذا الشكل

ا ف محرر نص مثل المفكرةكما ترى الكوكز ه ملفات نصة عادة مكن استعراضه(Notepad) مثال، محتوات الكوكز الت قمنا بإنشائها ستكون ف الغالب بهذا الشكل:

HTMLTest TEXT=This+text+is+in+a+cookie% 21

www.html.net/tutorials/php 0 80973619229399148

4216577264 29399141 *

رموز المختلفة، ببساطة الحظ أن المستخدم تحكم بشكل كامل لن ندخل ف تفاصل مختلفة حول ال .بالكوكز ف حاسوبه

ف هذا الدرس ألقنا نظرة على الكوكز وما مكنه فعله لكن لس على كفة استخدامها، هناك هم مشترك بن الناس حول الكوكز وكف أن بعض المواقع تستخدمها ف أمور غر الئقة، لكن ف

.الت الكوكز تستخدم لتكون المواقع سهلة أكثر أو متعلقة بكل مستخدممعظم الحا

إن اخترت أن تستخدم الكوكز ف موقعك فقد تكون فكرة جدة أن تخبر زواره أنك تستخدمها، هذا .مكن مثال أن تذكره ف صفحة ساسة االستخدام أو ف نموذج اإللتحاق بالموقع

Page 64: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

64

اتالدرس الرابع عشر: نظام الملف

مكنك أن تصل إلى نظام الملفات ف المزود، هذا سمح لك بتعدل المجلدات والملفات PHP مع .PHP النصة ف برامج

لقراءة أو كتابة ملف نص، أو مكنك عرض قائمة الملفات ف مجلد PHP فمثال مكنك استخدام .لجهدمكنها أن توفر علك الكثر من ا PHPمحدد، هناك إمكانات كثرة و

للعمل مع المجلدات والملفات، الهدف هو أن نعطك PHP هنا سنلق نظرة على كف مكن استخدامنظرة سرعة، ف الدرس التال سنلق نظرة مقربة على إمكانات مختلفة، لن نخوض ف كل

فات لترى كامل قائمة ما مكن فعله بالمل PHP اإلمكانات المتوفرة، مرة أخرى، راجع وثائق لغة .والمجلدات

filemtime

اقرأ الدرس -تعطنا الوقت الذي حررت فه محتوات الملف آخر مرة، )كطابع زمن

.(الرابع

fileatime

.(اقرأ الدرس الرابع -تعطنا الوقت الذي فتح الملف فه آخر مرة )كطابع زمن

filesize

.تعطنا حجم الملف بالبات

"tutorials/php/lesson14.php/" :لنجرب إجاد هذه الخصائص للملف الذي تنظر له

<html>

<head>

<title>Filesystem</title>

</head>

<body>

<?php

// Find and write properties

echo "<h1>file: lesson14.php</h1>";

echo "<p>Was last edited: " . date("r",

filemtime("lesson14.php"));

echo "<p>Was last opened: " . date("r",

fileatime("lesson14.php"));

Page 65: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

65

echo "<p>Size: " . filesize("lesson14.php") .

" bytes";

?>

</body>

</html>

شاهد المثال

المجلدات

PHP تسمح لك بالتعامل مع المجلدات ف المزود، لن نخوض ف كل اإلمكانات مكنها أضا أن .المتوفرة ف هذا المجال، فقط سنعرض مثاال، مرة أخرى، راجع التوثق للمزد من المعلومات

opendir

.فتح مجلدا محددا

readdir

.opendir (cf(عطنا اسم الملف التال ف مجلد مفتوح

closedir

.محددا غلق مجلدا

."/tutorials/php" المثال أدناه كتب قائمة بمحتوات مجلد

<html>

<head>

<title>FileSystemObject</title>

</head>

<body>

<?php

// Opens the folder

$folder = opendir("../../tutorials/php/");

// Loop trough all files in the folder

while (($entry = readdir($folder)) != "") {

echo $entry . "<br />";

Page 66: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

66

}

// Close folder

$folder = closedir($folder);

?>

</body>

</html>

هد المثالشا

فتح أوال، ثم استخدمت حلقة لكتابة اسم الملف التال ف "/tutorials/php/../.." ف المثال مجلد .المجلد ما دام أن هناك مزد من الملفات وف النهاة أغلق المجلد

.ف الدروس التالة سنلق نظرة على كفة القراة والكتابة ف ملف نص

Page 67: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

67

ملف نصي: القراءة من 51الدرس

للوصول إلى نظام الملفات ف المزود، ف هذا الدرس PHP ف الدرس السابق تعلمنا كف نستخدم .سنستخدم ما تعلمناه لقراءة ملف نص عادي

الملفات النصة مكنها أن تكون مفدة جدا لحفظ أنواع مختلفة من البانات، وه لست بمرونة قواعد .ة كبرة، فوق ذلك الملفات النصة بسطة وتعمل ف معظم األنظمةالبانات لكنها ال تتطلب ذاكر

فتح ملف نص

:لفتح ملف نص وكتب األمر بهذا الشكل fopen مكننا استخدام أمر

fopen(filename, mode)

filename

.هاسم الملف الذي ترد فتح

mode

"a" أو (writing) للكتابة "w" أو (reading) للقراءة "r" الطرقة مكن أن تحدد بحرف

، "r" ، ف هذا الدرس سنشرح فقط كف تقرأ الملف لذلك سنستخدم(appending) لإللحاق

.ف الدرس التال سنتعلم الكتابة واإللحاق ف الملف النص

، الملف حوي قائمة بسط unitednations.txtصا هواألمثلة ف هذا الدرس تستخدم ملفا نلبرامج ومعونات األمم المتحدة وعناون مواقع هذه البرامج، بإمكانك تنزل الملف أو إنشاء ملف

.خاص بك لتختبره

:unitednations.txt أوال لنجرب فتح ملف

<?php

// Open the text file

$f = fopen("unitednations.txt", "r");

// Close the text file

fclose($f);

?>

Page 68: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

68

: قارئة سطر من ملف نص1مثال

ذه الطرقة تقرأ السطر حتى تصل إلى مكن قراءة سطر من ملف نص، ه fgets مع وظفة .نهاته

<html>

<head>

<title>Reading from text files</title>

</head>

<body>

<?php

$f = fopen("unitednations.txt", "r");

// Read line from the text file and write the

contents to the client

echo fgets($f);

fclose($f);

?>

</body>

</html>

شاهد المثال

: قراءة كل األسطر ف ملف نص2مثال

<html>

<head>

<title>Reading from text files</title>

</head>

<body>

<?php

Page 69: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

69

$f = fopen("unitednations.txt", "r");

// Read line by line until end of file

while(!feof($f)) {

echo fgets($f) . "<br />";

}

fclose($f);

?>

</body>

</html>

شاهد المثال

لتتؤكد إن وصلت file)-of-(for end feof ف المثال الحلقة تقرأ كل سطر وتستخدم الوظفة .لنهاة الملف أم ال، فإن لم تصل سكتب السطر

، إن freadمن استخدام حلقة لكل السطور مكن تحقق نفس النتجة من خالل الوظفةبدال

دم المزد من الموارد تستخ fread كنت تعمل على ملف نص كبر بآالف األسطر فاعلم أن .، للملفات الصغرة لن شكل هذا فرقا كبرا fgetsأكثر من

: دلل روابط بسط3المثال

كما ذكر ف بداة هذا الدرس، الملف النص هو وسلة رائعة لحفظ البانات، وتضح هذا ف المثال unitednations.txt.لتال حث سننشؤ دلل روابط بسط من محتوات الملف النصا

الملف كتب بطرقة نظامة حث اسم البرنامج متبوعا بفاصلة ثم موقع البرنامج، كما تتخل مكن .بسهولة ف هذا الملف الذي حوي بانات مفصولة بفاصلةإضافة المزد من المعلومات

للمزد من الدرس الثامن للحصول على المعلومات من كل سطر علنا استخدام المصفوفة، اقرأ .المعلومات حول المصفوفات

<html>

<head>

<title>Reading from text files</title>

</head>

<body>

Page 70: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

71

<?php

$f = fopen("unitednations.txt", "r");

// Read line by line until end of file

while (!feof($f)) {

// Make an array using comma as delimiter

$arrM = explode(",",fgets($f));

// Write links (get the data in the array)

echo "<li><a href='http://' . $arrM[1] .

"'>" . $arrM[0]. "</a></li>";

}

fclose($f);

?>

</body>

</html>

شاهد المثال

مفد جدا، ألس كذلك؟ مبدئا مكنك اآلن إضافة المئات من الروابط إلى الملف النص أو بإمكانك .إضافة مزد من المعلومات

.ف الدرس التال سنلق نظرة على كفة الكتابة ف ملف نص

Page 71: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

71

الدرس السادس عشر: الكتابة في ملف نصي

.لمنا القراءة من ملف نص، ف هذا الدرس سنتعلم كف نكتب ف ملف نصف الدرس الماض تع

هناك طرقتان متشابهتان لكن بفرق واحد: جب أن كون لدك صالحة الكتابة ف ملف، هذا عن .أن الملف جب أن وضع ف مجلد حث تملك الصالحة الت تخول لك فعل ذلك

د هذه الصالحة بنفسك: اضغط بالزر األمن على مجلد ثم إن كنت تعمل ف حاسوبك مكنك أن تحد، ف شركات استضافة المواقع سكون هناك ف الغالب مجلد واحد سمح لك "Properties" اختر

أو شء مماثل، وإذا "databases" أو "log" أو "cgi-bin" بكالكتابة فه، المجلد سمى غالبا الصالحات بنفسك، غالبا من خالل الضغط بالزر األمن سمح لك مستضف موقعك مكنك أن تغر

أو "permissions" أو "properties" لنقل الملفات، اختر FTP على المجلد من خالل برنامج .FileZilla شء مماثل، صورة الشاشة أدناه تعرض كف نجز ذلك من خالل برنامج

.ضف موقعكاقرأ المزد حول الموضوع من خالل صفحات الدعم لمست

.حتاج إلى أن كون ف مجلد له صالحة الكتابة - PHP ولس ملف -الحظ أن الملف النص

فتح الملف النص للكتابة فه

كن هذه المرة أضا للكتابة، ل fopen بنفس الطرقة عندما عند قراءة ملف نص نستخدم الوظفة .(appending) لإللحاق "a" أو (writing) للكتابة "w" نغر الطرقة إلى

هو ف مكان مإشر الكتابة، إما أن كون ف بداة أو نهاة الملف اإللحاقو الكتابة االختالف بن .النص

ء ملفك النص ، لكن مكنك إنشاtextfile.txt ف أمثلة هذا الدرس تستخدم ملفا نصا فارغا باسم .الخاص إذا أردت

:أوال لنجرب فتح الملف النص للكتابة

Page 72: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

72

<?php

// Open the text file

$f = fopen("textfile.txt", "w");

// Close the text file

fclose($f);

?>

: كتابة سطر ف الملف النص1مثال

:لفعل هذا، بهذا الشكل fwrite لكتابة سطر جب أن تستخدم الوظفة

<html>

<head>

<title>Writing to a text file</title>

</head>

<body>

<?php

// Open the text file

$f = fopen("textfile.txt", "w");

// Write text line

fwrite($f, "PHP is fun!");

// Close the text file

fclose($f);

// Open file for reading, and read the line

$f = fopen("textfile.txt", "r");

echo fgets($f);

fclose($f);

?>

Page 73: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

73

</body>

</html>

شاهد المثال

، السطر سضاف ف أعلى الملف النص وهذا عن أنه سكتب فوق أي للكتابة بما أننا فتحنا الملفسضاف السطر ف آخر الملف وهذا عن زادة لإللحاق سطر آخر موجود، أما إن فتحنا الملف

.نكتب ف الملف سطر واحد للملف ف كل مرة

: إضافة كتلة من النص إلى الملف2مثال

:بالطبع مكنك أن تضف كتلة من النص بدال من سطر واحد، بهذا الشكل

<html>

<head>

<title>Write to a text file</title>

</head>

<body>

<?php

// Open the text file

$f = fopen("textfile.txt", "w");

// Write text

fwrite($f, $_POST["textblock"]);

// Close the text file

fclose($f);

// Open file for reading, and read the line

$f = fopen("textfile.txt", "r");

// Read text

echo fgets($f);

fclose($f);

?>

</body>

</html>

Page 74: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

74

شاهد المثال

.ف الدرس التال سنلق نظرة على وسلة أخرى لحفظ البانات: قواعد البانات

Page 75: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

75

الدرس السابع عشر: قواعد البيانات

البانات منظمة لسهل استرجاعها وإدارتها وتحدثها، قاعدة البانات ه مجموعة من المعلومات أو لذلك قواعد البانات تتح لنا إنشاء مواقع تفاعلة تحوي الكثر من المعلومات، مثال كل بانات أعضاء

.هذا الموقع ومواضعهم ف المنتدات مخزنة ف قاعدة بانات

على العمل ف الجداول الممتدة أو استخدمت قاعدة البانات تتكون من جدول أو أكثر، إذا كنت معتادا :قواعد البانات من قبل ستكون الجداول مؤلوفة لك

MS SQL Serverو MS Accessو MySQLهناك أنواع مختلفة من قواعد البانات، ، قاعدة باناتMySQL وغرها الكثر، ف هذا الدرس سنستخدم Oracle SQL Serverو

MySQL ع لتبدأ عندما ترد استخدام قواعد البانات فه المكان الطب PHP.

:لتستطع إنجاز هذا الدرس والدروس التالة MySQL أنت بحاجة للوصول إلى

أن كنت تملك موقعا مستضافا ودعم فلغة PHP وقاعدة بانات MySQL سكونان ف ..عكالغالب مدعومان على المزود، اقرأ صفحات الدعم الخاصة باستضافة موق

إذا ثبت PHP ف حاسوبك بنفسك ولدك الشجاعة لتثبت MySQL كذلك فمكنك تنزل . MySQLموقع نسخة مجانة ف

إن كنت تستخدم XAMPP (الدرس الثان أقرأ) فقاعدة MySQL مثبتة لدك وجهاز :تعمل من خالل لوحة التحكم MySQL لالستخدام، فقط تؤكد أن

Page 76: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

76

ف بقة الدرس سنلق نظرة مقربة على كفة ربط مزود قاعدة البانات، قبل أن نتعلم كفة إنشاء .قاعدة بانات واسترجاع وتحدث البانات

الربط بمزود قاعدة البانات

اة جب أن تكون لدك إمكانة الوصول لمزود قاعدة البانات، هذا نجز من خالل وظفةف البد mysql_connectومكن كتابتها بهذه الطرقة:

mysql_connect(server, username, password)

، ثم اسم (server) ، أوال علك كتابة موقع قاعدة الباناتتبدو الوظفة واضحة .password وكلمة السر username المستخدم

إن كنت تملك موقعك الخاص علك أن تقرأ عن موقع مزود قاعدة البانات ف صفحات الدعم لمستضف موقعك، االسم وكلمة السر ستكونان ف الغالب متطابقتان لالسم وكلمة السر الذي

.، إن لم كن األمر كذلك فتواصل مع مستضف موقعكFTP تستخدمهما لخدمة نقل الملفات

:مثال لالتصال بمزود قاعدة البانات ف موقع مستضاف

mysql_connect("mysql.myhost.com", "user001",

"sesame") or die(mysql_error());

Page 77: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

77

:مثال لالتصال بقاعدة البانات ف مزود

mysql_connect("localhost", "root", "") or die

(mysql_error());

والت باختصار تقاطع البرنامج or die(mysql_error()) ف األمثلة أعاله أضفنا

.لتكتب رسالة خطؤ ف حال لم نجح االتصال بقاعدة البانات

نا إدخال واسترجاع المعلومات اآلن اتصلنا بمزود قاعدة البانات، مكننا إنشاء قواعد البانات ومكن .منها، هذا ما سنتحدث عنه ف الدروس التالة

بالمناسبة، تذكر أنه من األفضل إغالق االتصال بقاعدة البانات عندما تنته من طلب المعلومات أو mysql_close.تحدثها، هذا نجز من خالل وظفة

Page 78: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

78

: إنشاء قاعدة البيانات والجداول51الدرس

ف الدرس السابقة ألقنا نظرة على كفة إنشاء اتصال بمزود قاعدة البانات، الخطوة التالة ستكون .إنشاء قواعد البانات والجداول

والثانة من PHP ولى من خاللسنلق نظرة على طرقتن إلنشاء قاعدة البانات والجداول، األوه أداة متوفرة ف معظم خدمات االستضافة PhpMyAdmin خالل أداة سهلة االستخدام وه

.XAMPP وف

فف الغالب هناك قاعدة بانات جاهزة لك MySQLو PHP إن كنت تملك موقعا مستضافا ستخدمء الجداول، مرة أخرى، اسؤل مستضف ومكنك تجاوز هذا القسم من الدرس لتبدأ مباشرة ف إنشا

.موقعك لمزد من المعلومات

PHP إنشاء قواعد البانات والجداول باستخدام

، MySQLتستخدم إلرسال استعالم لمزود قواعد البانات mysql_query وظفة، هذه اللغة ه SQL أو Structured Query Language االستعالمات تكتب بلغة تسمى

MySQL األكثر استخداما ف استعالمات قواعد البانات على اختالفها ولس فقط لقواعد بانات .SQL وه لغة منطقة وسهلة، ف هذا الدرس وف الدرس التال ستتعلم أهم استعالمات

:بهذا الشكل CREATE DATABASE انات ستخدام استعالمعند إنشاء قاعدة ب

CREATE DATABASE database name

:PHP منطق وسهل، ألس كذلك؟ لنجرب وضع االستعالم ف برنامج

mysql_connect("mysql.myhost.com", "user",

"sesame") or die(mysql_error());

mysql_query("CREATE DATABASE mydatabase") or

die(mysql_error());

mysql_close();

وأخرا أغلقنا "mydatabase" ثم أنشؤنا قاعدة بانات باسم MySQL ف البداة اتصلنا بمزود .connection to the MySQL server again .ناتاالتصال بمزود قاعدة البا

Page 79: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

79

كل هذا سهل حتى اآلن، لكن األمور تصبح معقدة بعض الشء عندما نرغب ف إنشاء جداول

:بهذا الشكل CREATE TABLE ، عند إنشاء جداول نستخدم االستعالم PHPباستخدام لغة

CREATE TABLE table name

(

column1_name DATA_TYPE,

column2_name DATA_TYPE,

column3_name DATA_TYPE,

...

)

table_name وcolumn_name ،هما بالطبع اسم الجدول وأعمدته DATA_TYPE تستخدم :كل عمود من الجدول، األنواع األكثر استخداما للبانات ه لتحدد نوع البانات الت ستوضع ف

INT

لألرقام بدون كسور عشرة

DECIMAL

ر عشرةلألرقام بكسو

CHAR

حرفا 255لنص قصر بعدد حروف ال زد عن

TEXT

حرفا 65535للنص بعدد حروف صل إلى

LONGTEXT

حرفا 4924494649245للنصوص الطولة بعدد حروف صل إلى

Date

YYYY-MM-DD للتوارخ بتنسق

Time

HH:MM:SS للوقت بتنسق

DATETIME

Page 80: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

81

YYYY-MM-DD HH:MM:SS للوقت والتارخ بتنسق

:بشكل عام تبدو أنواع البانات منطقة وسهلة، لنجربها ف مثال

mysql_connect("mysql.myhost.com", "user",

"sesame") or die(mysql_error());

mysql_select_db("people") or

die(mysql_error());

mysql_query("CREATE TABLE MyTable (

id INT AUTO_INCREMENT,

FirstName CHAR,

LastName CHAR,

Phone INT,

BirthDate DATE

PRIMARY KEY(id)

)") Or die(mysql_error());

mysql_close ();

ف المثال بدأنا باالتصال بمزود قاعدة البانات، ثم استخدمنا وظفة mysql_select_dbلنختار قاعدة البانات"people" ثم أنشؤنا جدوال سمناه"persons"

.مس أعمدةحوي خ

لنحدد أن هذا العمود سحوي أرقاما ثم أضفنا INT استخدمنا "id"الحظ ف عمود AUTO_INCREMENT لنزد األرقام بشكل تلقائ لنتؤكد من أن كل سطر ف الجدول حوي

.رقم تعرف ممز

لكون المفتاح األساس، "id"لتحدد عمود PRIMARY KEY ف نهاة االستعالم استخدمناس حدد كل سجل أو سطر ف الجدول برقم خاص وهذا سكون مفدا الحقا عند تحدث المفتاح األسا

.قاعدة البانات

phpMyAdmin إنشاء قاعدة البانات والجداول ف

، لكن غالبا من األسهل PHP من المفد أن تتمكن من إنشاء قواعد البانات والجداول مباشرة فوه األداة المتوفرة ف معظم خدمات االتضافة -مماثلة أو أي أداة - phpMyAdmin استخدام

، لقطات الشاشة أدناه توضح كفة إنشاء قواعد البانات والجداول فXAMPP وفphpMyAdmin.

، ف الغالب العنوان سكون نفس عنوان مزود قواعد phpMyAdmin ابدأ بتسجل دخولك إلى وبنفس االسم وكلمة السر، ف ("http://mysql.myhost.com" مثال) MySQL البانات

XAMPP العنوان هو http://localhost/phpmyadmin/.

Page 81: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

81

:"Create" بعد تسجل دخولك اكتب اسما لقاعدة البانات ثم اضغط على الزر

ف بعض شركات االستضافة قد تجد قاعدة بانات جاهزة وال تستطع أن تنشؤ واحدة بنفسك، ف هذه .م قاعدة البانات المتوفرةالحالة استخد

:واختر قاعدة البانات "Databases" إلنشاء جداول اضغط على

مكنك أن تكتب فه اسم "Create new table in database" سكون هناك صندوق بعنوان :"Go" الجدول وعدد األعمدة الت سحوها ثم اضغط على زر

Page 83: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

83

: إدخال البيانات في قاعدة البيانات51الدرس

.PHP نات مباشرة من خاللف هذا الدرس سنلق نظرة على إدخال البانات ف قاعدة البا

SQL إدخال البانات من خالل

إلنشاء قاعدة SQL إلدخال البانات ف قاعدة البانات بنفس الطرقة الت تستخدم SQL تستخدم :كتب بهذا الشكل SQL البانات والجداول، استعالم

INSERT INTO TableName(column1, column2, ...)

VALUES(value1, value2, ...)

بتحددها ف قائمة تفصل بن كلماتها بفاصلة، SQL كما ترى مكنك تحدث عدة أعمدة ف استعالملكن بالطبع مكنك تحدد عمود واحد وقمة واحدة، األعمدة غر المذكورة ف االستعالم ستبقى

.فارغة

مثال: إدخال بانات شخص ف الجدول

، لنقل أننا نرغب ف إدخال بانات شخص ف 19الدرس انات منف هذا المثال سنستخدم قاعدة البوتارخ مالده 99887766 ورقم هاتفه Gus Goose قاعدة البانات، مكن أن كون اسمه

.20-04-1964 هو

هذا الشكلسكون ب SQL استعالم :

$strSQL = "INSERT INTO

people(FirstName,LastName,Phone,BirthDate)

VALUES('Gus','Goose','99887766 ','1964-04-20')";

mysql_query($strSQL) or die(mysql_error());

اإلجاب أن مكن أن كون طوال، ومكن أن تشعر بؤن هذا معقد، لذلك من SQL كما ترى استعالم :بطرقة مختلفة SQL تكتب استعالم

strSQL = "INSERT INTO people(";

strSQL = strSQL . "FirstName, ";

strSQL = strSQL . "LastName, "

Page 84: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

84

strSQL = strSQL . "Phone, ";

strSQL = strSQL . "birth) ";

strSQL = strSQL . "VALUES (";

strSQL = strSQL . "'Gus', ";

strSQL = strSQL . "'Goose', ";

strSQL = strSQL . "'99887766', ";

strSQL = strSQL . "'1964-04-20')";

mysql_query($strSQL) or die(mysql_error());

كتب بتقسم جمله إلى أقسام صغرة ثم وضع ف متغر SQL بهذه الطرقة استعالم .strSQL$ اسمه

عملا اختار أي طرقة منهما ال شكل فرقا، لكن ما إن تعمل على جداول كبرة من الضروري أن .تعرف ما الذي تفعله لذلك اختر الطرقة األنسب لك

:ف قاعدة البانات Gus Goose شغل البرنامج التال إلدخال

<html>

<head>

<title>Insert data into database</title>

</head>

<body>

<?php

// Connect to database server

mysql_connect("mysql.myhost.com", "user",

"sesame") or die (mysql_error ());

// Select database

mysql_select_db("mydatabase") or

die(mysql_error());

// The SQL statement is built

$strSQL = "INSERT INTO people(";

$strSQL = $strSQL . "FirstName, ";

Page 85: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

85

$strSQL = $strSQL . "LastName, ";

$strSQL = $strSQL . "Phone, ";

$strSQL = $strSQL . "BirthDate) ";

$strSQL = $strSQL . "VALUES(";

$strSQL = $strSQL . "'Gus', ";

$strSQL = $strSQL . "'Goose', ";

$strSQL = $strSQL . "'99887766', ";

$strSQL = $strSQL . "'1964-04-20')";

// The SQL statement is executed

mysql_query($strSQL) or die (mysql_error());

// Close the database connection

mysql_close();

?>

<h1>The database is updated!</h1>

</body>

</html>

حفظ مدخالت المستخدم ف قاعدة بانات

.غالبا سترغب ف أن تحفظ مدخالت المستخدم ف قاعدة البانات

، حث القم من النموذج مكن إدخالها 11الدرس مكن إنجاز ذلك من خالل نموذج كما شرحنا ف :، افترض أن لدك نموذجا بسطا بهذا الشكلSQL ف استعالم

<form action="insert.php" method="post">

<input type="text" name="FirstName" />

<input type="submit" value="Save" />

</form>

Page 86: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

86

الذي تلقى بانات المستخدم بطلبها من محتوات insert.php اناته إلى ملفالنموذج رسل ب :سكون بهذا الشكل SQL النموذج، ف هذا المثال استعالم

strSQL = "INSERT INTO people(FirstName)

values('" . $_POST["FirstName"] . "')"

.الجلسات، وغرهابنفس الطرقة من الممكن طلب البانات من الكوكز،

األخطاء الشائعة عند المبتدئن

ف البداة قد تواجه كثرا من رسائل األخطاء عندما تحاول تحدث قاعدة البانات، ال وجد مساحة ألي خطؤ أو عدم دقة عندما تعمل مع قواعد البانات، وجود فاصلة ف المكان الخطؤ قد عن عدم

.رسالة خطؤ، أدناه نشرح األخطاء الشائعة عند المبتدئنتحدث قاعدة البانات وستتلقى

أنواع بانات غر صححة

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

ص أو رقم ف حقل التارخ لذلك حاول أن تحدد بدقة نوع حدث الخطؤ عندما مثال تحاول إدخال ن .البانات

:أدناه قائمة بؤنواع البانات األكثر شوعا

الحجم نوع البيانات اإلعداد

CHAR نص أو خلط من النصوص واألرقام، مكن استخدامه

لألرقام الت ال تستعمل ف العملات الحسابة مثل أرقام

مكن حرفا أو 255

تحدد عدد الحروف

األقصى من خالل

Page 87: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

87

"Length" الهواتف

TEXT نصوص طولة أو خلط من النصوص واألرقام. 65535صل الى

.حرفا

INT بات 4 .أرقام تستخدم ف العملات الحسابة

DATE توارخ بتنسق YYYY-MM-DD 3 بات.

TIME الوقت بتنسق hh:mm:ss 3 بات.

DATETIME خ بتنسقالوقت والتار YYYY-MM-DD hh:mm:ss 8 بات.

(backslash) بعالمة االقتباس أو الشرطة المائلة للخلف SQL استعالم

( قد ال \إذا جربت إدخال نص حوي عالمة اقتباس أحادة )'( أو ثنائة )"( أو شرطة مائلة للخلف ) .ئلة قبل هذه العالماتتستطع إدخال البانات ف قاعدة البانات، الحل هو إضافة شرطة ما

:بهذه الطرقة addslashes هذا مكن أن نجز من خالل وظفة

<?php

$strText = "Is your name O'Reilly?";

$strText = addslashes($strText);

?>

( ستحصل على شرطة مائلة قبلها، \عالمات االقتباس األحادة )'( والثنائة )"( والشرطة المائلة )كل هذا سكون فقط إلضافة البانات إلى قاعدة البانات، الشرطة المائلة لن تضاف ف قاعدة البانات،

COOKIE_$و POST_$و GET_$ف كل بانات addslashesتشغل PHPالحظ أن .ف التعامل مع هذه البانات addslashes تلقائا، لذلك ال تستخدم

رج المعلومات من قاعدة البانات، لكن أوال حاول إدخال مزد من ف الدرس التال ستتعلم كف تستخ .المعلومات ف قاعدة البانات

Page 88: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

88

: استرجاع البيانات من قاعدة البيانات02الدرس

.PHP اآلن علنا استرجاع البانات من قاعدة البانات لنضعها ف صفحات

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

SQL استعالمات

السترجاع البانات من قاعدة البانات سنستخدم االستعالمات، مثال االستعالم قد كون بهذا الشكل: سترجع كل األسماء من جدولمرتبة أبجدا" أو "ا 'people' "استرجع كل البنات من جدول

'people' ".

تستخدم للتواصل مع قواعد (SQL) أو Structured Query Language مرة أخرى، لغة :البانات، انظر إلى المثال البسط

Get all data from the table 'people'

Will be written like this in SQL:

SELECT * FROM people

.األمثلة أدناه SQL شرح نفسه، أكمل القراءة لترى كف ستخدم استعالمالمثال

: استرجاع البانات من قاعدة البانات1مثال

، لذلك من المهم أن تقرأ هذه 19الدرس و 14الدرس هذا المثال ستخدم قاعدة البانات والجدول من .الدروس أوال

.SQL من خالل استعالم "people" المثال وضح كف أن البانات ف جدول

تخزن ف ما ، هذه السجالت سجالت عود بسلسلة نتائج على شكل SQL استعالمأو مجموعة السجالت وهو ما مكن وصفه بجدول ف ذاكرة المزود حوي recordset سمى

.صفوفا من البانات )سجالت( وكل سجل مقسم إلى حقول أو اعمدة

PHP مجموعة السجالت مكن مقارنتها بجدول حث كل سجل مكن مقارنته بصف ف الجدول، فالت تعطنا كل mysql_fetch_array ت ف حلقة ووظفةمكننا أن نمرر مجموعة السجال

.صف كمصفوفة

Page 89: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

89

:للتعامل مع مجموعة السجالت mysql_fetch_array المثال أدناه وضح كف تستخدم وظفة

<html>

<head>

<title>Retrieve data from database </title>

</head>

<body>

<?php

// Connect to database server

mysql_connect("mysql.myhost.com", "user",

"sesame") or die (mysql_error ());

// Select database

mysql_select_db("mydatabase") or

die(mysql_error());

// SQL query

$strSQL = "SELECT * FROM people";

// Execute the query (the recordset $rs

contains the result)

$rs = mysql_query($strSQL);

// Loop the recordset $rs

// Each row will be made into an array ($row)

using mysql_fetch_array

while($row = mysql_fetch_array($rs)) {

// Write the value of the column FirstName

(which is now in the array $row)

echo $row['FirstName'] . "<br />";

}

// Close the database connection

mysql_close();

?>

</body>

</html>

شاهد المثال

Page 90: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

91

، بنفس row['FirstName']$ بكتابة "FirstName" الحظ كف نستخرج البانات من عمود .row['Phone']$ بكتابة "Phone" قة مكننا استخراج بانات عمودالطر

ترتب مجموعة السجالت هو نفس ترتبها ف الجدول داخل قاعدة البانات، لكن ف المثال التال .سنوضح كف مكن إعادة ترتب مجموعة السجالت

: ترتب البانات أبجدا، زمنا أو حسب األعداد2المثال

ن المفد عرض قائمة أو جدول بانات بترتب أبجدي أو زمن أو بحسب األرقام، هذا الترتب غالبا متستخدم Order By ColumnName ، حث طرقة كتابتهSQL مكن إنجازه بسهولة ف

.لترتب المحتوات بحسب محتوات أحد أعمدة الجدول

:التال SQL أنظر إلى استعالم

strSQL = "SELECT * FROM people"

:السجالت مكن ترتبها مثال أبجدا بحسب االسم األول لألشخاص بهذه الطرقة

strSQL = "SELECT * FROM people ORDER BY

FirstName"

:أو زمنا بحسب تارخ المالد بهذا الشكل

strSQL = "SELECT * FROM people ORDER BY

BirthDate"

:DESC بإضافة تنازلي إلى تصاعدي رتب منمكن تغر الت

strSQL = "SELECT * FROM people ORDER BY

BirthDate DESC"

:ف المثال التال األشخاص عرضون ف قائمة مرتبة بحسب العمر

Page 91: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

91

<html>

<head>

<title>Retrieve data from database </title>

</head>

<body>

<?php

// Connect to database server

mysql_connect("mysql.myhost.com", "user",

"sesame") or die (mysql_error ());

// Select database

mysql_select_db("mydatabase") or

die(mysql_error());

// SQL query

$strSQL = "SELECT * FROM people ORDER BY

BirthDate DESC";

// Execute the query (the recordset $rs

contains the result)

$rs = mysql_query($strSQL);

// Loop the recordset $rs

while($row = mysql_fetch_array($rs)) {

// Write the value of the column FirstName

and BirthDate

echo $row['FirstName'] . " " .

$row['BirthDate'] . "<br />";

}

// Close the database connection

mysql_close();

?>

</body>

</html>

Page 92: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

92

شاهد المثال

ورتب السجالت بحسب االسم األول أو االسم األخر أو رقم بنفسك SQL جرب تغر استعالم .الهاتف

استرجاع معلومات مختارة

الصفوف من الجدول، لكن غالبا ستحتاج لوضع شروط أو كل تطلب SQL حتى اآلن استعالماتللبانات الت تردها، فمثال مكنك أن تطلب صفوف البانات لألشخاص SQL معار ف استعالم

.ن ملكون أرقام هواتف محددة أو أسم أخر محددالذ

"، مكننا فعل ذلك بهذا 66554433لنقل بؤننا نرد استرجاع بانات للناس الذن ملكون رقم الهاتف " :الشكل

strSQL = "SELECT * FROM people WHERE Phone =

'66554433 '"

:SQL اتصال ف (operators) عوامل 6هناك

ساوي = أصغر من > أكبر من <

أصغر من أو ساوي => أكبر من أو ساوي =< ال ساوي =!

:باإلضافة لذلك هناك عوامل منطق

AND OR

NOT

.وط والعواملللمزد من المعلومات حول كفة استخدام الشر 6الدرس راجع

.ف المثال التال سنستخدم الشروط إلنشاء دفتر عناون

: دفتر عناون3مثال

ف هذا المثال سنحاول الجمع بن عدة أشاء تعلمناها، سننشؤ قائمة أسماء من قاعدة البانات حث كل .اسم كون رابطا لمزد من التفاصل حول الشخص

:حوان هذا الكود - person.phpو list.php - لهذا نحن بحاجة لملفن

Page 93: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

93

list.php الكود ف

<html>

<head>

<title>Retrieve data from the database</title>

</head>

<body>

<ul>

<?php

// Connect to database server

mysql_connect("mysql.myhost.com", "user",

"sesame") or die (mysql_error ());

// Select database

mysql_select_db("mydatabase") or

die(mysql_error());

// SQL query

$strSQL = "SELECT * FROM people ORDER BY

FirstName DESC";

// Execute the query (the recordset $rs

contains the result)

$rs = mysql_query($strSQL);

// Loop the recordset $rs

while($row = mysql_fetch_array($rs)) {

// Name of the person

$strName = $row['FirstName'] . " " .

$row['LastName'];

// Create a link to person.php with the id-

value in the URL

$strLink = "<a href = 'person.php?id = " .

$row['id'] . "'>" . $strNavn . "</a>";

// List link

echo "<li>" . $strLink . "</li>";

}

Page 94: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

94

// Close the database connection

mysql_close();

?>

</ul>

</body>

</html>

person.php الكود ف

<html>

<head>

<title>Retrieve data from database</title>

</head>

<body>

<dl>

<?php

// Connect to database server

mysql_connect("mysql.myhost.com", "user",

"sesame") or die (mysql_error ());

// Select database

mysql_select_db("mydatabase") or

die(mysql_error());

// Get data from the database depending on the

value of the id in the URL

$strSQL = "SELECT * FROM people WHERE id=" .

$_GET["id"];

$rs = mysql_query($strSQL);

// Loop the recordset $rs

while($row = mysql_fetch_array($rs)) {

// Write the data of the person

echo "<dt>Name:</dt><dd>" .

$row["FirstName"] . " " . $row["LastName"] .

"</dd>";

Page 95: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

95

echo "<dt>Phone:</dt><dd>" .

$row["Phone"] . "</dd>";

echo "<dt>Birthdate:</dt><dd>" .

$row["BirthDate"] . "</dd>";

}

// Close the database connection

mysql_close();

?>

</dl>

<p><a href="list.php">Return to the

list</a></p>

</body>

</html>

شاهد المثال

وقواعد PHP لعمل معمثال دفتر العناون بسط إلى حد ما، لكن ظهر لنا اإلمكانات المتوفرة عند ا .البانات

آالف منتج بتفاصلها ووصفها، بتعدالت قللة ف الملفن السابقن 17تخل أن قاعدة البانات تحوي يمكن إنجاز ذلك بقاعدة بيانات آالف صفحة، 17مكنك بسهولة إنشاء دلل منتجات حوي أكثر من

.فقط PHP واحدة وملفي

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

Page 96: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

96

: حذف البيانات من قاعدة البيانات05الدرس

ف الدرسن السابقن تعلمت كف تدخل المعلومات وتسترجعها من قاعدة البانات، ف هذا الدرس .نظرة على كفة حذف السجالت وهو أمر أسهل من إضافة البانات سنلق

SQL الحذف باستخدام

:لحذف السجالت كون بالشكل التال SQL طرقة كتابة استعالم

DELETE FROM TableName WHERE condition

مثال: حذف سجل

ة البانات، ف قاعدة ف قاعد AutoNumber عند جذف سجل مكنك استخدام حقل الرقم الممز، باستخدام معرف ممز تتؤكد بؤنك ستحذف سجال واحدا id البانات الخاصة بنا هناك عمود اسمه

:24فقط، ف المثال التال سنحذف سجل رقمه الممز هو

<html>

<head>

<title>Delete data in the database</title>

</head>

<body>

<?php

// Connect to database server

mysql_connect("mysql.myhost.com", "user",

"sesame") or die (mysql_error ());

// Select database

mysql_select_db("mydatabase") or

die(mysql_error());

// The SQL statement that deletes the record

$strSQL = "DELETE FROM people WHERE id = 24";

mysql_query($strSQL);

// Close the database connection

mysql_close();

?>

Page 97: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

97

<h1>Record is deleted!</h1>

</body>

</html>

، عندما تحذف سجال فهذا PHPتذكر أنه ال توجد "سلة المحذوفات" عند العمل مع قواعد البانات و .ترجاعهعن أنك لن تستطع اس

Page 98: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

98

: تحديث البيانات في قاعدة البيانات00الدرس

ف الدروس السابقة تعلمت إدخال واسترجاع وحذف البانات من قاعدة البانات، ف هذا الدرس .سنلق نظرة على كفة تحدث قاعدة البانات، أي تحرر القم الموجودة ف الجدول

SQL تحدث البانات باستخدام

:لتحدث البانات هو SQL تعالمطرقة كتابة اس

UPDATE TableName SET TableColumn='value' WHERE

condition

:SQL مكن أضا تحدث أكثر من حقل ف نفس استعالم

UPDATE TableName SET TableColumn1='value1',

TableColumn2='value2' WHERE condition

جب أن كون من السهل علك أن تعرف كف تستخدم 21و 27، 14س بما تعلمته اآلن من الدرو .المثال أعاله عملا، لكن بالطبع سنلق نظرة على مثال

"people" مثال: تحدث حقول ف جدول

، 44444444 وغر رقم الهاتف إلى .D إلى Donald Duck البرنامج أدناه حدث بانات اسم .الخاص بك SQL كانك تغر معلومات أخرى بكتابة استعالمالمعلومات األخرى لن تتغر، بإم

<html>

<head>

<title>Update data in database</title>

</head>

<body>

<?php

// Connect to database server

mysql_connect("mysql.myhost.com", "user",

"sesame") or die (mysql_error ());

Page 99: PHP...3 ةحفصلا ةمدم تاملكلل راصتخا وه PHP حلطصملا ةجمرب ةغل نع ةرابع هو Personal Home Page عقوم òف ةمدتم صئاصخ ةفاضلإ

الصفحة

99

// Select database

mysql_select_db("mydatabase") or

die(mysql_error());

// The SQL statement is built

$strSQL = "Update people set ";

$strSQL = $strSQL . "FirstName= 'D.', ";

$strSQL = $strSQL . "Phone= '44444444' ";

$strSQL = $strSQL . "Where id = 22";

// The SQL statement is executed

mysql_query($strSQL);

// Close the database connection

mysql_close();

?>

<h1>The database is updated!</h1>

</body>

</html>

دة بهذا المثال نكمل الدروس حول قواعد البانات، تعلمت إدخال وحذف وتحدث البانات ف قاع، وهكذا أنت اآلن تستطع أن تنشؤ مواقع تفاعلة متقدمة حث مكن PHP البانات باستخدام

.للمستخدمن إدارة وتحدث قاعدة البانات باستخدام النماذج

االنضمام وقواعد البانات فجرب PHP إذا كنت ترد رإة مثال متقدم بما مكن فعله بلغة البرمجة، االنضمام مجان ولن ؤخذ منك أكثر من دققة لفعل ذلك، مكنك أن تدر ملفك الخاص إلى منتدانا

.باستخدام النماذج، وقد تحصل على أفكار لموقعك

د لما تعطك إمكانات كثرة إلضافة التفاعل لموقعك، الحد الوح PHPهذا أضا نهاة الدرس، !مكنك فعله هو خالك، استمتع

المرجع

http://ar.html.net/tutorials/php/

مت حبمد اهلل وشكره