منتديات المُنى والأرب

منتديات المُنى والأرب (http://www.arabna312.com//index.php)
-   دروس في الكمبيوتر (http://www.arabna312.com//forumdisplay.php?f=258)
-   -   تعلم لغة php بالكامل - محمد الرحيلي (http://www.arabna312.com//showthread.php?t=19695)

قلب., 9 - 11 - 2011 11:05 PM

تعلم لغة php بالكامل - محمد الرحيلي
 
تعلم لغة PHP بالكامل

سم الله الرحمن الرحيم
سوف تتعلم لغة PHP بالكامل وسوف تشمل جميع ما تحتاجه لتعلم هذه اللغه, وسوف يكون تقسيم الدروس كالآتي :
  • متطلبات قبل كل درس
  • نقاط توضيحيه وأهداف الدرس
  • الدرس بالكامل
  • أسئله على الدرس
  • الدرس القادم
متطلبات قبل البدء بتعلم لغة PHP :
  • معرفة شبه تامه بلغة HTML
  • الإخلاص في التعلم
  • عدم التوقف بعد الإنتهاء من التعلم وإنما البحث عن الجديد ومحاولة التطوير الدائم للمهارات
  • توفر بعض مهارات اللغه الانجليزية وذلك لأن بعض المصطلحات يصعب ترجمتها إلى العربية , أو معناها العربي لا يؤدي الغرض
نقاط توضيحيه عن دروس PHP :
  • لماذا تتعلم معنا ؟
  • ما مقدار الإستفاده من تعلم PHP معنا
  • ماهي لغة PHP ؟
  • قوة لغة PHP
لماذا تتعلم معنا ؟

سوف تتعلم من هذه الدروس كيفية عمل برامج PHP من أبسطها إلى أعقدها , مروراً من تعريف المتغيرات إلى إنشاء الدوال والكائنات البرمجيه وربطها مع بعضها البعض. يجب أن تكون لديك خبره في لغة HTML وقمت ببعض البرمجه من قبل ولا يعني أن تكون خبيرا جداً أو قمت ببرمجة مواقع أو قواعد بيانات. أما إذا كنت مبتدأ سوف تفيدك الدروس ولكن تحتاج إلى كثير من التركيز والتطبيق المتواصل ووقت أطول.
مقدار الإستفاده من تعلم PHP معنا
تعلمك معنا سوف يتيح لك بناء مواقع حقيقه وممتازه وسوف نحاول أن نقوم بتغطية جميع ما يتعلق بهذه اللغه. إذا استخدمت لغة HTML من قبل فمن المؤكد أنك لاحظت عدم ديناميكية الصفحات ولكن مع PHP سوف تلاحظ الفرق, وبعد الانتهاء من الدروس بالكامل سوف نقوم بعمل تطبيقات حقيقه يتم تقريرها لاحقا.
ماهي لغة PHP ؟
PHP عباره عن لغة تسمى ( Server Side Scripting Language ) ونعني بذلك أنها تترجم من جهة الخادم وليس من جهاز المستخدم.
لنضرب مثالا واقعياً على ذلك , عند الدخول إلى الدردشه يجب عليك أن تقوم بتحميل ((JAVA VM )) على جهازك لتتمكن من الدخول ولكن إذا قمت بزياره أي موقع يستخدم لغة PHP فلن يكون هناك حاجه لتنصيب أو تحميل أي برامج مساعده. فما وراء الكواليس كله يحصل في الخادم (( Server )), صممت هذه اللغه خصيصاً للمواقع. ومن ضمن صفحات HTML يمكنك إدراج لغة PHP بداخلها لكي تنفذ في كل مره قمت بزياره الصفحه.
بدأت لغة PHP بمجهود شخص واحد يسمى ( Rasmus Lerdorf ) في سنة 1994 ومرت بثلاث مراحل جذريه لنرى ماهي عليه الان, حتى أنه في سنة 2002 كان عدد المواقع التي تستخدمها اكثر من 9000000 ((تسعة مليون )) موقع. PHP لغة برمجة متاحه للكل لتطويرها أو العمل عليها وهذا ما يسمى ( Open Source ). قديما كان اختصار PHP هو ( Personal Home Page ) ولكن تغيرت إلى الاسم الحالي ( Hypertext Processor ). النسخه الحاليه للغة PHP هي 5 وقد حصل بها تطور كبير وتغيرات جذريه كبيره وأصبحت أقوى بكثير من ما هي عليه الان.

http://arccn.net/images/php/l1e1.gif

( مثال 1 : لاحظ انك لا تحتاج الى مترجم PHP على جهازك الشخصي )
قوة لغة PHP :
سوف أقوم بذكر قوة لغة PHP على شكل نقاط وسوف نتكلم عن كل نقطه بالتفصيل
  • الأداء العالي : تعتبر اللغه جدا مميزه وفعاله , حتى مع دعمها بتقنيه ZEND أصبحت أقوى , بحيث يمكن أن تتحمل ملايين الأوامر في اليوم الواحد
  • دعمها لعدد كبير من قواعد البيانات : تدعم لغة PHP عدد كبير من قواعد البيانات منها MySQL و mSQL و Oracle و DBM و وغيرها الكثير
  • الدوال الداخليهاو ( Built-In Library ) : تحتوي اللغه على كثير من الدوال الجاهزه للاستخدام , ومسهله بطريقه كبيره , بحيث يمكن من سطرين برمجيين أو ثلاث من إنشاء صوره من غير استخدام أي برنامج تحرير رسومي
  • القيمه : اللغه مجانيه ولا يوجد أي مبلغ تقوم بدفعه لتحميلها ويمكنك تحميل اللغه من موقعها الرسمي http://www.php.net
  • التعلم : تعلم اللغه سهل وهو مبني على لغة PERL و C و JAVA فإذا كنت تعرف إحدها , فتأكد أنك سوف تختصر كثير من الوقت للتعلم
اسئله على الدرس :
  1. ماهو الاسم القديم للغة PHP وماهو الاسم الحالي ؟
  2. من هو مخترع هذه اللغه ؟
  3. اذكر مظاهر قوة لغة PHP ؟
  4. اذكر 4 من قواعد البيانات التي تدعمها لغة PHP ؟
الدرس القادم :
سوف نتعلم في الدرس القادم كيفة تنصيب خادم شخصي و لغة PHP و قواعد بيانات MySQL على جهازك وربطها مع بعضها البعض.

قلب., 9 - 11 - 2011 11:12 PM


كيفة تنصيب خادم شخصي و لغة PHP و قواعد بيانات MySQL على جهازك وربطها مع بعضها البعض.</B></I>


متطلبات قبل البدء
  • تحميل لغة PHP وخادم شخصي وقواعد بيانات MySQL
  • تحميل محرر مناسب لكتابة البرامج بلغة PHP
أهداف الدرس:
  • تنصيب لغة PHP وسيرفر Apache و قواعد بيانات MySQL
  • أختيار محرر مناسب للكتابه
  • كتابة اول برنامج PHP
  • وسوم الكتابه في PHP
  • الطباعه للمتصفح في PHP
  • دمج PHP مع HTML

تنصيب لغة PHP و الخادم الشخصي Apache و قاعدة البيانات MySQL:

هل تذكر عندما قلنا أن لغة PHP تحتاج إلى مترجم لكي يقوم بمعرفة ما يقوم به الكود في الدرس الاول ؟ في هذه النقطه سوف تعرف كيف يتم تنصيب مترجم PHP , ولكن لا يستطيع مترجم PHP العمل بمفرده , لأنه يحتاج إلى خادم شخصي يكون به المترجم ليظهر المعلومات إلى المتصفح , ولهذا سوف نقوم بتركيب Apache وهو يعتبر من أفضل الخوادم الشخصيه الموجوده , لكي تقوم بإنهاء عناء تركيب هذه البرامج قامت مجموعه Appserv Network بعمل برنامج يقوم بتنصيب PHP و Apache و MySQL معاً , وحجم الملف صغير جدا مقارنة بتحميل كل برنامج على حده, لكن شرح تركيب هذا البرنامج هنا خارج عن نطاق موضوعنا ولذلك سوف تجد في مكتبة البرامج وصلة تحميل برنامج appserv و ايضا سوف تجد شرج خارجي لطريقة تركيب برنامج appserv
اختيار محرر مناسب لكتابة اكواد PHP :
يوجد كثير من البرامج لكتابة أكواد PHP ولكن لا اتحيز إلى واحد منهم بشكل معين , أنت كمبتدئ تحتاج إلى أن تكتب الكود البرمجي بإستخدام أحد هذه البرامج لأنها تساعد على تتبع الاخطاء وترتيب الكود البرمجي وتلوينه , وهذا يساعد كثيرا في البرمجه , لمشاهدة هذه البرامج اذهب الى صفحة برامج تحرير لغة PHP

كتابة اول برنامج PHP:
هل أنت مستعد ؟ هل قمت بتنصيب برنامج AppServ واخترت محرر كتابة الاكواد المناسب من مكتبة البرامج ؟ اذن لنقم بكتابة اول برنامج PHP . قم بفتح محرر الاكواد وابدأ بإنشاء صفحه جديد وقم بكتابة الكود التالي :
http://arccn.net/images/php/l2e1.gif
قم بحفظ البرنامج وقم بتسميته إلى first.php في ملف www واذا كنت اخترت المكان الافتراضي لتنصيب AppServ سوف يكون مكان وضع الملف هنا C:/AppServ/www بعد ذلك اذهب الى متصفحك واكتب التالي http://localhost/first.php وسوف تشاهد التالي :
http://arccn.net/images/php/l2e2.gif
مبارك لك , لقد قمت بكتابة أول برنامج PHP واصبح اسمك مبتدئ PHP او مبرمج مبتدئ للغة PHP
وسوم الكتابه في لغة PHP :
هناك كثير من وسوم الكتابه في لغة PHP, ونعني بوسوم الكتابه المكان الذي يكون يبدأ معه كتابة الكود والمكان الذي ينتهي معه , انظر الى الصوره الاولى في الاعلى وسوف تجد ان وسم بداية الكتابه هو
<?php
ونهاية الكتابه هو
?>
هل عرفت الان معنى وسوم الكتابه ؟
تلميح : (( وسوم = tags ))
وسم النهاية
وسم البداية
نمط الكتابه
?>
<?php
النمط الافتراضي
?>
<?
النمط القصير
</SCRIPT>
<SCRIPT LANGUAGE=”php”> نمط Script


فهمت النقطه إلى الان ؟ إذن لنقم بتطبيق هذه الوسوم على برنامجنا الاول , لنرى كيف تعمل , ولكي تعرف ماهي افضل طريقه احببت في كتابة الوسوم http://arccn.net/wp-includes/images/...icon_smile.gif
النمط الافتراضي :
http://arccn.net/images/php/l2e1.gif
النمط القصير :
http://arccn.net/images/php/l2e3.gif
نمط Script:
http://arccn.net/images/php/l2e4.gif
هل قمت بإختيار النمط المريح لك ؟ إذن انتهينا من الجزء الثاني من درس اليوم http://arccn.net/wp-includes/images/...icon_smile.gif , هل أنت مستعد و مندفع للمتابعه ؟ اذن سوف نبدأ النقطه ( الخامسه لهذا اليوم )
الطباعه للمتصفح في PHP:
اعتقد انك قمت بالتركيز في الشرح بالاعلى وقلت لنفسك ( انا اعرف كيف اطبع للمتصفح ) , نعم انت تعرف , نفسها كلمة print() هي للطباعة في المتصفح , ولكن ما هي print() , هذه الداله داخليه في PHP اي موجوده في المترجم وتستطيع استخدامها , نقوم في معظم الحالات بطباعة مخرجات الى المتصفح , قد تتسائل ماهو معنى كلمة داله ؟ اليس ذلك صحيح ؟ اذن داله تعني ( امر يقوم بفعل شي معرف مسبقا بداخله ) لم تعرف ما اعني ؟ لا تتعجل سوف تقوم بفهم هذا كله لاحقا وفي دروس متقدمه , ودائما المدخلات الى الدوال تكون بين الاقواس كما تشاهد في اول برنامج لك , في حالتنا بالاعلى قمنا بطباعة نص اليس ذلك صحيحا ؟ اذن يجب ان نضع النص بين علامتي التنصيص ” نص معين “ والا سوف يكون هناك خطأ , اذا ماذا لو اردنا ان نقوم بطباعة رقم ؟ الجواب هو ان نقوم بطباعته بدون علامتي التنصيص. ولا تنسى ان تقوم بإنهاء كل سطر في كودك البرمجي بعلامة ; وإلا سوف يكون هناك خطأ , لماذا نحتاج هذه العلامه ؟ لكي نقول للمترجم ان هنا ينتهي طلب هذا الامر وقم بتنفيذه.
دمج PHP مع HTML:
الكود البرمجي الذي قمنا بكتابته في الاعلى , عباره عن PHP فقط ويسمونه باللغه الانقليزيه (( pure php )) == (( مجرد PHP )) ولكن لو اردنا ان نجعل معه بعض من اكواد ال HTML ؟ الجواب بسيط جدا , وهو ان نقوم بكتابة كود ال HTML قبل وبعد وسوم البدايه والنهايه في PHP , اليك مثال يوضح لك الصوره , لنقم بكتابة البرنامج بالاعلى بطريقه اخرى:
http://arccn.net/images/php/l2e5.gif
لن اقوم بشرح كود ال HTML هنا , لاني اعتقد ان عندك خبره او معلومات سابقه عن HTML , اما اذا لم تعرف فالامر بسيط انظر الى مخرجات هذا الكود , ومخرجات الكود في المثال الاول (( بدون دمج مع لغة PHP )) وسوف تلاحظ الفرق. وتذكر انه يمكن اضافة العدد الذي تريد من هذه الاكواد , لا يوجد هناك عدد محدد , فقط اكمل الدرس هذا اليوم وقم بعمل صفحه خاصه بك بهذه الطريقه (( الدمج )) وسوف تشعر انك مبرمج حقيقي. هل انت مصر على معرفة معنى الكود ؟ اذن سوف اشرح لك بطريقه بسيطه , في هذا الكود لاحظ ان الجمله ظهرت بخط عريض وذلك لاستخدامنا لكود HTML الذي تلاحظه في المثال <b> و </b> ووضعنا بين هذا الكود سطر لغة PHP ليطبع الجمله , والناتج الجمله بخط عريض. هل تريد ان تعرف كيف يكتب هذا الكود بلغة HTML , اذن لاحظ التالي :
http://arccn.net/images/php/l2e6.gif
اعتقد انه الان قد وضحت لك الصوره بالكامل http://arccn.net/wp-includes/images/...icon_smile.gif
التعليــقات:
عندما تكتب كود برمجي كبير , أو اسطر برمجيه كثيره سوف تكون لك سهله في البدايه وسوف تعرف عمل هذا الكود , لكن اترك العمل على الكود لمدة سنه , وارجع له مره ثانيه لتقوم ببعض التعديلات وبعض الاصلاحات ؟ هل تعتقد انك سوف تتذكر جميع الاكواد ؟ , اذن هذه هي التعليقات , تعبير او شرح بسيط عن الاكواد التي قمت بعملها وبمعنى اخر (( هي اسطر كتابيه تقوم بشرح اكواد معنيه ولا يقوم المترجم بترجمتها )) لنأخذ بعض انواع التعليقات وبعض الامثله على التعليقات وكيف يتم استعمالها :
  • سطر واحد :
// this is a comment
# this is a comment
  • عدة اسطر :
/*this a comment
i am learning php
i love it
*/

لا داعي للقلق اذا لم تفهم هذه النقطه , مع الدرس القادمه سوف تعرف معنى استخدام
التعليقات وفوائد استخدامها بشكل مفصل

اسئـــله على الــدرس:
  1. ماهو افضل وسم في رأيك يمكنك استخدامه في كتابة اكوادك ؟
  2. لماذا تحتاج ان تقوم بإستخدام التعليقات ؟
  3. قم بكتابة برنامج PHP يقوم بطباعة اسمك الاول بخط عريض في سطر
    واسم والدك في سطر اخر بخط مائل واسم عائلتك بخط عادي في سطر ثالث. (( يمكنك ان تجرب كتابة الارقام وتلوين الاكواد )) تلميح : استخدم برنامج Front Page للمساعده
الــدرس القــــادم:
في الدرس القادم سوف نقوم بشرح المتغيرات وانواعها بالتفصيل , لكي تعرف قوى لغة PHP ولتبدأ مسيرتك كمبرمج PHP محترف

قلب., 9 - 11 - 2011 11:14 PM

الدرس الثالث: المتغيرات , الثوابت و المعاملات

ما معنى متغير ؟ المتغير هو عباره عن مكان او محتوى تضع فيه قيمة , تخيل كأس يمكن ان يحتوي ماء او عصير اليس ذلك صحيحا ؟ نفس الشي ينطبق على المتغير هو مكان نحفظ به قيمة ( بيانات ) . اذن كيف نقوم بتعريف متغير ؟ وكيف نحدد قيم المتغير ؟! في لغة PHP نقوم بتعريف متغير عن طريق الرمز $ فمثلا لو قلنا اننا نريد ان نعرف متغيرا اسمه ( name ) ويحتوي على القيمه ( احمد ) فسوف نقوم بالتالي:
$name = “احمد”;
لكن يجب عليك الانتباه بأن اسماء المتغيرات في لغة PHP لها حدود, نعني بذلك انه يوجد اسماء واحرف غير مسموحه لتعريف المتغيرات, لنقوم بتسهيل الامر سنذكر المسموح منها وهو ( احرف ) و ( ارقام ) و ( _ ) فقط.
مثال على الاحرف : ( $name ) , مثال على الارقام : ( $223 ) , مثال على _ : ( $_name ) , ارأيت سهولة ذلك ؟ ولكن يفضل ان تكون الاسماء معبره لكي يسهل عليك كتابة البرنامج ويسهل على الغير فهم محتواه , فلو اردت ان تعرف متغير يحوي البريد الالكتروني فسوف يكون كالتالي ( $email ) او ( $user_email ) وليس من المنطقي ان يكون ( $2235 ) او ( $mobile ) على سبيل المثال. وتذكر ان يمكنك استخدام اي عدد من الحروف التي تريد , فهي ليست محدده
لو اردنا ان نقوم بتعريف متغير به القيمه 1 ومتغير اخر به القيمه 2 ماذا سوف نفعل ؟ سوف نقوم بتعريف المتغير الاول ( $number1 = 1; ) والمتغير الثاني ( $number2 = 2; ) , ماذا لو اردنا طباعته الى المتصفح , بكل بساطه نقوم بعمل التالي: ( print $number1; ) و ( print $number2; ) , لم تقتنع ؟ لم توضح الصوره ؟ مللت من الكلام ؟ لنقم بتسخين ايدينا قليلا وقم بفتح محرر الاكواد اليك وقم بكتابة الكود التالي :
http://arccn.net/images/php/l3e1.gif
عند تنفيذ هذا الكود سوف يكون لدينا الناتج التالي :
http://arccn.net/images/php/l3e2.gif
اذن في المتغير number1 قمنا بوضع القيمه 1 وفي المتغير number2 قمنا بوضع القيمه 2 ( بإستخدام العلامه = ) وقمنا بطباعة المتغيرات, فرأينا محتوى المتغيرات. اذن كأننا قلنا ( print 1; ) اليس كذلك ؟ لاحظ هنا ان السطور البرمجيه تنفذ سطرا سطرا , نعني بذلك اننا سنقوم بتنفيذ السطر رقم 3 ثم نقوم بتنفيذ السطر رقم 4. لكن قد تتسائل , فقط نستطيع ان نقوم بوضع قيم ؟ هل يمكن ان نضع متغير في متغير ؟ نعم يمكن ذلك بهذه الطريقه ( $number2 = $number1; ) ارأيت السهوله والبساطه في الموضوع ؟ وسوف يقوم بطباعة الرقم 1 . قلنا قبل قليل ان التنفيذ يكون سطرا سطرا اليس كذلك ؟ لنرى مثالا على ذلك , اكتب في محرر الاكواد التالي :
http://arccn.net/images/php/l3e3.gif
قم بتجربة الملف ولاحظ الناتج , اذن لان الاوامر تنفذ سطرا سطرا لم يقم المترجم بطباعة القيمه 2 , لان اخر قيمة اسندت الى المتغير ( $number 2 ) هي قيمة المتغير ( $number1 ) , اعتقد ان الامر قد اتضح الان , لا تنسى ان اسماء المتغيرات حساسه لحالة الاحرف فالمتغير ( $number ) لا يساوي المتغير ( $Number ) .

انواع البيانات:

هل لاحظت في الامثله السابقه اننا قمنا بطباعة ارقام ونصوص, اليس كذلك ؟ ولكن ماهي انواع البيانات التي تأخذها المتغيرات وانواعها ؟ لدينا عدة انواع من المتغيرات الا وهي : ( نصوص = string ) , ( ارقام = integer ) , ( ارقام عشريه = Double ) , ( المتغير Boolean ) , ( مصفوفه = array ) , ( كائن = object ) , في بداية تعلمنا سوف نقوم بالتعرف على النصوص والارقم العشرية والمتغير Boolean , اما الاخري فسوف تكون في دروس متقدمه اخرى , لنأخذ امثله على هذه المتغيرات
مثال
الاسم
“Mohammad”
string
123
Integer
1.23
Double
True / False
Boolean

لاحظ اننا عندما نريد طباعة نص يجب ان نقوم بوضعه بين علامتي التنصيص ” ” او ‘ ‘
اي واحد منهما تقوم بإختياره , ولكن اذا بدأت بواحد منهم يجب ان ينتهي النص بنفسه فلا يصح ان نقول ( “mohammad’ ) ولكن الصحيح ( “mohammad” ) او ( ‘mohammad’ )
وضحت الصوره ؟
معلومه خارجيه : تسمى لغة PHP اللغه المسامحه ولذلك انك عند وضع القيمه داخل المتغير لا تحتاج ان تقوم بتحديد النوع , فإن المترجم يقوم بعرفة النوع من تلقاء نفسه , ماعليك فعله فقط ان تقوم بوضع علامة $ قبل اسم المتغير.
تخيل انك تريد معرفة نوع قيمة موجوده في متغير , ماذا يجب عليك ان تفعل , امر بسيط جدا وهو ان تقوم بإستخدام الداله gettype($var); وسوف تقوم هذه الداله بطباعة نوع المتغير الموجود لديك , لنأخذ امثله على ذلك , افتح محرر الاكواد وقم بكتابة التالي
http://arccn.net/images/php/l3e4.gif
وسوف يكون الناتج كما يلي :
http://arccn.net/images/php/l3e5.gif
لاحظ ان المتغير $test نوعه NULL وذلك لاننا لم نقم بتعيين اي قيمه له , ومعنى
NULL هو فراغ او لا شيء

ماذا لو اردنا تغيير قيمة متغير من نوع الى اخر , من integer الى string فمالذي نفعله ؟ نقوم بإستخدام الداله settype($var , new type ) لكي تقوم بالعمل المطلوب , لنأخذ مثالا لتوضيح الصوره
http://arccn.net/images/php/l3e6.gif
والناتج هو :
http://arccn.net/images/php/l3e7.gif
والبقية نفس المنوال , فقط قم بوضع المتغير , ثم ضع النوع المراد التحويل اليه
هناك طريقة اخرى لتغيير نوع المتغير وتسمى ( Casting ) وهي بالطريقة التاليه :
http://arccn.net/images/php/l3e8.gif
قم بكتابة الكود وسوف ترى ان النتيجه نفسها نتيجة عمل settype( $var , new type ) والاختلاف الوحيد ان طريقة ( Casting ) لا تقوم بتغيير نوع المتغير الاساسي او فعليا , ولكن تقوم بوضع نسخه من المتغير وتقوم بتغييرها الى النوع المراد , ولكن على عكس الاخرى فهي تقوم بتغير النوع فعليا
هناك شي اخر وهو لو اردنا جمع متغيرين مع بعضهما البعض في سطر واحد , فسوف نقوم بإستخدام ( . ) , لم توضح الصوره وانا متأكد , لنأخذ مثال يبين لنا المعنى , افتح محرر الاكواد مجددا وقم بكتابة التالي :
http://arccn.net/images/php/l3e9.gif
والناتج هو التالي:
http://arccn.net/images/php/l3e10.gif

الثوابــــت:

رأيت في السابق اننا نقوم بإنشاء متغيرات ونقوم بتغيير انواعها والكثير من الامور ولكن يوجد لدينا الثوابت , ماهي الثوابت ؟ من الاسم يمكنك ان تستنج انه متغير ثابت ولا يتغير ابدا مهما حصل , قد تتسائل لماذا نحتاج الى هذه النوع من المتغيرات , والاجابه هي , تخيل ان لدينا اسعار بعض من منتجاتنا , وهذه الاسعار ثابته ولا تتغير ؟ فسوف نقوم بوضعها في الثوابت بالطريقه التاليه define( ‘var’ , value ) هل وضحت الصوره ؟؟ لنأخذها بالعربيه define(‘اسم المتغير’ , القيمه ) , هل عرفت الان الطريقة ؟ لنقم ببعض الامثله
,تخيل انه لدينا مطعم ونبيع الببسي بثلاث انواع , صغير وقيمته ريال واحد , وسط وقيمته ريالان , كبير وقيمته 3 ريالات , قم بكتابة التالي ,
http://arccn.net/images/php/l3e11.gif
والناتج هو التالي :
http://arccn.net/images/php/l3e12.gif
الفرق بين المتغيرات والثوابت , هي انه عندما نريد ان نقوم بطباعة الثابت او استخدامه لا نقوم بوضع علامة $ في الثابت ابدا , وايضا من الاسماء الممنوع استخدامها في متغيرات
لغة PHP الثوابت المعرفة في نفس اللغه , وهي ثابته ولا تتغير ولمشاهدتها قم بكتابة التالي في محرر الاكواد
http://arccn.net/images/php/l3e13.gif
وقم بتشغيل الملف وشاهد النتيجه http://arccn.net/wp-includes/images/...icon_smile.gif . (( سوف تظهر لك صفحه يوجد بها اعدادات
هذه اللغه , لا تهتم لها الان فقط انظر الى الثوابت Variables ))


المعامــلات:

لدينا ثلاث انواع من المعاملات في لغة PHP وهي المعاملات الحسابيه ,
معاملات المقارنه , المعاملات المنطقيه وسوف نتكلم عنها بالتفصيل

المعاملات الحسابيه

المعاملات الحسابيه الاعتياديه
نتيجة المثال
مثال
الاسم
المعامل
2
1+1
جمع
+
0
1-1
طرح
-
6
2*3
ضرب
*
3
6/2
قسمه
/
1
10%3
باقي القسمه
%

معاملات حسابيه اخرى :
تساوي
مثال
العمليه
$x = $x + 5
$x +=5
+=
$x = $x – 5
$x -=5
-=
$x = $x * 5
$x *= 5
*=
$x = $x / 5
$x /= 5
/=
$x = $x % 5
$x % = 5
%=
$x = $x + 1
$x++
++
$x = $x – 1
$x–


شيء مخيف اليس كذلك ؟ بالعكس انه سهل جدا , كأنك تقوم بتعلم الرياضيات للمرحله الاولى , لنقم بكتابة بعض الاكواد وسوف ترى كيفية سهولة الامر , افتح محر الاكواد ولنقم بعمل بعض من تمارين العمليات الحسابيه الاعتياديه :
http://arccn.net/images/php/l3e14.gif
ارأيت سهولة الامر ؟ فقط عليك ان تقوم بذكر رموز العمليات وسوف يكون لديك الناتج , لنقم الان ببعض تمارين المعاملات الحسابيه الاخرى , قم بكتابة التالي :
http://arccn.net/images/php/l3e15.gif
لاحظ اننا هنا قمنا بتغيير قمية محتوى المتغير الاساسية , وليس مؤقتا , قم بتجربة العمليات الاخرى , حتى ولو كانت هناك بعض الاخطاء , قم بالتكرار ومحاولة معرفة الخطأ وسوف تفهم جميع الاكواد السابقه.

سوف نقوم الان بذكر معاملات المقارنه والمعاملات المنطقيه ولكن لن نقوم بعمل اي
تمارين عليها , وذلك لانها سوف تستعمل في الدرس القادم


معاملات المقارنـــــه :

المعنى
المعامل
يساوي
= =
لا يساوي
!=
يساوي ومن نفس النوع
= = =
اكبر من
>
اكبر من ويساوي
>=
اصغر من
<
اصغر من ويساوي
<=


المعاملات المنطقية
:
النتيجه
مثال
يكون صحيح عند
الاسم
المعامل
true
true || false
احد الطرفين صحيح
او
||
true
true OR false
احد الطرفين صحيح
او
OR
false
true && false
كل الطرفين صحيحه
و
&&
false
true AND false
كل الطرفين صحيحه
و
AND
false
true xor true
احد الطرفين صحيح وليس الاثنان
xor
xor
false
!ture
الطرف ليس صحيح
لا
!

قد تتسائل لماذا يوجد لكل نوع اثنان من الاشكال ؟ والجواب سوف يكون في القسم التالي وهو ترتيب الاهميات

ترتيب الاهميــــات:

عند استخدام المعاملات يقوم المترجم بالقراء من اليمين الى اليسار في الحالات العاديه وعند استخدام معامل واحد , ولكن تخيل لدينا اكثر من معامل في سطر برمجي واحد ؟ هنا يقوم المترجم بالاختيار حسب الاهميه , لنأخذ مثال على ذلك , تخيل ان لديك العمليه التاليه :
4 + 5 فماهو الناتج ؟؟؟ الناتج واضح وليس به اي غموض وهو 9
ولكن تخيل لو لديك العمليه التاليه 4 + 5 * 2 ؟؟؟ فما هو ناتج العمليه الحسابيه ؟ الجواب هو 14 , لان المترجم قرأ عملية الضرب اولا ثم عملية الجمع , ويمكن ان تقوم بإجبار المترجم على قراء عملية الجمع اولا بإستخدام الاقواس , مثال : ( 4 + 5 ) * 2 وسوف يكون الناتج 18
, في الجدول التالي سوف تقوم بمعرفة الاهميات وترتيبها وماهي المعاملات التي تنفذ
قبل الاخرى ( من الاعلى الى الاسفل )

المعامل
++ , — , (cast)
/ , * , %
+ , -
< , <= , => , >
= = , = = = , !=
&&
||
= , += , -= , /= , *= , %= , .=
AND
xor
OR


لا تتعجل بالحكم على ان اللغه صعبه , يمكن ان لا اكون قد وضحت فكرة الشرح بشكل جيد , او لم يكن القائي جيدا , ولكن اعدك في الدرس القادم انك سوف تعرف معنى هذه المتغيرات وكيفية
استعاملها , ومع الدرس القادم , تبدأ به متعة لغة PHP
اسئـــلة على الدرس :
  • اي من اسماء المتغيرات التاليه غير مسموح في لغة PHP :
$name
$22name65
$first name
$last-name
$______________ARCCN____________
2. ماهو ناتج العمليات التاليه :
4+5+6*(2*4)
2+9*8
3. قم بإنشاء متغير من نوع ( integer ) وقم بتحويله الى كل الانواع التي مرت
عليك , مره بإستخدام الداله settype ومره بإستخدام ( Casting ) ولاحظ الفرق بينهما

قلب., 9 - 11 - 2011 11:16 PM

الدرس الرابع: العبارات الشرطيه
اهداف الدرس:
  • الطباعه بالعباره ECHO
  • العباره الشرطيه IF
  • العباره الشرطيه ELSE
  • العباره الشرطيه ELSEIF
  • استخدامات العبارات الشرطيه مع المعاملات المنطقيه ومعاملات المقارنه

الطباعه بالعباره ECHO :

يوجد شبيه للعباره print وهي العباره echo وتقوم بنفس عمل العباره print تماما ولكن لسهولة لغة PHP , فهي تمكنك من اختيار اي طريقة تريد الطباعة بها الى المتصفح , لاحظ الامثله التي سوف تأتي بعد قليل ولاحظ اننا استخدمنا العباره echo بدل من العباره print ولكن كل منهما يؤدي نفس الغرض ولا يوجد اي اختلاف ابدا
العباره الشرطيه IF :
تخيل ان لديك برنامج صغير , ولا تريد ان يتبع هذا الرنامج طريق واحد , نعني بذلك انه لدينا حالات في هذا البرنامج , وكل حاله لديها خواصها وتنفيذات معينه خاصه بها, لنضرب مثالا على ذلك لتسهيل الامر , لنرجع الى مثالنا الاول , تخيل ان لدينا بقاله صغيره, ولدينا انوع من العصيرات كل عصير له سعره المعين , وكل عصير لديه احجام مختلفه , هل نحتاج لان نضع كل عصير في برنامج ؟ وهل لو فعلنا ذلك سوف يعتبر الطريقة الامثل ؟ طبعا لا ,
لكن بمجرد عباره صغيره تسمى IF نستطيع فعل ذلك كله , ولكي تقوم بإستيعاب ذلك بشكل صحيح ارجو منك قراء موضوع المتغيرات والثوابت لكي توضح الصوره. العباره IF هي عباره شرطيه , اي اذا تحقق الشرط المعين افعل كذا وكذا , واذا لم يتحقق افعل كذا وكذا , هذا هو درس اليوم واتمنى لك فرصه سعيده. مهلا , بقي الكثير , وبقي من المتعه طريق طويل , اكيد انك سألت كيف اقوم بكتابة العباره الشرطية , طريقة كتابتها كالتالي
http://arccn.net/images/php/l4e1.gif
مع الامثله سوف توضح الصوره , لنأخذ مثالا حيا على طريقة عمل هذه الداله الشرطيه , وسوف يصل اليك المعنى, تخيل ان لديك كما قلنا بقاله , ولديك منتجات غذائية وتريد ان تعرف هل اخذ المشتري ببسي ام لاو واذا اخذ المشتري ببسي سوف نعمل له تخفيض بمبلغ نصف ريال , هل انت مستعد؟ , افتح محرر الاكواد واكتب التالي :
http://arccn.net/images/php/l4e2.gif
ارأيت السهوله ؟ لاحظ اننا استخدمنا عامل المقارنه ( == ) الذي تكلمنا عنه في الدرس السابق , هذا معناه هل الطرف الايمن يساوي الطرف الايسر ؟ لا تنسى انه يختلف تماما عن العلامه ( = ) لوحدها , فالعلامه ( = ) معناها تعيين او تعبئة متغير بالقيمه
الفلانية , ولكن ( == ) يستخدم لمقارنة الاطراف لنأخذ مثالا بطريقة اخرى , تخيل ان نود ان نعمل تخفيض 10 ريال لكل مشتري قام بشراء بمبلغ اكثر من 100 ريال ؟ فسوف يكون الكود بالشكل التالي
http://arccn.net/images/php/l4e3.gif
الى الان كل شي واضح ؟ اذن تخيل لو كان التخفيض على علبة الزيت و يكون اجمالي السعر 100 ريال ماذا سوف نفعل ؟ شاهد التالي
http://arccn.net/images/php/l4e4.gif
هل وضحت الصوره كامله الان ؟ اعتقد ذلك http://arccn.net/wp-includes/images/...icon_smile.gif . لاحظ انه لو لم يتم تحقق الشرط فلن يتم عمل شي , ولو جربت تشغيل الكود فلن يكون هناك مخرج على الشاشه لو لم يتحقق الشرط
العباره الشرطيه ELSE :
انتهينا من مسألة IF الشرطية , ولكن كل اللي قمنا بفعله محدود اليس كذلك ؟
نستطيع فقط التحكم في شيء واحد http://arccn.net/wp-includes/images/...s/icon_sad.gif , لكن لا تقلق يوجد لدينا العباره ELSE وتعني اذا تحقق هذا الشرط قم بعمل التالي , واذا لم يتحقق قم بعمل التالي , اليس ذلك صحيحا واحتماله كبير ؟ ولكن كيف يتم كتابته ؟ نفس الطريقة الاولى مع اضافة بعض الاسطر البرمجيه لاحظ طريقة الكتابه التاليه:
http://arccn.net/images/php/l4e5.gif
لنقم بتعديل كودنا الاول , انقوم بإخراجه بطريقة افضل من الاولى , اكتب في محرر الاكواد التالي :
http://arccn.net/images/php/l4e6.gif
لاحظ ان المشتري عندما كان خياره ببسي , اجرينا التخفيض وغير ذلك لا نعمل له اي تخفيض , ولاحظ اننا استعملنا معامل المقارنه (( =! )) ويعني انه في حالة عدم طلب هذا النوع قم بالتالي .

العباره الشرطيه ELSEIF :

لنرجع الى تخيالاتنا وهي التي تقوم بكل النتائج , لو اردنا ان نجعل التخفيض في اكثر من جهة , مثلا لو قام المشتري بأختيار ببسي فله تخيض بالقيمه الفلانيه , ولو اشترى ميرندا فله تخيض بالقيمه الفلانيه واذا قام بشراء سفن اب فله التخفيض الفلاني , هل يمكننا عمل ذلك ؟ نعم عن طريق العباره ELSEIF واختلافها عن ELSE انه في ELSEIF يمكنك تحديد شرط ولكن ELSE عامه ولا يوجد بها شروط , تكون كتابتها كالتالي
http://arccn.net/images/php/l4e7.gif
قم بفتح محرر الاكواد واكتب التالي :
http://arccn.net/images/php/l4e8.gif
نستطيع ان نقوم بإستخدام ELSEIF بشكل لا نهائي , يعتمد على استخدامنا وما يتطلبه , ولكن ELSE فقط نستطيع ان نقوم استخدامها مره واحده لانها عامه (( لاحظ في مثالنا قمنا بإستخدام ELSEIF مرتان )) و العباره ELSE مره واحد فقط .
ملاحظه: يمكن استخدام عبارة IF وداخلها IF وداخلها IF واترك لك الباب مفتوح لكي تقوم بإستكشاف ما اعنيه من هذه الملاحظه http://arccn.net/wp-includes/images/...icon_smile.gif ( نفس الشيئ ينطبق على ELSEIF و ELSE )

اسئـــلة على الدرس :
  1. قم بتطوير بقالتنا الالكترونيه , بحيث انه اذا طلب المشتري مشروبات يكون له تخفيض معين على حسب المشروب الذي يقوم بشراءه ( ببسي , ميرندا , سفن اب ) , واذا قام بشراء غير ذلك فلا يوجد له تخفيض معين ( مساعده قم بإستخدام
    IF بداخلها IF وشروطها اللازمه )

الـــدرس الــقادم :

سوف نقوم في الدرس القادم بالتعلم على التكرار في لغة PHP بالتفصيل , انواعها وطريقة كتابتها , واستعمالها مع المعاملات المنطقيه و معاملات المقارنه

قلب., 9 - 11 - 2011 11:17 PM

اهداف الدرس :
  • عبارة التكرار WHILE
  • مثال تطبيقي

عبارة التكرار WHILE :

بعد ان عرفنا العبارات الشريطة وكيفية تحديد مسار برنامجنا , نأتي الان الى عبارات التكرار , وكما يدل اسمها , فإننا نكرر شيء معين ونقوم بتكراره وتكراره, واستخدام هذه العباره له فوائد عديده وكبيره , تخيل ان لديك كود معين وتلاحظ انك تقوم بكتابة هذا الكود اكثر من مره , لكي تصل الى هدف معين , فلماذا لا تختصر الوقت وتجعل الكود يقوم بتكرار نفسه الى حد معين تقوم انت بتحديده , الا يتعبر ذلك اسهل واوفر من ناحية الوقت والتنفيذ ؟ وايضا الجهد الذي ستقوم بتوفيره لاكواد اخرى. ان ذلك لا يعني ان عبارة التكرار سهله او يمكن عملها في لحظات , عبارة التكرار يجب ان تفهم جيدا قبل كتابتها و التفكير في كيفية عملها والناتج الذي نريد الخروج به من عملها. هل تريد مثلالا على ذلك لتوضيح الصوره ؟ تخيل في بقالتنا الالكترونيه المشتري يقوم بشراء اكثر من منتج , ولكي حسابها يجب ان نجمع جميع المنتجات مع بعضها البعض وحساب المبلغ الكلي اليس ذلك صحيحا ؟ سوف نقوم بحسابها بالطريقة التاليه ( المنتج الاول + المنتج الثاني + المنتج الثالث + المنتج الرابع ) سوف نقوم بجمع كل منتج واضافته الى المجموع الكلي لنحصل على الناتج الكلي , اليس ذلك صحيحا ؟ سوف نتعلم كيف استخدام عبارة التكرار هذه ونأخذ عليها امثله كافيه لكي تتضح لك الصوره . طريقة كتابة عبارة WHILE الشرطيه كالتالي
http://arccn.net/images/php/l5e1.gif
لنأخذ بعض الامثله على طريقة كتابة عبارة التكرار WHILE , تخيل انك تريد طباعة
الارقام من 1 الى 5 , كم سطر سيتطلب من كتابته ؟ افتح محرر الاكواد وقم بكتابة كود يطبع من الرقم واحد الى الرقم 5 وقم بعدد الاسطر التي قمت بكتابتها , لاحظ الكود التالي :
http://arccn.net/images/php/l5e2.gif
لقد قمنا بكتابة 13 سطرا لكي نطبع من العدد 1 الى العدد 5 , تخيل لو اردنا الطباعه الى العدد 100 كم سطرا سيتطلب ذلك منا ؟ الا تظن ان ذلك سوف يتعبك بدنيا وعقليا !! وهنا تأتي فائدة عبارة التكرار WHILE لكي تساعدنا على تسهيل كتابة الكود , قم بمسح الكود السابق وانساه للابد وقم بكتابة الكود التالي ولاحظ الفرق :
http://arccn.net/images/php/l5e3.gif
كم سطرا قمنا بكتابته الان ؟ من غير التعليقات فقط 7 اسطر , ومع التعليقات 8 اسطر , فرق 5 اسطر عن الكود السابق , الا يعتبر ذلك انجازا , واذا لم تقتنع حاول ان تقوم بكتابة الاعداد من 1 الى 100 من غير استخدام التكرار , ولكن مع التكرار الذي يمكنك فعله ان تقوم بتغير الشرط من اقل من او يساوي 5 الى اقل من يساوي 100 وسوف يأتيك ناتجك بنفس عدد الاسطر ال7 فقط. اذا لم تقم بفهم كود التكرار سوف اقوم بشرحه لك لكي تضح الصوره. اقرا بتركيز من هنا , اولا : قمنا بتعيين متغير توجد به القيمة 1 واسمه x
وبعد ذلك نقوم بكتابة دالة التكرار وشرطها ان يكون المتغير x اقل من او يساوي 5 , ثم نقوم بطباغة المتغير الموجود لدينا , ونطبع سطر جديد للترتيب , واخيرا نقوم بزيادة المتغير بواحد ونرجع الى الاعلى لنرى هل الشرط صحيح ام لا , اذا كان صحيحا يقوم بفعل الطباعه مره اخرى واذا لم يكن صحيحا يقوم بالخروج من البرنامج. لنقم بالتفكير كمترجم
PHP ونقوم بعمل الكود سطرا سطرا , لاحظ التالي , المتغير x يساوي القيمه 1 , يوجد
لدي عباره تكرار وداخلها شرط وهو ان يكون المتغير x اقل من ويساوي 5 , قيمة المتغير x هي واحد والشرط ان يكون اقل من خمسه هل تحقق الشرط ؟ نعم هو صحيح , اذن ادخل العباره وقم بطباعة المتغير x , اقفز سطرا , قم بزيادة المتغير x بواحد , اصبح الان المتغير x قيمته 2 , ارجع الى الشرط مره اخرى , هل المتغير x اقل من 5 ؟ المتغير هو 2 والشرط هو اقل من ويساوي 5 اذن قم بطباعة المتغير واقفز سطرا وزد المتغير واحد , اصبح الان المتغير x يساوي العدد 3 , ………………………………….. زد المتغير واحد , اصبح الان المتغير يساوي 6 , ارجع الى الشرط , هل المتغير اقل من او يساوي 5 ؟ لا لم يتحقق الشرط اذن قم بالخروج من الكود . ويمكنك خارج حلقة التكرار ان تقوم بطباعة العباره انتهينا لكي تعرف ان التنفيذ تم .
مثال تطبيقي :
سؤال سريع , ماهو ناتج جمع الاعداد من 1 الى 100 ؟ الجواب هو الكود التالي :
http://arccn.net/images/php/l5e4.gif
حاول ان تقوم بقراءة الكود وحاول ان تفهمه جيدا وسوف توضح لك الصوره ماذا لو اردنا ان نجمع الاعداد الزوجيه لوحدها والاعداد الفرديه لوحدها ؟؟ فكر كيف سنقوم بذلك , بسيط جدا http://arccn.net/wp-includes/images/...icon_smile.gif قم بإستخدام العباره الشرطيه IF داخل عبارة التكرار WHILE لاحظ التعديل على الكود وسوف تعرف الطريقه :
http://arccn.net/images/php/l5e5.gif
هل يوجد شيئ صعب في هذاالكود ؟ لا اعتقد ذلك , لان كل ما نقوم بفعله منطقي جدا
ملاحظه: يمكن استخدام عبارة WHILE وداخلها WHILE وداخلها WHILE وداخلها IF وكل شي تريد واترك لك الباب مفتوح لكي تقوم بإستكشاف ما اعنيه من هذه الملاحظه http://arccn.net/wp-includes/images/...icon_smile.gif

اسئـــلة على الدرس :
  1. قم بعمل برنامج لحساب درجات الطلاب , حيث ضع افتراضا عشر درجات لطلاب (
    $student4_grade
    ) (
    $student3_grade )
    ( $student2_grade
    ) (
    $student1_grade )
    ( $student10_grade
    ) …….. (
    $student5_grade )
    وقم بحساب معدل الطلاب عن طريق عبارة التكرار While ( مساعده : معدل الطلاب = مجموع الدرجات ÷ عددها )
  2. قم بالتعديل على برنامج السؤال الاول , حيث تقوم بحساب معدل الدرجات الزوجيه , ومعدل الدرجات الفردية

الـــدرس الــقادم :

سوف نقوم في الدرس القادم بمعرفة معلومات عامه عن الدوال الشرطية , وعبارات التكرار منها SWTICH و FOR وسوف نقوم بمعرفة بعض ملامح ونصائح في لغة PHP

قلب., 9 - 11 - 2011 11:17 PM

اهداف الدرس:
  • المسافات في لغة PHP
  • العباره الشرطية SWITCH
  • عبارة التكرار FOR
  • عبارة التكرار DO…WHILE
  • عبارات داخل عبارات
  • مثال تطبيقي

المسافات في لغة PHP:


كما قلنا في دروس سابقه ان لغة PHP لغه مسامحه , حيث انه توفر لك العديد من المزايا , ولا اعلم بشكل صحيح 100% اذا كانت المسافات تعتبر من الاشياء مسامحه ام لا , ولكن اليك ما اعرفه , في لغة PHP المسافات لا تحسب , اعني بذلك انه عندما تقوم بكتابة الكود فلا يميز المترجم انه هناك مسافات في الكود او لا , بغض النظر عن النصوص عندما تضعها بين علامتي التنصيص ” ” سوف اقوم بكتابة كودين الان , ولاحظ الفرق بينهما , الاول بمسافات والثاني بدون مسافات :
http://arccn.net/images/php/l6e1.gif
وهنا نفس الكود لكن بدون مسافات :
http://arccn.net/images/php/l6e2.gif
قم بتشغيل الكود الاول والثاني , وسوف تلاحظ ان جميع المثالين اخرجا نفس الناتج بغض النظر عن المسافات

العباره الشرطية SWITCH :

تعلمنا في الدرس قبل السابق العباره الشرطيه IF وتوابعها والان سوف نتعلم العباره
SWITCH وهي تعمل بنفس طريقة العباره IF ولكن يتم كتابتها بطريقة اخرى ويتم تنفيذ شرط واحد فقط اما في IF فيمكن كتابة عدة شروط , لنرى كيفية الكتابه , انظر الصوره التاليه :
http://arccn.net/images/php/l6e3.gif
لنقم برؤية مثال على الطبيعه لتعرف كيفية عمل هذه الداله :
http://arccn.net/images/php/l6e4.gif
ارأيت الطريقه ؟ بسيطه اليس كذلك ؟ ولاحظ اننا نعني بأنه يمكن في العباره IF كتابة اكثر من شرط مثل if( $x == 1 && $y == 4 ) ولكن في العباره SWITCH يمكننا فقط مقارنة متغير واحد فقط switch ( $ x ) , وايضا يمكن ان تقوم بألغاء اخر سطرين ( في الصوره سطر رقم 18 و 19 ) ولا يتوجب كتابتها وهي تعني ( ELSE ) اي غير ذلك ( حينما لا يتحقق اي شرط من الشروط ) , وايضا يجب ان تتذكر انه دائما يجب عليك كتابة العباره BREAK بعد نهاية كل CASE في العبارة SWITCH ولا يتوجب وجودها في السطر الذي يحوي DEFAULT

عبارة التكرار FOR :

هناك عبارة تكرار اخرى غير العباره WHILE وهي العباره FOR , وتستخدم دائما اكثر من العباره WHILE لان ديناميكيتها اكبر من WHILE ولكن ناتج عمل الاثنين واحد , واذا عملت عباره بالاولى يمكن عملها بالثانيه والعكس , ولا يوجد ناتج تقوم بعمله في الاولى ولا تستطيع ان تقوم به في الثانيه , والقرار في الاخير يرجع الى المبرمج , لنرى طريقة الكتابه وهي كالتالي :
http://arccn.net/images/php/l6e5.gif
مثال على العباره , لنقم بالعد من 1 الى خمسه , مثلما فعلنا مع العباره WHILE ونرى ماهي الاختلافات :
http://arccn.net/images/php/l6e6.gif
في هذه المره قمنا بعملها فقط ب 5 اسطر , هل لاحظت الفروقات الان ؟ الفرق الاول في العباره WHILE اننا نحدد المتغير في البدايه , وزيادة المتغير داخل العباره, اما في العباره FOR فاننا نستطيع فعل ذلك كله بين القوسين التي يوجد بها الشروط , ونترك باقي العمل الى FOR , لا تنسى ان $i++ هي نفسها $i = $i + 1

عبارة التكرار DO…WHILE :

تختلف عبارة التكرار هذه عن اختها WHILE انها تقوم بتنفيذ الامر اولا , ثم بعد ذلك تقوم بمقارنة الشرط , وطريقة كتابتها كالتالي :
http://arccn.net/images/php/l6e7.gif
لنقم مره اخرى بكتابة الاعداد من 1 الى عشره ونرى الاختلاف , اكتب في محرر الاكواد التالي:
http://arccn.net/images/php/l6e8.gif
هل لاحظت الاختلاف ؟ فقط انه قمنا بطباعة العدد قبل التحقق من الشرط , والتغيير طفيف ويستخدم عند الحاجه , لا تقلق في التطبيقات المتقدمه سوف نشاهد بعض من هذه الحيل البرمجيه, ملاحظه : لا تقم ابدا بنسيان الفاصله المنقوطه بعد كتابة الشرط , والا سوف يكون هناك خطأ برمجي في الكود http://arccn.net/wp-includes/images/...icon_smile.gif

عبارات داخل عبارات :

كما قلنا في دروس سابقه , يمكننا ادراج عبارات داخل عبارات , اي انه يمكنك كتابة العباره FOR وداخلها العباره FOR , او العباره WHILE وداخلها العباره FOR وداخلها IF كل ذلك سهل جدا , ويحتاج الى قليل من التركيز , سوف نقوم الان بعمل مثال تطبيقي يحتوي على عبارة تكرار وداخلها عبارة تكرار , لنقم بعمل جدول الضرب ونحاول مع بعضنا البعض كتابة الكود , لنقم بتسهيل الامر , قم بفتح برنامج Microsoft FrontPage في جهازك وقم بكتابة جدول الضرب العدد 2 من ( 1 – 5 ) , انظر الشكل التالي:
http://arccn.net/images/php/l6e9.gif
وعند مشاهدة محتوى كود ال HTML سوف ترى التالي :
http://arccn.net/images/php/l6e10.gif
الان قم بالتركيز معي لكي توضح الصوره , لو نظرت الى الكود بالاعلى تجد انه HTML فقط وتجد انه مكرر كثيرا , وانت تحتاج الى استخدام عبارات التكرار لتقم بتسهيل الموضوع على نفسك , اذن يجب ان تكتشف اماكن التكرار , دقق في الكود وحاول ان تعرف اماكن التكرار ……….. هل عرفت الاماكن ؟ انظر الى الكود التالي وسوف احدد لك اماكن التكرار
http://arccn.net/images/php/l6e11.gif
انظر الى الخطوط السوداء , ترى ان الوسم <tr> و الوسم </tr> يتكرران في كل مره ننشئ بها صف ( ROW ) جديد , اذن الان نحتاج الى دالة تكرار ونحتاج ان تقوم بالتكرار 5 مرات لاننا نريد جدول الضرب للعد 2 من ( 1 الى 5 ) ( قم بعد الخطوط السوداء وسوف تجد انها 5 خطوط ) , لكي نقوم بتكرار الاصفف , افتح محرر الاكواد واكتب التالي :
http://arccn.net/images/php/l6e12.gif
الان لقد عرفنا كيفية تكرار الاصفف , اذن لنظر الى صورة كود HTML مره ثانيه , وقم بالبحث عن تكرار جديد , اذا لم يوجد , فقد انتهينا , وان وجد فنحتاج الى ان نقوم بكتابة دالة التكرار مره اخرى , …………….. هل عرفت مكان التكرار الاخر ؟ انظر الى الصوره لترى اين هو
http://arccn.net/images/php/l6e13.gif
لاحظ هنا ان الوسم <td> و </td> يتكرر في كل مره نكتب بها عدد جديد , والوسم <TD> هو لكتابة الخلايا في الجدول , تكرر الوسم عندنا , وفي كل مره نقوم بكتابة الخليه مرتان , اذن نحتاج ان نقوم بالتكرار مرتان ( لاننا نريد جدول الضرب للعدد 2 ) , ارجع الى محرر الاكواد واكتب التالي ( بين وسم <tr> و </tr> ) ,
http://arccn.net/images/php/l6e14.gif
ما قمنا به هنا , اننا قمنا بتكرار الوسوم <td> على حسب العدد الذي نريد انشاء عملية الضرب له , لاحظ ان المتغير x شرطه ان يكون اقل من او يساوي العدد 2 لكي يستمر في التكرار , ولاحظ هنا اننا نقوم بعملية ضرب المتغير x والمتغير y في مكان كتابة محتوى الصف , لكي نقوم بكل شي تلقائيا , قم بتشغيل الكود وسوف يكون الناتج التالي :
http://arccn.net/images/php/l6e15.gif
ارأيت الان قمنا بكتابة جدول الضرب للعدد 2 بمجرد عبارتين تكرار صغيره http://arccn.net/wp-includes/images/...icon_smile.gif ممتع جدا اليس كذلك ؟ لكن لم ننتهي بعد , لو نظرت الى كود ال HTML ترى اننا نريد كتابة العباره التاليه في الجدول ( مضروب في ) , لكي نقوم بإخراج الجدول بشكل افضل , انظر الى الصوره وستعرف ما اعنيه
http://arccn.net/images/php/l6e16.gif
كيف نقوم بذلك في دالتين التكرار , قم بوضع يدك على رأسك واستغرق في التفكير لمدة دقيقتان وانت تنظر الى الكود , واسأل نفسك , كيف سأقوم بعملها , وسوف يأتيك الجواب كالتالي , نقوم بكتابة العباره ( مضروب في ) في اول وسم <td> وفي اول وسم <tr> , يعني عندما يكون المتغير x يساوي 1 وعندما يكون المتغير y يساوي 1 , قمنا بحل المشكله وما نحتاجه هو عبارة IF الشرطية ويكون شرطها انه عندما يكون المتغير x يساوي 1 و المتغير y يساوي واحد , لا تقم بضرب المتغيرين بل قم بكتابة العباره ( مضروب في ) غير ذلك قم بضرب المتغيرين مع بعضهمها البعض , اذن ارجع الى محرر الاكواد وقم بتعديل الكود الى التالي:
http://arccn.net/images/php/l6e17.gif
وفي النهايه سوف يكون ناتج عملك الرائع هو الجدول التالي ,
http://arccn.net/images/php/l6e18.gif
اتمنى ان يكوني شرحي جعلك تفهم هذه النقاط جيدا , ولا تنسى انه يجب ان تقوم بمحاولة عمل اشياء انت تريدها , ولا تحصر التمارين على ما تراه هنا , لكي تقوم بالتوسع في البرمجه http://arccn.net/wp-includes/images/...icon_smile.gif

اسئـــلة على الدرس :

  1. قم بتعديل جدول الضرب في الاعلى , واجعله للعدد 2 و 3 و 4 و 5 و 6 و 7 و 8 و 9 و 10 , واجلعه يقوم بالضرب من العدد ( 1 – 10 ) مثل جدول المدارس http://arccn.net/wp-includes/images/...icon_smile.gif مساعده : الحل يكمن في الشروط

الـــدرس الــقادم :

سوف نقوم في الدرس القادم بمعرفة معلومات عن بعض الدوال المفيده , ومعلومات عن الوسوم , وكتابة PHP مع HTML لكي تستعد الى الدخول الى عالم النماذج .

قلب., 9 - 11 - 2011 11:18 PM

اهداف الدرس :
  • عبارة IF بطريقة اخرى
  • بداية وسوم العبارات ونهايتها
  • العباره EXIT
  • العباره CONTINUE
  • لغة PHP مع HTML بطريقة اوسع
عبارة IF بطريقة اخرى :

يمكنك كتابة العباره IF بطريقه اخرى , او نستطيع ان نقول طريقه اسرع , ويمكننا استعمالها عن طريق العباره التاليه ( ؟ ) , لم توضح الصوره كامله ؟ لنقم برؤية كيفية كتابتها , شاهد التالي :
http://arccn.net/images/php/l7e1.gif
الان تمعن في المثال التالي وسوف يمكنك ان ترى ان طريقتها سهله , افتح محرر الاكواد واكتب مايلي :
http://arccn.net/images/php/l7e2.gif
لاحظ هنا اننا نعرف متغير اسمه x ثم نقوم بمقارنة هذا المتغير , ونرى انه اذا يساوي 1
فكتب العباره ( one ) واذا لم ياسوي واحد فاكتب العباره ( Two ) , وكل هذا السطر البرمجي نضعه في المتغير $result , وذلك لان ناتج هذه العباره سوف نجعله في المتغير $result , ارأيت سهولة الكود ؟ جرب وحاول ان تغير كود من دروسنا السابقه بهذه الطريقة , ولاحظ الناتج , وسوف ترى انه نفس الناتج

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

تعلمنا فيما سبق , انه اذا اردنا ان نقوم بكتابة الدوال فيجب علينا ان نستخدم الوسم ( }و { ) اليس ذلك صحيحا ؟ ولكن هناك طريقة اخرى لا نكتب بها الوسوم هذه وهي عندما يكون متضمن الجمله الشرطيه سطر واحد فقط , شاهد المثال التالي :
http://arccn.net/images/php/l7e3.gif
ولا يوجد هناك اختلاق اذا قمت بكتابة الوسوم ام لا اذا كان سطر واحد فقط , ولكن اذا كان محتوى العباره اكثر من سطر واحد , حينها يتوجب عليك ان تقوم بكتابة وسوم البدايه والنهايه

العباره EXIT :

تستخدم العباره exit للخروج من محتوى وسوم ( { و } ) , واعتقد انه لا تحتاج الى شرح مطول, فما تفعله هذه العباره هو ان تقوم بأخراجك من كود ال PHP كاملا , انظر الى الكود التالي
http://arccn.net/images/php/l7e4.gif
لاحظ انه هنا لم يقم بطباعة العبارة ( ARCCN ) مع ان العباره خارج الشروط , ويجب ان تنفذ , ولكن مع استخدام العباره EXIT قمنا بالخروج من كود PHP كاملا ( لم نخرج من العباره فقط )

العباره CONTINUE :

العباره continue سهله ايضا , وماتقوم به هو ان تقوم بإخراج من التكرار لمرة واحده في عبارة التكرار , كلام مبهم وغير واضح اليس كذلك ؟ ما اعنيه هنا , تخيل اننا نقوم بالتكرار 5 مرات , ونريد في المره الثالثه ان نخرج من التكرار ( لا نخرج من التكرار كاملا ) , فقط من التكرار رقم 3 , عند ذلك يمكننا استخدام العباره CONTINUE , لنأخذ مثالا على ذلك لتوضيع الصوره , معروف لدينا ان لا يمكن القسمه ابدا على العدد ( 0 ) اليس ذلك صحيحا ؟ تخيل انا اردنا ان نقوم بقسمة العدد 4 على ( 4 الى -4 ) ونريد ان نفعل ذلك بإستعمال اداة التكرار , ولكن نريد ان نخرج من التكرار عندما يكون معامل القسمه ( 0 ) فما نفعله هو التالي , افتح محرر الاكواد وقم بكتابة ما يلي :
http://arccn.net/images/php/l7e5.gif
لغة PHP مع HTML بطريقة اوسع :
رأينا في كثير من الامثله , اننا نقوم بكتابة كود ال HTML خارج كود لغة PHP , كمثالنا في جدول الضرب , وايضا يمكننا ان نقوم بكتابة لغة HTML مع لغة PHP واقصد بذلك استخدام العباره echo او print لنقوم بإخراج كود HTML , قم بمشاهدة المثال التالي , ( جدول الضرب معدل ) :
http://arccn.net/images/php/l7e6.gif
فقط يجب عليك ان تقوم بكتابة العباره echo او print في سطر ال HTML وان تضع علامتي التنصيص ” ” بين بداية ونهاية الكود . تذكر دائما ان عندما يكون هناك العلامه ( = ) في كود HTML يجب ان تقوم بوضع علامة \ قبل كل ” , لاحظ الكود في الاعلى , ما اقوم به هو ان اضع العلامه \ قبل ” انظر الى الكود التالي:
http://arccn.net/images/php/l7e7.gif

قلب., 9 - 11 - 2011 11:21 PM

النماذج ( FORMS ) :

عندما تقوم بإنشاء بريد الكتروني جديد لدى الياهو , او الهوتميل , يتوجب عليك ان تقوم بتعبئة نموذج التسجيل , الذي يتضمن الاسم وكلمة المرور والبريد المراد انشائه , كل هذا نقوم عمله عن طريق النماذج ( FORMS ) واتوقع ان لديك شوق كبير لكي تقوم بفعل مثل هذه الامور في كود او برنامجك او موقعك البرمجي قريبا http://arccn.net/wp-includes/images/...icon_smile.gif , اذا ما نقصد به بي النماذج هو ان تقوم بتعبئة نموذج بمعلومات مطلوبه , ثم ارسالها . واعتقد انك لاحظت ان بعض النماذج تحتوى على انواع كثيره , مثل مربعات الكتابه , مربعات النصوص الكبيره , مربعات الاختيار , ازرار الاختيار , حقول الاختيار , كل هذا سوف نقوم بتعمله معا وسوف يكون بوابة البدايه لعمل موقعك بلغة PHP
كيفية كتابة النماذج :
بما انك ايها الزائر الكريم مبتدئ في لغة PHP , فما انصح به هو , ان تقوم دائما بإنشاء النماذج عن طريق برنامج Microsoft FrontPage , ثم بعد ذلك عمل نسخ لكود HTML
ولصقه في محرر اكواد لغة PHP , وتقوم بعدل ذلك ما قمنا بعمله في الدروس الاولى , اما ان تجعل كود HTML او ان تجعله مدمج مع لغة PHP , لنأخذ بعض الامثله على ذلك ,
انظر الى التالي:
المثال الاول :
http://arccn.net/images/php/l8e1.gif
لنقم بشرح ماتؤشر عليه الارقام لكي تقوم بفهم ما تحويه النماذج ,
1 – نوع ارسال البيانات , هل بطريقة POST او الطريقة GET وسوف نقوم بشرح ذلك كله بعد قليل
2 – الى اين يؤدي هذا النموذج , وفي مثالنا هذا , يؤدي الى صفحه PHP تسمى
result.php
3 – ماهو نوع المدخل , هل هو مربع كتابه ( text ) او مربع نصوص ( text area ) او مربع اختيار ( check box ) او زر اختيار ( radio ) او حقل اختيار ( option )
4 – ماهو اسم النموذج , بمعنى اخر ماهو اسم المتغير للنموذج , لاحظ ان اسم المتغير هنا هو name وفي السطر الذي تحته اسم المتغير هو email وسوف تقوم بفهم هذا لاحقا
5 – ماهو محتوى النموذج , او لنقل قيمة المتغير , فلو وضعنا في مدخل name
العباره value = “arccn” بعد name=”name” سوف تجد انه يكتب افتراضيا داخل المربع الكتابه arccn
الذي رأينها في الاعلى هو عبارة عن كود HTML خارج كود PHP , وعند استخدامنا هذا الكود بداخل لغة PHP فسوف يكون بالشكل التالي :
http://arccn.net/images/php/l8e4.gif
انواع ارسال البيانات :
لقد ذكرت سابقا ان نوع ارسال البيانات بطريقين ( الاغلب استخداما ) وفي POST
و GET , طبعا يوجد طرق ارسال اخرى ولكن تستخدم نادرا جدا , وعند مشاهدة الكثير من الاكواد ما سوف تقوم بمشاهدته اما الطريقه POST او الطريقه GET
النوع GET :
النوع GET يمكنك تمييزه عندما تقوم بإرسال شي عن طريق نموذج , فإنك سوف ترى في العنوان الصفحه التي ستذهب اليها ثم العلامه ( ؟ ) متبوعه بإسم المتغير ثم العلامه ( = ) ثم بعد ذلك القيمه الموجوده بالمتغير , واذا قمت بالتفكير قليلا , فلن تعتقد ان هذه الطريقه تصلح لارسال اسم مستخدم وكلمة مرور او رقم بطاقة دفع الكترونيه عبر المتصفح , وذلك لانه يمكن لاي شخص يجلس بجانب المستخدم ان يرى محتوى الارسال
مثال على العنوان الذي سيظهر بالمتصفح هو التالي :
http://arccn.net/images/php/l8e2.gif
لاحظ هنا انك تريد الذهاب الى الصفحه module.php , وتقوم بأعطاء الصفحه المتغير name ويحتوي News ثم بعد ذلك الرمز ( & ) ويعني انه يوجد متغير اخر ايضا , ثم المتغير new_topic ويحتوي على الرقم 2
النوع POST :
النوع POST يمكنك معرفه انه يستخدم في هذه الصفحه , عندما تقوم بإرسال معلومات الى صفحه اخرى , ولا تجد في العنوان الرمز ( ؟ ) وبعده بعض المتغيرات , وانما فقط اسم الصفحه , والخفايا تحصل بين الصفحات ولا يمكنك مشاهدتها ( ولا يعني ذلك انه دائما عندما لا يوجد الرمز ( ؟ ) نقوم بإستخدام الطريقة POST , بل في معظم الاحيان
مثال على العنوان الذي سيظهر بالمتصفح هو التالي :
http://arccn.net/images/php/l8e3.gif
لو تتمعن في العنوان , فلن تجد ما رأينها في الطريقة GET ولا يمكنك تحديد هنا انه قمنا بإرسال بيانات الى الصفحه module.php ام لا
الفروقات بين GET و POST :
قد تقوم بسؤال التالي , متى استخدم GET ومتى استخدم POST , هناك بعض من الفروقات بين الطريقتين , اولها ان الطريقه POST يوجد بها حمايه اكثر من الطريقه GET , كما رأيت سابقا لا نقوم بطباعة المتغيرات في المتصفح. ثانيا الطريقه POST تقوم بإرسال بيانات بكمية اكبر من الطريقة GET . مثلا , لو تقوم بإرسال رقم بطاقه ائتمانيه او كلمة مرور المستخدم فلا اعتقد انك سوف تستخدم الطريقة GET , اتوقع انك تعرف لماذا. عموما الطريقه GET تستخدم في معظم الاوقات للاستعلام عن بيانات , والطريقة POST تستخدم لادخال بيانات او تحديث البيانات. ثالث فرق هوه ان الطريقه GET اسرع من الطريقه POST , لذلك نراها تستخدم في محركات البحث مثل google و yahoo و msn
وغيرها. ليست هذه كل الفروق بين العبارتين ولكن تعتبر هذه الفروق الاساسيه , وما تحتاج معرفته حاليا
الـــدرس الــقادم :

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

قلب., 9 - 11 - 2011 11:23 PM

اهداف الدرس:
  • انواع مدخلات النماذج
  • نوع الكتابه ( text )
  • نوع ازرار الاختيار ( radio )
  • نوع مربع الاختيار ( check box )
  • نوع قائمة الاختيار ( select )
  • نوع حقل النصوص ( textarea )
  • نوع زر الارسال ( submit )
  • مثال تطبيقي
  • نوع كلمة المرور ( password )

انواع مدخلات النماذج :


كما قلنا سابقا , لدينا انواع كثيره تستخدم في النماذج ودرسنا لهذا اليوم سنتناول الاساسيه منها مثل الكتابه , وازرار الاختيار , ومربع الاختيار , ونوع حقل النصوص. قم بالتخيل معي والتذكر عندما قمت بتسجيل بريد الكتروني على موقع الياهوو , او الهوتميل , كان يطلب منك تعبئة الكثير من البيانات , مثل اسمك الاول واسم العائله , اللغه , الجنس , تاريخ الميلاد وغيرها , انظر الى الشكل التالي ( جزء من نموذج التسجيل في بريد الهوتميل ) لتساعد ذاكرتك بالتذكر :
http://arccn.net/images/php/l9e1.gif
لنقم بمعرفة ما يحتويه النموذج السابق , تابع الارقام ولاحظ التالي :
1 – مربع كتابه ( text ) لتكتب به اسمك الاول
2 – قائمة اختيار ( select ) لتقوم بإختيار اللغه منها
3 – ازرار اختيار ( radio ) لتقم بإختيار الجنس
————————————————–

لنقم برؤية الانواع الاخرى ,

مربع الاختيار :
http://arccn.net/images/php/l9e2.gif
حقل النصوص :
http://arccn.net/images/php/l9e3.gif

نوع الكتابه ( text ) :

هذا النوع لكتابة النصوص القصيره , مثلما رأينا في الاعلى , الاسم , او البريد الالكتروني وغيرها , كيف نقوم بإنشاء هذا النوع , افتح محرر الاكواد وقم بكتابة التالي :
انقر على الصوره لتكبيرها

http://arccn.net/images/php/l9e4.gif

ازرار الاختيار ( radio ) :

هذا النوع يكون لاختيار من بعض المعلومات المتوفره , مثلا الجنس , ذكر او انثى , ارجع الى محرر الاكواد واكتب التالي ( اكمل على الكود السابق ) :
انقر على الصوره لتكبيرها

http://arccn.net/images/php/l9e5.gif
لاحظ في استخدامنا للكود استخدمنا الكلمه ( checked ) , وهذا معناه انه عندما تقوم برؤية الصفحه , سوف يكون هذا الاختيار معلم

نوع مربع الاختيار ( check box ) :

هذا النوع يمكنك من اختيار اكثر من خيار في وقت واحد , مثل الهوايات , او مواصفات معينه تريدها في سيارتك المستقبليه , ارجع الى محرر الاكواد واكتب التالي ( اكمل على الكود السابق ) :
انقر على الصوره لتكبيرها

http://arccn.net/images/php/l9e6.gif

نوع قائمة الاختيار ( select ) :

هنا , تستطيع اختيار شيئ , من اشياء موجوده مسبقا , مثل اللغه الافتراضيه , هل تريدها العربية او الانجليزية , ولدينا نوعان منها :
النوع الاول : اختيار شيء واحد فقط ( يمكن اختيار شيء واحد فقط من الموجود ) , ارجع الى محرر الاكواد واكتب التالي ( اكمل على الكود السابق ) :
انقر على الصوره لتكبيرها

http://arccn.net/images/php/l9e7.gif
النوع الثاني : اختيار اكثر من شيئ في وقت واحد ( يمكن اختيار اكثر من شيئ واحد من الموجود ) , ارجع الى محرر الاكواد واكتب التالي ( اكمل على الكود السابق ) :
http://arccn.net/images/php/l9e8.gif
لاحظ هنا اننا جعلنا الاختيار يكون اكثر من واحد عن طريق الكلمه ( multiple )

نوع حقل النصوص ( textarea ) :

في هذا النوع , نقوم بجعل المستخدم يقوم بكتابة كلمات كثيرة , مثل معلومات شخصيه عن نفسه , او رساله يحب ان يوجهها الى الموقع ( اذا كنت تكتب في منتديات فمكان كتابة محتوى الموضوع يعتبر حقل نصوص ) , ارجع الى محرر الاكواد وقم بكتابة التالي , ( اكمل على لكود السابق ) :

زر الارسال ( submit ) :

بعدما ينتهي المستخدم من تعبئة البيانات المتطلبه , يجب ان يكون هناك ازرار يقوم بالنقر عليه لكي نتحقق من صحة البيانات , او لنقوم بتسجيله لدينا او غير ذلك , ارجع الى محرر الاكواد وقم بكتابة التالي ( اكمل على الكود السابق ) :

مثال تطبيقي :

الان قم بحفظ الملف وقم بتشغيله , ولاحظ ان ناتجك سوف يكون التالي :
http://arccn.net/images/php/l9e11.gif

نوع كلمة المرور ( password ) :

ترى في كثير من المنتديات , او عندما تقوم بتسجيل الكتروني جديد , انه عندما تختار كلمة المرور ,لا تظهر كلمة المرور , وانما تظهر على شكل كرات سوداء , اليس ذلك صحيحا ؟ فكيف نقوم بعمل هذا النوع ؟ الطريقه هي كالتالي :
http://arccn.net/images/php/l9e12.gif
فقط في نوع النموذج نكتب العباره password وسوف نحصل على حقل لكلمة المرور

سؤال على الدرس :


قم بكتابة الكود السابق كاملا ( النموذج ) عن طريق دمجه مع لغة PHP , في الاعلى قمنا بكتابته ب كود HTML ومنفصلا عن PHP , حاول الان كتابته مع PHP ( راجع الدرس السابع )


قلب., 9 - 11 - 2011 11:23 PM

اهداف الدرس :
  • ارسال البيانات الى صفحه اخرى
  • التحقق من ان جميع البيانات ممتلئه
  • طباعة البيانات الى المتصفح
  • مثال تطبيقي ( عمل نموذج تسجيل دخول )

ارسال البيانات الى صفحه اخرى
:

بعد عملنا لنموذج المعلومات الشخصيه (اذا لم تستطع عمله , اضغط هنا لتحميل نموذج المعلومات الشخصيه ) , نريد ان نرسل هذه البيانات الى صفحه اخرى , لنقوم بمشاهدة هذه البيانات او معالجتها او اي شي اخر , فكيف يتم فعل ذلك , كما تعلمنا سابقا , يمكننا فعل ذلك عن طريق تحديد الصفحه المراد الذهاب اليها في ( FORM ) , لاحظ المثال التالي , ( في مثالنا سوف نذهب الى الصفحه view.php ) :
هذا المثال مدمج مع كود PHP
http://arccn.net/images/php/l10e1.gif
هذا المثال كود HTML فقط
http://arccn.net/images/php/l10e2.gif
لاحظ انه هنا نقوم بالذهاب الى صفحه اخرى , ولكن اذا اردنا الذهاب الى الصفحه نفسها
( طريقه اخرى ) قم بكتابة نفس الصفحه , او العباره $PHP_SELF , وهي تؤدي نفس الغرض ( اذا كان نفس الصفحه ) وسوف اشرح لك هذه العباره لاحقا

التحقق من ان جميع البيانات ممتلئه :

الان لنأتي الى متعة عمل لغة PHP , في نموذجنا , نريد ان نتحقق اذا كان المستخدم قد قام بكتابة جميع البيانات المطلوبه ( كلها ) , اذن انشئ صفحه PHP اسمها view.php , ولنقم بفعل ذلك خطوة خطوة , اولا نريد ان نتحقق من ان المستخدم قام بكتابة اسمه الاول واسم العائله والبريد الالكتروني اكتب في محرر الاكواد التالي :
http://arccn.net/images/php/l10e3.gif
لو قمت بالملاحظه , فإننا نستخدم اسماء المتغيرات التي انشئناها في النموذج , (
fname & lname & email ) , اليس ذلك صحيحا ؟ لنكمل التحقق من النموذج
http://arccn.net/images/php/l10e4.gif
http://arccn.net/images/php/l10e5.gif
الان قم بتشغيل ملف النموذج , ولا تقم بكتابة اي شي , فقط اضغط على زر ( ارسال ) , وسوف تجد ان الصفحه تكتب ما يلي :
http://arccn.net/images/php/l10e6.gif
قد تقول لنفسك , هناك شيئ غير منطقي , وهو اننا طبعنا العباره ( الرجوع الى الخلف ) اكثر من مره ( لكل نوع لم يتم تعبئته ) اليس ذلك صحيحا , ؟ اذن كيف نتخلص من ذلك ؟ نتخلص منه عن طريق العباره exit التي وسبق ان قمنا بمعرفتها في الدرس الدرس
السابع: متفرقات عن لغة PHP
, نكتب العباره exit , كالتالي :
http://arccn.net/images/php/l10e7.gif
الان عندما ينسى المستخدم , سوف يأتي له اي نوع قام بنسيانه فقط , واحدا تلو الاخر , فلو نسي المستخدم كتابة الاسم الاول والاسم الثاني , سيظهر له انه نسي الاسم الاول فقط , هذا ما اعني به ( واحدا تلو الاخر ) .

طباعة البيانات الى المتصفح :

الان , نريد ان نقوم بطباعة ما اختاره المستخدم وعرضه على الشاشه , نفعل ذلك بالطريقه التاليه , افتح محرر الاكواد ( اكمل على الكود السابق ) واكتب التالي :
http://arccn.net/images/php/l10e8.gif
قد تسأل التالي :
لماذا لم اضع IF شرطيه ( شرطها اذا قام بتعبئة جميع الانواع ) قم بكتابة هذا الكود بداخلها , والجواب هو , لانه استخدمنا العباره exit , فلو لم تملئ جميع الحقول سوف يقوم بالخروج من كامل الكود , ولن يقوم بالنظر الى كود الطباعه . ولكن اذا اردت يمكنك استخدام عباره IF يوجد بها الشرط التالي , وفي حالة تحققه يقوم بطباعة جميع محتويات المتغيرات التي قمنا بكتابتها , الشرط هو :
if( $fname && $lname && $email && $sex &&
$lang && $skill && $info && ( $read || $write || $draw || $prog ) )
وسوف يقوم بفعل نفس الشيئ , وبيدك الاختيار http://arccn.net/wp-includes/images/...icon_smile.gif
هناك ملاحظه اخرى , انا متأكد انك قمت بملاحظتها , وهي ان المتغير SKILL , لم يقم بطباعة جميع المهارات التي قمت بإختيارها ( يمكنك اختيار اكثر من مهاره ) , لماذا ؟ الجواب هو لانه يجب ان يكون مصفوفه , وسوف نتطرق للمصفوفات لاحقا وسوف تقوم بمعرفتها بالكامل , ولكن لا تتعجل , فالطريق امامنا طويل جدا http://arccn.net/wp-includes/images/...icon_smile.gif
قم بتحميل هذا التطبيق كاملا من هنا
مثال تطبيقي ( عمل نموذج تسجيل دخول ) :
هل قمت بعمل ما فعلناه سابقا ؟ هل قمت بإستيعابه ؟ اذن لنقم بعمل نموذج تسجيل دخول , مثل الدخول الى بريدك الالكتروني , او لوحة التحكم الخاصه بك في احد المنتديات , قم بعمل نموذج لتسجيل الدخول كالتالي :
http://arccn.net/images/php/l10e9.gif
لا تنسى كيفية كتابة حقل كلمة المرور راجع الدرس التاسع: انواع النماذج وطريقة كتابتها , الان لننظر الى ملف PHP ولنرى كيفية التأكد من صحة كلمة المرور ( لنفرض ان اسم المستخدم هو ارسن ) و ( كلمة المرور هي 123 ) افتح محرر الاكواد واكتب التالي :
http://arccn.net/images/php/l10e10.gif
لاحظ ان اسماء المتغيرات في النموذج هي ( user ) و ( pass )

سؤال على الدرس :

قم بعمل نموذج تسجيل مستخدم جديد , سهل جدا فقط قم بالتفكير قليلا ويمكن عمله , لا تنسى انه يجب على المستخدم كتابة كلمة المرور مرتان للتأكد من صحتها , ولا تنسى ان تقوم بالتحقق من ان جميع البيانات المدخله كامله , واترك الخيال الفكري في هذا النموذج لك عزيزي الزائر http://arccn.net/wp-includes/images/...icon_smile.gif ( مساعده : pass1 و pass2 في النموذج )


قلب., 9 - 11 - 2011 11:24 PM

  • اعادة استخدام الكود
  • ادراج الملفات
  • الداله require
  • الداله include
  • لماذا احتاج الى الدوال ( functions )
  • الدوال ( functions )
  • استخدام ادراج الملفات مع الدوال

اعادة استخدام الكود :

ماذا نعني بإعادة استخدام الكود ؟ لنذهب بعيدا عن البرمجه وعن الدنيا بشكل اوسع , نجعل مخيلاتنا تتحكم بنا لمدة دقيقتان , لماذا نعيد استخدام شي معين ؟ اننا نعيد استخدامه لانه مفيد جدا اليس كذلك ؟ لو كنت طالب في احدى المدارس مثلا , لديك شنطه تضع بها كتبك الدراسيه , احببت هذه الشنطه , الجوده , التحمل , القيمه , تستخدمها كل سنه وكل ترم في الدراسه , وقت الاجازات تهملها , ولكن قد تستعملها لتضع ملابس السباحه اذا اردت الذهاب الى النادي , تستخدمها لحفظ اشياء القيمه , لست طالبا ؟ لنقل انك معلم , لديك بعض من شروحات الدروس على الكمبيوتر , تستخدمها في كل سنه , تغير المنهج الذي تقوم بتدريسه او اصدرت نسخه جديده , لن تقوم بمسح جميع شروحاتك , بل سوف تقوم بتعديل اللازم. لنرجع الان عالمنا ونعيد السؤال لماذا نحتاج الى اعادة استخدام الكود, تخيل انك تعمل في شركه, والشركه لديها موقع وانت المسؤول عنه , رأس صفحات الموقع كلها نفس الشي , ذيل صفحات الموقع كله نفس الشي , مرت الايام كبرت الشركه وزاد عدد الصفحات الى اكثر من 100 صفحه , جاء اليك المدير طالبا بإضافة البريد الالكتروني في رأس كل صفحه من صفحات الموقع , او طلب تغييرات طفيفه ؟ ماذا سوف تفعل ؟ مجهود كبير اليس كذلك ؟
مفهوم اعادة استخدام الكود يعتبر هدف من اهداف هندسة برمجيات الكمبيوتر , ليس ذلك لانهم كسولين ولا يحبون العمل او كتابة الاكواد , ولكن لانه الافضل من نواحي كثيره , من حيث القيمه , من حيث الاعتماد على الكود , من حيث التماسك ولكل منها كلام يطول , ويمكن البحث في google او في MSN بكتابة العباره التاليه :
( why reuse code in programming ).
ادراج الملفات :
قرأت قبل قليل مثال عملك في الشركه , والموقع الذي اصبح عباره عن 100 صفحه , كيف يمكنك التغلب على هذه المشكله , هنا تأتي فائدة ادراج الملفات , لنقم بحل المشكله , عند دخولنا لمنتديات وحتى شبكة ارسن , تجد ان جميع الصفحات لها رأس واحد ( header ) ولها ذيل واحد ( footer ) والاختلاف دائما يكون في محتوى الصفحه ( في النصف ) وهذا ما نسميه ( body ) , لنقم بمشاهدة مثال على ذلك , انظر التالي :
http://arccn.net/images/php/l11e1.gif
الان لدينا , رأس وذيل ومحتوى , الرأس والذيل ثابتين لا يتغيرون في جميع الصفحات , ولكن المحتوى يتغير , مره تظهر اخبار , ومره يظهر تصويت , ومره يظهر معلومات عن الشركه , الان تخيل ان هذا هو موقع الشركه , ولديك 100 صفحه , والمدير فرض عليك عليك ان تقوم بتغيير الشعار من ( درسي … اونلاين ) الى ( برمجتي … اونلاين ) , ماذا ستفعل ؟ ستقوم بتغيرر جميع الصفحات وكم سيأخذ هذا من الوقت , لكن تخيل ان هذه منفصله , الرأس لوحده , والذيل لوحده , وفي كل صفحه نقوم بإدراجهمها ( يعني انه لدينا ملف واحد به الرأس ) و ( ملف واحد به الذيل ) اذا سوف نقوم في اي صفحه بإدراج هذين الملفين في الاعلى والاسفل , وعندما نريد ان نقوم بتغير الرأس او الذيل فإننا نقوم بتغيير الملف الرئيسي الموجود به الرأس او الذيل , وسوف تتغير جميع الصفحات http://arccn.net/wp-includes/images/...icon_smile.gif . لنرى الان كيفية الادراج .
الداله require :
هذه الداله تستخدم لادراج الملفات وطريقة كتابتها كالتالي require( string file )
, لنأخذ مثال عليها لتوضح الصوره لنا , افتح محرر الاكواد واكتب التالي :
http://arccn.net/images/php/l11e2.gif
قم بحفظ الملف الان بإسم ( word.php ) , افتح ملف جديد من محرر الاكواد واكتب التالي :
http://arccn.net/images/php/l11e3.gif
لن تستغرب اذا كان ناتجنا هو التالي :
http://arccn.net/images/php/l11e4.gif
اذن نستنتج ان الداله require تحتاج الى ملف لكي يكون مدخلها , وعندما ننفذ
الكود فكأننا كتبنا التالي:
http://arccn.net/images/php/l11e5.gif
يمكن ادراج اي ملف تريد بإي امتداد تريد , ولكن اسمع هذه النصيحه , وادرج دائما ملفات PHP او ملفات HTML , ولكن لا تنسى انه اذا كان الملف HTML فلن يتم تنفيذ كود PHP داخله , يجب ان يكون PHP لينفذ. الان لنرى موقع الاعلى للشركه , وكيف سيتم الادراج , لاحظ الكود التالي :
الملف header.php
http://arccn.net/images/php/l11e6.gif
الملف footer.php
http://arccn.net/images/php/l11e7.gif
الملف main.php

http://arccn.net/images/php/l11e8.gif
انقر على الصوره لتكبيرها
ارأيت الان ميزة هذه الداله ؟ واعتقد ان ميزة اعادة استخدام الكود اتضحت الان ايضا , وسوف تتضح لك اكثر في الدوال ( functions ) .
الداله include :
هذه الداله لها نفس عمل الداله require تماما , الفرق الوحيد بينهما , هو كيفية اخراج الخطأ , فلو اخطأت في الداله include فسوف يكون الخطأ هو تحذير ويكمل تنفيذ عمل الملف ( Warning ) اما اذا اخطأت في الداله require فسوف يكون الخطأ رئيسي ويتوقف عمل تنفيذ الملف اي الخروج من الكود كاملا ( Fatal Error ) , مثال على خطأ يمكن ان تقع به , ادراج ملف غير موجود , انظر الى الشكل التالي :
خطأ require :
اضغط على الصوره لتكبيرها


http://arccn.net/images/php/l11e9.gif
خطأ include :
اضغط على الصوره لتكبيرها:


http://arccn.net/images/php/l11e10.gif
ملاحظه : نستخدم الطريقه في الامثله اعلى اذا كان الملف يوجد في نفس المجلد , اما اذا كان في مجدل داخلي اسمه include فيكون كالتالي
( require(‘include/header.php’) ) وهكذا دواليك , كأنك تتعامل مع اي برنامج اخر لتقوم بتحدد مكان ملف
لماذا احتاج الى الدوال ( functions ) :
لو اردنا ان نقوم في كل برنامج لنا بمقارنة عددين مع بعضهما البعض , الن يكون طويلا ان نقوم في كل برنامج بكتابة كود المقارنه ؟ لماذا لا نقوم بوضع هذا الكود في داله , وفقط نقوم بمناداة هذه الداله , ونجعلها تتكفل بجميع المخرجات لدينا , اليس ذلك اسهل ؟ وافضل ؟ اذن سوف نتكلم الان عن الدوال بالتفصيل , لكي ترى فائدة هذه الخاصيه في لغة PHP
الدوال ( functions ) :
هل تريد انشاء دالة خاصه بك ؟ كالداله print مثلا ؟ ستتعلم الطريقه هنا ,وسوف نتطرق في هذا الموضوع الى الدوال عدة نقاط وهي كالتالي : مناداة الداله , اخطاء في مناداة الدوال , اسماء وحالات الدوال, كتابة الدوال, مدخلات الدوال , مرجعات من الدوال , ارجاع بيانات من الدوال. لنبدأ بشرح هذه النقاط :
مناداة الدالة :
رأيت كثيرا من الدوال خلال الدروس من الاول الى العاشر, منها PRINT ومنها SETTYPE ومنها GETTYPE ومنها REQUIRE و INCLUDE , اليس كذلك ؟ كتابة الدوال تكون كالتالي :
http://arccn.net/images/php/l11e11.gif
اخطاء في مناداة الدوال :
عندما تقوم بمناداة دالة غير موجوده فسوف يأتيك خطأ كالتالي :
http://arccn.net/images/php/l11e12.gif
ويجب عليك وقتها ان تقوم بملاحظة شيئين , الاول : هل الدالة موجوده او غير موجوده , الثاني : اذا كانت الداله موجوده هل الاسم ممنوع استخدامه ؟ لانه من الطبيعي انه لا يمكنك انشاء داله يكون اسمها print لانها اساسيه في PHP
اسماء وحالات الدوال :
هنا يجب عليك ان تعرف ان مناداة الدوال التي تقوم بإنشائها ليست حساسه لحالة الاحرف فالداله function_name() هي نفسها Function_Name() وهي ايضا نفسها الداله FUNCTION_NAME() ولكن الاغلب استخداما بين المبرمجين هو ان تكون اسماء الدوال احرف صغيره , وايضا اسماء الدوال لا يمكن ان تبدأ بأرقام او تكون بإسماء دوال موجوده سابقا في اللغه او قمت بعملها انت
ولا تنسى ان اسماء المتغيرات تختلف , فالمتغير $name يختلف عن المتغير $NAME , فلا تقم بنسيان الدرس الثالث.
كتابة الدوال :
الان لنتعلم كيف نقوم بكتابة داله خاصه بنا , طريقة كتابتها هي كالتالي :
http://arccn.net/images/php/l11e13.gif
الان لنقم بطباعة داله خاصه بنا , نريد ان نقوم بإنشاء دالة تقوم بطباعة العباره ( اهلا وسهلا بكم ) , افتح محرر الاكواد وقم بكتابة التالي :
http://arccn.net/images/php/l11e14.gif
لاحظ ان العباره function يجب ان تقوم بكتابتها اذا اردت ان تقوم بإنشاء داله خاصه بك , وفي الكود بالاعلى لون العباره ( اسود ). هل تحتاج ان اقول لك كيفية استخدام هذه الداله ؟ اكيد انك تعرف , والطريقه هي كالتالي :
http://arccn.net/images/php/l11e15.gif
مدخلات الدوال :
عندما رأيت الداله include لاحظت انها تحتاج مدخل لكي تعمل بشكل صحيح , اليس كذلك ؟ واعتقد ان بعد الدوال التي سوف تقوم بإنشائها تحتاج الى هذه الخاصيه , اذن كيف تقوم بعملها , نفس طريقة الاولى والاختلاف فقط في التالي :
http://arccn.net/images/php/l11e16.gif
الان تخيل , الداله التي قمنا بعملها , التي تطبع الكلمه اهلا وسهلا , تريد ان تقوم هذه الداله بطباعة اي جمله انت تقوم بإعطائها للداله , كيف تقوم بذلك ؟ لاحظ المثال التالي :
http://arccn.net/images/php/l11e17.gif
طبعا هنا , اذا قمت بإستخدام الداله من غير كتابة مدخل , اي لم تقم بإعطائها قيمه , سوف يكون هناك خطأ , اذا هذه الطريقه يتوجب عليك ان تقوم بتحديد المدخل ايا كان نوعه , لو كنت تريد طباعة رقم سوف تستخدم نفس الدالة ولكن بدل العباره ( داله بها مدخلات ) تقوم بكتابة الرقم و مثال على ذلك ( sayWord( 15 ); ) وسوف تقوم بطباعة الرقم. ماذا لو اردنا ان نجعل اكثر من معطى للداله ؟ هل يمكن ذلك ؟ نعم , اكتب في محرر
الاكواد التالي :
http://arccn.net/images/php/l11e18.gif
يمكنك جعل عدد لا نهائي من المعطيات للداله , والامر يعود الى طريقتك واحتياجك.
لم ننتهي بعد , هناك نقطه اخرى , ماذا لو اردت ان يكون احد المعطيات اختياري ؟ مثالنا في الاعلى يفرض علينا ان نقوم بإدخال عبارتين , ماذا لو اردنا ان نجعل عباره اجباريه والاخرى اختياريه , كيف يمكن عمل ذلك ؟ عن طريق تعيين قيمه افتراضيه للمعطى في الداله , اكتب في محرر الاكواد التالي :
http://arccn.net/images/php/l11e19.gif
لنقم الان بعمل تطبيق صغير , في برنامجنا نريد ان يقوم بإدخال رقمين , ايا كانت , ونقوم بمقارنتها لنرى من الاكبر والاصغر , لنقم بذلك معا , افتح محرر الاكواد واكتب التالي :
http://arccn.net/images/php/l11e20.gif
يمكن ان تستخدم العباره IF اوSWITCH او FOR او WHILE داخل الدوال ,
نصيحه : ( عاملها كأنها برنامج مصغر )
مرجعات من الدوال :
هناك نوعان من الدوال , نوع يقوم بإرجاع مخرجات , والاخر يقوم بإرجاع بيانات , سوف نعرف الان النوع الاول , ماذا نعني بإرجاع مخراجات ؟؟؟ كما عملنا في المثال التطبيقي , يكون ارجاع الداله مخرجات اذا كان هناك العباره echo او العباره print او كود HTML
ارجاع بيانات من الدوال :
اعني بإرجاع بيانات من الدوال , اي ارجاع قيم , ليست للطباعه بمعنى اصح ونستخدم في هذه الحاله العباره return , في مثالنا التطبيقي , على سبيل المثال نريد ان نعرف ماهو العدد الاكبر لنستخدمه في كود اخر , لنرى كيفية عمله الان , اكتب التالي في محرر الاكواد :
http://arccn.net/images/php/l11e21.gif
ولو اردنا ان نقوم بطباعة العدد الى المتصفح سوف نقوم بالتالي :
http://arccn.net/images/php/l11e22.gif
استخدام ادراج الملفات مع الدوال :
الان بعد هذا الدرس الطويل جدا , وهذا الكلام الكثير , واعتذر ان قد جئت لكم بالملل http://arccn.net/wp-includes/images/...icon_smile.gif , ماهو رابط الادراج مع الدوال ؟ الجواب هو التالي : نقوم بجعل جميع دوالنا في ملف لوحدها , ثم نقوم بإدراج هذا الملف الى الملف الرئيسي ونقوم بإستخدام الدوال , لنأخذ مثالا على ذلك , قلنا في البدايه ان نجعل رأس الصفحه في ملف وذيل الصفحه في ملف ثم نقوم بإدراجهما الى صفحاتنا اليس كذلك ؟ هناك طريقه اخرى نستطيع عملها , نقوم بعمل داله جديده اسمها header( $title ) وداله اخرى اسمها footer() ونضع كود HTML داخلها , ونحفظها في صفحه اسمها output.php , وفي كل صفحه نقوم بإدراج الملف output.php ثم نستخدم الدوال التي قمنا بعملها http://arccn.net/wp-includes/images/...icon_smile.gif . دعني اقوم بطرح مثال اخر , لقد قمت بعمل دوال كثيره ودائما تقوم بحفظها في ملف , وتعلم انك قد تحتاجها في برامجك الاخرى او في اماكن اخرى , فتقوم بإدراج هذا الملف , واعادة استخدام هذا الكود مره اخرى , من غير ان تقوم بكتابة الكود او تقوم بأي مجهود اخر , ولكن اذا كنت تتبع هذه الطريقه فلا تقم بنسيان كتابة التعليقات , حتى لا تنسى عمل دوالك الخاصه

سؤال على الدرس :


1 – قم بعمل مقارنة بين عددين تقوم بإدخالها ( الداله ترجع العدد الاكبر ( لا تطبع )
) , اذا نسي المستخدم كتابة احد الارقام , فقم بإستخدام قيمه افتراضيه , واذا قام بإدخال كلمه بدل ارقام , تقوم الداله بطباعة ( الرجاء ادخال رقم وليس حرف )
2 – قم بعمل نموذج المعلومات الشخصيه بإستخدام الدوال الخاصه , ادراج الملفات , واترك لك الحريه للتفكير في الطريقه

قلب., 9 - 11 - 2011 11:25 PM

اهداف الدرس :
  • الداله include_once والداله require_once
  • المتغير $PHP_SELF
  • العباره global
  • العباره static
  • تطبيق شامل

الداله include_once و الداله require_once :

تعلمنا في الدرس الحادي عشر ان نستخدم الدالتين ( include ) والداله ( require ) , ونأتي الان الى جزء منها وهي الدالتين include_once و require_once , طريقة عمل هاتين الدالتين نفس عمل الدالتين الاول تماما, نفس طريقة الكتابه ( مطابقه 100 % 100 ) , ولكن هناك فرق صغير بينهما , كما تدل الكلمه ( once ) ومعناها ( مره واحده فقط ) , اننا نستخدم هذه العباره عندما نريد ان نقوم بإدراج ملف مره واحده فقط. فإذا استخدمنا هذه الداله وقمنا بإدراج ملف معين , فلن يتم ادراجه مره اخرى. بعباره اخرى , لو لدينا برنامج صغير وادرجنا داخل هذا البرنامج الملف ( arccn.php ) بإستخدام العباره (
include_once ) , فلن يتم ادراجه مره اخرى بعكس العباره include. وعندما تقرأ في دليل استخدام للغه فسوف تجد ان هذا هو الفرق الوحيد, وسبب وجود دالتين هو للتأكد من عدم وجود تضارب بين اسماء الدوال , او المتغيرات في البرامج.
المتغير $PHP_SELF
المتغير $PHP_SELF هو معرف من قبل اللغه نفسها , ولا يمكنك ان تقوم بتعريف متغير بهذا الاسم, يستخدم هذا المتغير لمعرفة اسم الملف الذي يقام تنفيذه حاليا. فمثلا لو اردنا في نموذج ان نذهب الى نفس الصفحه , فسوف نستخدم المتغير $PHP_SELF بدل
كتابة اسم الملف. هذا هو استخدام هذا المتغير وسوف نتطرق له في احد برامجنا
التطبيقية.
العباره global :
لنقل ان لدينا متغير, وهذا المتغير نريد ان نستخدمه في عدة ملفات وفي عدة اماكن. من المحتمل انني نسيت ان اخبرك ان المتغير مكانه محدود واعني بذلك , لو عرفنا متغير في ملف معين , فلن يكون هذا المتغير منشىء في الملف الاخر, فيمكننا انشاء مره اخرى واستخدامه بطريقه مختلفه. ولكن في حاله من الحالات نريد ان يكون لدينا متغير ثابت في جميع الصفحات وتذكر ان العباره defined ايضا لن تقوم بعمل هذا الشي, لنقم تحديد نظرتنا , لو عرفنا متغير داخل داله, فلن نستطيع استعمال هذا المتغير خارج الداله. لنأخذ مثال يبين لنا الطريقه. افتح محرر الاكواد واكتب التالي:
http://arccn.net/images/php/l12e1.gif
لاحظ ان المتغير ( name ) لم يتم طباعته, لانها معرف خارج الداله , وليس له علاقه بالمتغير الموجود داخل الدالة ابدا. ونفس الشيء للمتغير ( $lastName ) فلن يتم طباعته في السطر رقم 15 , لانه تم تعريفه داخل الداله. ولكن يمكننا ان نلغي هذا كله , ونجعل متغير يستخدم في جميع الصفحات, بإستخدام العباره global, ويتم كتابتها بالطريقه التاليه:
http://arccn.net/images/php/l12e2.gif
1 – لاحظ هنا اننا قمنا بتعريف المتغير داخل الداله, ومن الطبيعي انه لن يتم طباعته خارجها حتى لو كان يحتوي على قيمه, ولكن مع استخدامنا للعباره global ,استطعنا من عمل ذلك. ويجب عليك ان تلاحظ انه يجب ان تجعل المتغير ( عام ) == ( global )
ثم بعد ذلك تقوم بتعيين قيمه بداخله ثم الطباعه ان اردت.
2 – قمنا بطباعة المتغير , ولاحظ انه قام بالطباعه هنا.

العباره static :

معنى كلمة static في اللغه الانجليزيه هو ( ثابت ). فعند استخدامنا لهذه العباره قبل المتغير, نضمن ان هذا المتغير سيقوم بالاحتفاظ بالقيمه الموجوده بداخله دائما ( مهما حصل ) الى اخر ما وصلنا , ويستخدم فقط داخل الدوال ( لا تنسى ذلك ) لنلاحظ المثال التالي:
http://arccn.net/images/php/l12e3.gif
هنا نقوم بطباعة المتغير a ثم نقوم بزيادته واحد , اليس ذلك صحيح ؟ ولكن لكما نقوم بمناداة الداله ( test ) مره اخرى , يتم ارجاع قيمة المتغير a الى ( 0 ) , مع اننا نقوم بزيادة المتغير في كل مره نقوم بالطباعه. وسيكون ناتج البرنامج هو التالي:
http://arccn.net/images/php/l12e4.gif
الان لنقم بإستخدام العباره static ونرى الاختلاف , اكتب التالي قبل المتغير a :
http://arccn.net/images/php/l12e5.gif
وعند تشغيل هذا الكود سوف يكون الناتج ايها الزائر الكريم بالطريقه التاليه:
http://arccn.net/images/php/l12e6.gif
ما نلاحظه هنا , ان في كل مره ننادي فيها الداله , في اخرها نقوم بزيادة المتغير بالعدد واحد , وعند منادة الداله مره اخرى , سوف يكمل من اخر عدد وصل اليه المتغير. وهذه هي فائدة العباره static في اللغه PHP.

تطبيق شامل :

ترددت كثيرا في اختيار برنامج نقوم بتطبيقه , حيث اني اريد ان اقوم بشمل جميع ما تعلمناه في الدروس السابقه, وعند انتهاء التفكير قررت ان يكون تطبيقنا ( اختبار مصغر ). وان شاء الله يكون شاملا لجميع ما قمنا بتعمله, ولا تغضب عندما نقوم بنسيان احد النقاط الصغيره, فتأكد انه في تطبيق اخر سنتطرق لها.
فكرة عمل البرنامج :
اولا يقوم المستخدم بإدخال معلوماته الشخصيه بعد ذلك نعرض له عدد من الاسئله , ثم في النهايه نقوم بعرض النتيجه, انظر الى الصوره التاليه :
http://arccn.net/images/php/l12e7.gif
لنقم بالتفكير في متطلباتنا , وماهي الملفات التي نحتاجها :
الوصفالملفهنا نضع
جميع دوال التنسيق للصفحات , مثل رأس الصفحه وذيلها , نماذج ادخال
المعلومات وغيرها ونضعه داخل مجلد اسمه includeoutput.phpهنا نقوم
بوضع دوال الاسئله والاجوبه , لكي ننتهي من عناء اعادة كتابة الكود
ونضعه داخل المجلد includequiz_fun.phpهنا
يضع المستخدم معلوماته الشخصيه ويكون في المجلد الرئيسيinfo.phpهنا
نقوم بعرض صفحة الاسئله ويكون في المجلد الرئيسيquiz1.phpصفحة
النتائج ويكون في المجلد الرئيسيresult.php
لنبدأ الان بكتابة البرنامج ونحاول ان نفهمه خطوه خطوه , افتح محرر الاكواد واكتب التالي ثم احفظه في ملف اسمه output.php :
اضغط على الصوره لتكبيرها

http://arccn.net/images/php/l12e8.gif
قمنا هنا بعمل رأس الصفحه وذيل الصفحه , ولو تلاحظ اننا استخدمنا الدوال لعمل ذلك , بحيث ان في كل صفحه لا نكرر كتابة الرأس والذيل وانما فقط نقوم بإدراج الملفات , وهي تقوم بالباقي. ولاحظ اننا ايضا استخدمنا مدخلات للدوال , بحيث يمكننا تغيير عنوان الصفحه وغيرها في اي وقت نريد. الان في صفحتنا ادخال المعلومات , نريد ان نقوم بإنشاء نموذج ليتمكن المستخدم من ادخال معلوماته الشخصيه, ليتمكن من الدخول الى الاختبار , اذن هو نموذج , سنضعه في ملف output.php , اذن ارجع الى الملف واكتب التالي:
اضغط على الصوره لتكبيرها

http://arccn.net/images/php/l12e9.gif
لاحظ هنا اننا جعلنا النموذج يذهب الى الصفحه quiz.php , ايه انه ضروري ان يقوم المستخدم بكتابة معلوماته الشخصيه قبل دخول الاختبار. الان لنقم بعمل صفحة تسجيل المعلومات. الان انشئ ملف جديد اسمه info.php, واكتب بداخله الكود التالي:
اضغط على الصوره لتكبيرها

http://arccn.net/images/php/l12e10.gif
في بداية هذا الكود قمنا بإدراج الملف output.php لان بداخله الاكواد التي نحتاجها الى تشغيل الصفحه. ولاحظ اننا استخدمنا الدوال فقط, ولم نقم بإستخدام غيرها. الان نحتاج ان نتأكد هل المستخدم ادخل جميع البيانات ام لا ؟ لاننا قلنا انه اذا لم يدخل جميع البيانات فلا يسمح له بأخد الاختبار. اذن قم بإنشاء ملف اسمه quiz_fun.php واكتب بداخله الداله التاليه :
http://arccn.net/images/php/l12e11.gif
هنا نقوم بالتحقق من مدخلات النموذج , اذا كانت جميعها مدخله , فنرجع القيمه true , واذا كانت هناك مدخلات ناقصه فسوف نرجع القيمه false. الان انشئ ملف اسمه quiz.php واكتب بداخله التالي:
http://arccn.net/images/php/l12e12.gif
الكود واضح وبسيط هنا , ادرجنا الملفات في البدايه, ثم نقوم بإستخدام دالة التحقق من المدخلات, اذا ارجعت القيمه true نبدأ الاختبار , واذا ارجعت false لا نبدأ الاختبار. الان نريد ان نقوم بعرض الاسئله , سوف نقوم بكتابة سؤالين فقط , لكي لا نقوم بإطالة الدرس, ارجع الى الملف output.php واكتب الداله التاليه :

اضغط على الصور لتكبيرها

http://arccn.net/images/php/l12e13.gif

http://arccn.net/images/php/l12e14.gif
لاحظ اننا استخدمنا هنا الطريقة GET لارسال البيانات, لكي تفهم الطريقتين بشكل صحيح, ارجع الان الى الملف quiz.php , وقم اضافة السطر التالي:
http://arccn.net/images/php/l12e15.gif
قم بتشغيل الملف info.php الان , وقم بتجربة برنامجك , وسوف تجد انك ستصل الى الصفحة التاليه :
http://arccn.net/images/php/l12e16.gif
قربنا من النهاية. نريد الان ان نقوم بمعرفة اذا قام المستخدم بكتابة الاجابات الصحيحه ام لا, اذن لنقم بإنشاء متغير اسمه mark نضع به العلامات ونريد ان نستخدمه في جميع الصفحات, اذن سنحتاج العباره global , ارجع الى الملف quiz_fun.php واضف السطرين التاليين :
http://arccn.net/images/php/l12e17.gif
بقيت الان الصفحه الاخيره, ولن اخذ وقت طويل في شرحها, فسأضعها لك , واعتقد انه الان لديك الامكانيه لفهم الكود الموجود بداخلها :
http://arccn.net/images/php/l12e18.gif
ملاحظه : جميع القيم التي تكون قادمه عن طريق النماذج , تكون على شكل نصوص (string ) ولهذا استخدمنا التحويل من نص الى رقم , كما تعلمنا سابقا , لانه لن نستطيع ان نقوم بمقارنه صحيحه اذا كان الطرفين من غير النوع , ولا تنسى انه يمكنك استخدام المعامل ( === ) , لمعرفة ان الطرفين متساويين ومن نفس النوع

سؤال على الدرس :


1 – قم بالتعديل على برنامج الاختبار , حيث يكتب لك في الصفحه الاخيره معلومات المستخدم الذي دخل الاختبار , الاسم والبريد الالكتروني مع الدرجه التي حصل عليها المستخدم في الاختبار ( مساعده : استخدم global )


قلب., 9 - 11 - 2011 11:25 PM

هداف الدرس :
  • نظره عامه عن المصفوفات
  • المصفوفات في لغة PHP
  • لماذا المصفوفات
  • انواع المصفوفات
  • المصفوفات الرقميه
  • انشاء المصفوفات الرقميه
  • طباعة المصفوفات الرقميه

نظره عامه عن المصفوفات :

تعتبر المصفوفات انجاز كبير في لغات البرمجه, مهلا ماهي المصفوفات اولا ؟ لنقم بشرحها خارج نطاق الكمبيوتر, لو قلنا ان لديك اليوم وليمه وكثير من الاصدقاء والاقارب سيقومون بزيارتك, ذهبت الى البقاله اشتريت ببسي بعدد الموجودين , واحد تلو الاخر , فاضريت الى الاشياء التاليه, ان تحمل اكياسا كثيره اولا , دفع مبلغ اكثر ثانيا اليس ذلك صحيحا ؟ ولكن لو قمت بشراء كرتون واحد بسعر اقل وسهل الحمل , فتكون وفرت على نفسك الكثير, ترجم الان ما قلته لك الى عالم الكمبيوتر والمصفوفات, المصفوفات مثل المتغيرات , مكان نقوم بوضع قيمه به, اي المصفوفه عباره عن متغير توضع به قيم عديدة, والفرق ان المتغير يحوي قيمه واحده ولكن المصفوفه تحتوي على قيم كثيره , وبالاحرى غير محدوده, اذن لنقل الان ان المصفوفات تعتبر انجاز كبير في لغات البرمجه, وتعتبر اللغه التي لا تقوم بدعمها ناقصه او ليست جيده. واعتقد ان مثال الوليمه قد وضح لك لماذا المصفوفات ( المبلغ نعني به الذاكره المستخدمه ) , ( الحمل نعني بها طريقة وضع القيم ).
المصفوفات في لغة PHP :
دعمت المصفوفات في لغة PHP من فترة ليست بالقريبه, وتستخدم بشكل كبير سواء في
PHP وغيرها , ومن دعم اللغه الى المصفوفات توجد هناك عشرات الدوال الخاصه بالمصفوفات مثل النسخ والالغاء والمسح والطباعه و و و …., حتى ان بعض دوال لغة PHP تقوم بإعطاءك الناتج الذي تريد على شكل مصفوفه ومرورا بالاستعلام من قواعد البيانات فسوف يكون الناتج على شكل مصفوفه ايضا, ولكن كل هذا الحديث سابق لاوانه , فسوف نقوم في البدايه بمعرفة المصفوفات وانواعها والتعامل معها, ثم نأتي الى دوالها وخواصها في دروس قادمه ان شاء الله.
لماذا المصفوفات :
قد تتسائل , عندنا متغيرات لماذا نستخدم المصفوفات , سوف تجيب على هذا السؤال بنفسك عندما تستخدم المصفوفات , تخيل ان لديك اسماء اشخاص كثيرين داخل مصفوفه وتريد ان تقوم بترتيب هذه الاسماء من ناحية الاحرف ؟ فهل يمكن فعل ذلك بالمتغيرات ؟ ولكن مع المصفوفات بكتابة كود من 4 احرف يمكن فعل ذلك , غير مسألة الطباعه وغيرها الكثير , لا استطيع حصرها لك الان ولكن سوف توضح كلما تكلمنا عن المصفوفات اكثر.
انواع المصفوفات :
يوجد في لغة PHP نوعان من المصفوفات , مصفوفات رقميه, ومصفوفات حرفيه , في البدايه سوف نقوم بتعلم المصفوفات الرقميه لانها الاساس , وفي الدرس القادم سوف نعرف المصفوفات الحرفيه , بعد ذلك يسكون لديك الاختيار بين استعمال الحرفيه او الرقميه ( جميعهم يؤدون نفس العمل ).
المصفوفات الرقميه :
اعني بالمصفوفات الرقميه , المصفوفات التي يتم استعمالها عن طريق الارقام, اي عندما اريد قيمه من هذه المصفوفه فسوف اقوم بالاستعلام عنها بإستخدام الرقم الذي يدل عليها, اذن نعرف ان لكل قيمه في المصفوفه رقم يدل عليها وغالبا يبدأ من العدد 0 وطبعا يمكن ان تقوم بتغير ذلك. لنجعل لها اسامي وهو الافضل , القيم الموجوده بالمصفوفه نسميها عناصر, والارقام الموضوع لكل قيم في المصفوفه نسميها فهرس , او المفتاح.
انشاء المصفوفات الرقميه :
دعني اوضح لك مفهوم المصفوفه اكثر , انظر الى الصوره التاليه :
http://arccn.net/images/php/l13e1.gif
لدينا الان منتجات في بقالتنا , فبدل من ان نكتب 5 متغيرات بعدد المنتجات , نقوم بإنشاء مصفوفه اسمها منتجات , ونضع داخلها اسماء منتجاتنا , وضحت الصوره ؟ لنقم مع بضعنا انشاء هذه المصفوفه , افتح محرر الاكواد وقم بكتابة التالي :
http://arccn.net/images/php/l13e2.gif
فبنظرك الان , ماهو الافضل طريقة المصفوفه ام الطريقه التاليه :
http://arccn.net/images/php/l13e3.gif
سأترك الاجابه لك http://arccn.net/wp-includes/images/...icon_smile.gif
يوجد لدينا طريقه اخرى لكتابة المصفوفات , وكل منهما يؤدي نفس العمل , في بعض الاحيان تحتاج ان تعرف رقم القيم في المصفوفه , واحيانا لا تحتاج الى ذلك , وكل واحد منهما له استخدام , ولكن ما يمكن فعله بواحده فمأكد 100%100 انك تستطيع القيام به مع الاخرى, انظر الطريقه الثانيه الان :
http://arccn.net/images/php/l13e4.gif
هي نفسها الطريقه الاولى عند استخدامنا للعباره array , ولكن هنا نقوم بتحدد الاماكن بأنفسنا , ونعرف عند انشاء المصفوفه مفتاح كل عنصر بها. ولك الحريه بإستخدام واحده من الطريقتين. ( العباره array معرفه مسبقا داخل لغة PHP ولا يمكن استخدامها , لاتنسى ذلك ).
لنرى مثال اخر الان يفضل استخدام النوع الثاني على النوع الاول, نريد ان نقوم بتعبة عناصر المصفوفه بالرقم 1 الى الرقم 5 , كيف نقوم بفعل ذلك ؟؟؟ افتح محرر الاكواد واكتب التالي :
http://arccn.net/images/php/l13e5.gif
لا تنسى ان طريقة التعامل مع المصفوفات نفسها مع المتغيرات , فلو اردنا ان نضع مصفوفه منشئه مسبقا في مصفوفه اخرى سوف نستخدم المعامل ( = ) , انظر المثال التالي:
http://arccn.net/images/php/l13e6.gif
ملاحظه : يمكننا وضع اي نوع من البيانات داخل المصفوفات, سواء نصوص , او حروف , او ارقام وغيرها
ولو اردنا تغيير قيمة العنصر الثاني في المصفوفه فسوف نقوم بالتالي :
http://arccn.net/images/php/l13e7.gif
طباعة المصفوفات الرقميه :
قم بإنشاء مصفوفه وقم بطباعتها كالمتغير , ماذا ستلاحظ ؟؟ لا يمكنك طباعتها , وسوف تجد ان ناتج الطباعه هو array فقط. اذن كيف نقوم بطباعة المصفوفه ؟ نقوم بطباعتها بالوصول الى كل عنصر على حده وطباعته لوحده , انظر المثال التالي :
http://arccn.net/images/php/l13e8.gif
لو فكرت قليلا , ستلاحظ ان الاسطر تتكرر نفسها , والذي يتغير فقط المفتاح , اذن نستطيع ان نستخدم دالة تكرار لتقوم بعمل الطباعه بدلا من ان نقوم بكل سطر على حده , اكتب في محرر الاكواد التالي :
http://arccn.net/images/php/l13e9.gif
استطعنا طباعة العناصر لاننا نعرف كم قيمه موجوده لدينا بالمصفوفه ؟ ولكن لو لم نعرف كم عدد القيم , فماذا نفعل ؟ سهل جدا , نستخدم الداله count , وتقوم هذه الداله بإخبارك كم عنصر موجود لديك بالمصفوفه, انظر التالي :
http://arccn.net/images/php/l13e10.gif
الان لنقم بطباعة المصفوفه التي لا نعلم عددها , كيف نفعل ذلك ؟؟ لاحظ ان في الداله for نقول اطبع لنا العناصر الى ان يصل عدد المتغير i الى اصغر من 3 , والعباره count اخرجت لنا الرقم 3 , اذن نجعل شرطنا في طباعة المصفوفه الى ان يكون العدد اقل من عدد العناصر, اكتب في محرر الاكواد التالي :
http://arccn.net/images/php/l13e11.gif
هل وضحت الان طريقة عمل المصفوفت الرقميه , لا تخف , رأيت كثيرا من اصدقائي لا يحبون المصفوفات او يتعقدون منها وعند التركيز عليها يتقنونها , وهي سهله جدا , فقط اقرأ الدرس جيدا واذا لم تفهم اقرأه مره اخرى , واذا استصعب عليك ارسل لي بريدا الكترونيا وسوف يسعدني ان اوضح لك النقطه التي لم تفهمها, ولكن تذكر انه يجب ان تتقن المصفوفات جيدا , فهي تعتبر شي رهيب في لغة البرمجه وسوف تساعدك كثيرا عندك كاتابة برامجك في المستقبل.

سؤال على الدرس :

1 – ارجع الى الدرس التاسع: انواع النماذج وطريقة كتابتها و الدرس العاشر: التحقق من وطباعة محتوى النماذج وقم بتعديل الملفات لتستطيع طباعة محتويات المتغير SKILL , اذا تتذكر فقد قلنا انه مصفوفه , والان تعرف ماهي المصفوفات http://arccn.net/wp-includes/images/...icon_smile.gif


قلب., 9 - 11 - 2011 11:26 PM

  • المصفوفات الحرفيه
  • انشاء المصفوفات الحرفيه
  • التحكم في المصفوفه الحرفيه
  • طباعة المصفوفات الحرفيه
  • المصفوفات ثنائية الابعاد
  • المصفوفات متعددة الابعاد

المصفوفات الحرفيه :

اليوم سوف نتكلم عن النوع الثاني من المصفوفات وهي المصفوفات الحرفيه, وتختلف المصفوفات الحرفيه عن المصفوفات الرقميه من الناحيه التاليه, فهارس او مفاتيح المصفوفات الرقيمه تكون ارقام, اما المصفوفات الحرفيه فمفاتيحها او فهراسها تكون نصوص, قد تتسائل لماذا نستخدم المصفوفات الحرفيه, في كثير من الاوقات تعتبر المصفوفات الحرفيه مفيده, من حيث الترتيب ومن حيث الاستخدام, وتأكد انها وضعت لكي يسهل موضوع كتابة المصفوفات وليس لتعقيدها, تخيل مصفوفتنا التي تحتوي على المنتجات في الدرس السابق, لو اردنا ان نضع كمية كل منتج موجود لدينا , فلن يمكننا فعل ذلك بطريقة المصفوفات الرقميه بسهوله , ولكن المصفوفات الحرفيه سوف تكون سهله جدا علينا.
انشاء المصفوفات الحرفيه :
لنقم بعمل مثالنا السابق ولكن نريد ان نقوم بوضع كمية كل منتج لدينا في المصفوفه , شاهد المثال التالي:
http://arccn.net/images/php/l14e1.gif
لكن لو لاحظنا في المصفوفات الرقميه , فالذي يمكننا فعله هو هكذا ,
http://arccn.net/images/php/l13e2.gif
لاحظت الفرق الان ؟ لاحظ هنا ان العنصر ( element ) هو كمية كل منتج , والفهرس (index ) هو اسم المنتج , على عكس الحرفيه , فكان الفهرس ارقام والعنصر هو المنتج.
التحكم في المصفوفه الحرفيه :
تعلمنا في السابق ان لو اردنا ان نتحكم في المصفوفات الرقميه سوف نستخدم اسم المصفوفه , ثم رقم الفهرس. بالطريقه التاليه :
http://arccn.net/images/php/l14e2.gif
اليس ذلك صحيحا ؟ ولكن كيف يمكن عمل ذلك عن طريق المصفوفات الحرفيه ؟ او ماهو النظير في المصفوفات الحرفيه ؟ يمكننا فعل ذلك بالطريقه التاليه:
http://arccn.net/images/php/l14e3.gif
واذا اردت ان تقوم بتغيير واحد من العناصر , فسوف تكون بنفس طريقة المصفوفات الرقميه , لاحظ التالي :
http://arccn.net/images/php/l14e4.gif
وايضا يمكننا انشاء المصفوفه بالطريقه التاليه :
http://arccn.net/images/php/l14e5.gif
طباعة المصفوفات الحرفيه :
كما للمصفوفات الرقميه طريقة كتابه بإستخدام دوال التكرار, يوجد دالة تكرار خاصه بالمصفوفات الحرفيه, ويمكن ايضا استخدامها للمصفوفات الرقميه وتدعى هذه الداله ( foreach ) وطريقة كتابتها كالتالي:
http://arccn.net/images/php/l14e6.gif
يوجد طريقتان لكتابة المصفوفات الحرفية, لنأخذ الاولى الان لنقل الان اننا نريد ان نقوم بطباعة منتجاتنا في اول مثال وكمياتها , افتح محرر الاكواد واكتب الكود التالي :
http://arccn.net/images/php/l14e7.gif
وناتجنا هو التالي:
http://arccn.net/images/php/l14e9.gif
و الطريقه الثانيه لطباعة المصفوفات هي بإستخدام الداله ( while ) واستخدام الداله (
each ) وتكون كالتالي :
http://arccn.net/images/php/l14e10.gif
لنأخذ مثال عليها الان, افتح محرر الاكواد وقم بعمل التالي:
http://arccn.net/images/php/l14e11.gif
قم بإختيار الطريقة التي تحب , فكلها تؤدي الى نفس الغرض.
المصفوفات ثنائية الابعاد :
المصفوفات ثنائية الابعاد نعني بها , مصفوفه يوجد بداخلها مصفوفه اخرى, لا ادري كيف اقوم بشرحها لك عزيزي الزائر , ولكن انظر الى المثال التالي واتمى ان توضح لك الصوره ,
http://arccn.net/images/php/l14e12.gif
لنحاول كتابة هذه المصفوفه معا مره بالمصفوفات الرقميه , ومره بالمصفوفات الحرفيه , افتح محرر الاكواد وقم بكتابة التالي:
مصفوفات ثنائية ابعاد رقميه:
http://arccn.net/images/php/l14e13.gif
طريقة طباعة مصفوفه ثنائية ابعاد رقميه:
http://arccn.net/images/php/l14e14.gif
لماذا استخدمنا دالتين تكرار من النوع ( for ) ؟ وذلك لانها ثنائية ابعاد ( مصفوفه وبداخلها مصفوفه ) , فادالة التكرار الاول ( للصف ) والداله الثانيه ( للعمود ), لنرى الان كيفية كتابتها بطريقة المصفوفات الحرفيه, افتح محرر الاكواد واكتب التالي:
مصفوفات ثنائية ابعاد حرفيه:
http://arccn.net/images/php/l14e15.gif
طريقة طباعة مصفوفه ثنائية ابعاد حرفيه:
http://arccn.net/images/php/l14e16.gif
المصفوفات متعددة الابعاد:
اعني بالمصفوفات المتعددة الابعاد, مثل ثلاثية , رباعية , خماسيه, على حسب تعقيدك سوف تأتي المتعدده, ( يقولون ان المعقد الذي يستخدم اكثر من 2 ) http://arccn.net/wp-includes/images/...icon_smile.gif ولن اقوم هنا بشرحها او شرح طريقة طباعتها , فنفسها نفس المصفوفه الثنائيه, وقس على ذلك ولكن انظر الى هذا المثال , وبه مصفوفه ثلاثية ابعاد , تأمل بها , واذا فهمت نقظت المصفوفه الثنائيه الابعاد جيدا سوف تقوم بفهم المصفوفه المتعدده ايا كانت.
http://arccn.net/images/php/l14e17.gif

قلب., 9 - 11 - 2011 11:27 PM

اهداف الدرس:
  • ترتيب المصفوفات ( Sorting )
  • اعادة ترتيب المصفوفات ( Reordering )
  • استكشاف المصفوفات ( Navigation )
  • تعداد المصفوفات ( Counting )
  • الداله array_walk

ترتيب المصفوفات ( Sorting ) :


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

الترتيب طبيعيا

الداله sort() :
تستخدم هذه الداله لترتيب الكود حسب الاسبقيه ( للمصفوفات الرقميه ) , ونعني بذلك من الاصغر الى الاكبر, في حالة الاحرف ( ا , ب , ت ….. ي ) وفي حالة الارقام ( 0 , 1 , 2 ) وتعتبر هذه الداله حساسه لحالة الاحرف, اي الحرف ( A ) اصغر من الحرف ( Z ) ولكن الحرف ( Z ) اصغر من الحرف ( a ), افتح محرر الاكواد وقم بكتابة التالي:
http://arccn.net/images/php/l15e1.gif
وسوف يكون ناتجنا هو التالي:
http://arccn.net/images/php/l15e2.gif
الداله asort() والداله ksort() :
اذا كنت تستخدم المصفوفات الحرفيه, فهنا تجد مبتغاك, ونستخدم دوال مختلفه عن الرقميه , لاننا في المصفوفات الحرفيه نحتاج الى العنصر والفهرس ليتم ترتيبهما مع بعضهما البعض , ولكن في الرقميه نحتاج الى العنصر فقط. نستخدم الداله asort ونقوم بترتيبها حسب العنصر, ولكن في الداله ksort فسوف نقوم بالترتيب حسب الفهرس او المفتاح, افتح محرر الاكواد وقم بكتابة التالي:
http://arccn.net/images/php/l15e3.gif
وسوف يكون ناتجنا هو التالي:
http://arccn.net/images/php/l15e4.gif

الترتيب العكسي

رأيت ان الداله sort و ksort و asort تقوم بترتيب العناصر من الاصغر الى الاكبر, ماذا لو اردنا ان نقوم بالترتيب من الاكبر الى الاصغر, كيف سنقوم بفعل ذلك ؟ نستخدم نظائر الدوال التي قمنا بمعرفتها قبل قليل وهي rsort و krsort و arsort وسوف تقوم بالتريب بشكل عكسي, لا تحتاك ان ادعم لك الدوال بالامثله , فقط قم باستبدال دالة الترتيب في الامثله بالاولى بالداله ( rsort ) في حالة المصفوفه الرقميه, او استبدل دالة الترتيب في مثال المصفوفات الحرفيه بأحدى الدالتين ( arsort ) او ( krsort )
اعادة ترتيب المصفوفات ( Reordering ) :
في بعض الحالات تريد ان تقوم بترتيب المصفوفات بطريقه معينه, مثل لو لديك مصفوفه بها الاعداد ( 1 , 2 , 3 ) وتريد ان تقوم بترتيبها بالطريقه ( 3 , 1 , 2 ) , فيمكن فعل ذلك بلغة PHP وفي هذا القسم سوف نتعلم كيفية القيام بهذه الخصائص.
الداله shuffle() :
تقوم هذه الداله بترتيب عناصر المصفوفه عشوائيا , والطريقه لقيام بالترتيب عشوائيا هي كالتالي, افتح محرر الاكواد وقم بكتابة التالي:
http://arccn.net/images/php/l15e6.gif
لو قمت بتشغيل هذا البرنامج, سوف تلاحظ ان في كل مره تقوم بها بتحديث الصفحه او اعادة التشغيل , سترى الترتيب يختلف, قم بتجربة البرنامج وستعرف ما اعنيه
الداله array_reverse() :
تقوم هذه الداله بإنشاء مصفوفه جديده ولكن العناصر تكون بترتيب عكسي , لاحظ المثال التالي:
http://arccn.net/images/php/l15e7.gif
والناتج من هذه الداله هو التالي:
http://arccn.net/images/php/l15e8.gif
الداله array_push() :
تقوم هذه الداله بإضافة عنصر جديد في اخر المصفوفه, لاحظ المثال التالي:
http://arccn.net/images/php/l15e9.gif
الداله array_pop() :
هذه الداله عكس الداله array_push وهي تقوم بحذف اخر عنصر في المصفوفه مع ارجاعه, واعني بإرجاعه ان عند استخدام هذه الداله سوف تقوم بأعطائك اي متغير تم حذفه, وهذا هو الفرق بينها, لاحظ المثال التالي:
http://arccn.net/images/php/l15e10.gif

استكشاف المصفوفات ( Navigation ) :

في اي مصفوفه تقوم بإنشائها , يوجد لدينا مؤشر يقوم بالاشاره على العنصر الموجود لديه الان, فتارة يكون المؤشر في العنصر الاول وتارة في العنصر الثاني,, ولكن لا يمكننا التحكم في هذا المؤشر اساسا, بل يمكننا استخدام بعض الدوال تساعدنا في التحكم به, فلو قمت بإنشاء داله الان ووضعت بها بعض العناصر فسوف يكون المؤشر في اول عنصر في المصفوفه, لنرى الان بعض دوال مؤشر المصفوفه لنقوم بإستخدامها في برامجنا لاحقا.
الداله current() :
تستخدم هذه الداله لاعطائنا مكان المؤشر الحالي, وطريقة الاستخدام كالتالي, افتح محرر الاكواد وقم بكتابة الكود:
http://arccn.net/images/php/l15e11.gif
الداله each() :
تقوم هذه الداله بإرجاع العنصر الحالي ثمالتقدم خطوه واحده الى الامام. each( $array )
الداله next() :
تقوم هذه الداله بنفس عمل الداله each ولكن الفرق بينهما ان هذه الداله تقوم بالتقدم خطوه واحده الى الامام ثم ارجاع المتغير الذي وصلت اليه. next( $array )
الداله reset() :
عمل هذه الداله بسيط, وهي تقوم بإرجاع المتغير الى بداية المصفوفه, اي كأنك قمت بعمل المصفوفه من جديد. reset( $array )
الداله end() :
هذه الداله عكس سابقتها reset حيث تقوم من اسمها بوضع المؤشر في اخر المصفوفه.
end( $array )
الداله prev() :
واخيرتنا في هذا القسم هي هذه الداله وهي عكس الداله next وتقوم بالرجوع للخلف خطوه واحده فقط ثم ارجاع المتغير الذي وصلت اليه
تعداد المصفوفات ( Counting ) :
الداله count() :
تستخدم هذه الداله لعد عناصر المصفوفه الموجوده لدينا, وتستخدم بالطريقه التاليه:
http://arccn.net/images/php/l15e14.gif
الداله sizeof() :
تقوم هذه الداله بنفس عمل الداله count تمام , ولا يوجد بينهما اي اختلاف. sizeof( $array )
الداله array_count_values() :
هذه الداله جميله, ورهيبه , وعملها ان تقوم بعدد كم العناصر المتكرره في المصفوفه, فلو لديك مصفوفه يوجد بها ( 1 , 5 , 1 , 6 , 2 ) فسوف تخبرك الداله ان العدد 5 و 6 و 2 تكرر و مره واحده ولكن العدد 1 تكرر مرتان, طريقة عمل هذه الداله ان تقوم بإدخال مصفوفه اليها وتقوم بإرجاع مصفوفه حرفيه عناصرها هي عدد مرات التكرار والفهرس او المفاتيح هو عناصر المصفوفه الاولى, لنقم بأخذ مثال بسيط عليها, افتح محرر الاكواد وقم بعمل التالي:
http://arccn.net/images/php/l15e15.gif
والناتج هو :
http://arccn.net/images/php/l15e16.gif
الداله array_walk :
في بعض الاحيان نريد ان نقوم بتعديل جميع عناصر المصفوفه الموجوده لدينا , من غير استخدام دالة تكرار وغير ذلك , ويمكننا تحقيق مبتغانا عن طريق الداله array_walk ووضع اليها بعض من نكهات الدوال, لنقل ان لدينا مصفوفه بها ارقام, ونريد ان نقوم بزيادة كل عنصر في المصفوفه بالعدد 1, كيف يمكننا فعل ذلك , افتح محرر الاكواد وقم بكتابة التالي:
http://arccn.net/images/php/l15e12.gif
وسوف يكون ناتج هذه الطريقه هو التالي:
http://arccn.net/images/php/l15e13.gif

قلب., 9 - 11 - 2011 11:28 PM

اهداف الدرس:
  • طرق استخدام المتغيرات من النماذج النوع المخفي ( HIDDEN ) من انوع النماذج
  • الداله isset
  • الداله unset
  • تطبيق عملي

طرق استخدام المتغيرات من النماذج :


تعلمنا في السابق كيف نتحكم في المتغيرات التي تأتي من النماذج, في الحقيقه هي 3 انواع, وتطرقنا الى نوع واحد , وهو البسيط. حيث انك تكتب في الصفحه التي يذهب اليها المتغير اسم المتغير فقط, لكن اليوم سوف نتعلم طريقتان اخرى , غير الاولى, وهي عباره عن مصفوفات حرفيه, نستخدمها للتحكم في المتغيرات, في الحقيقه لا يوجد لهذه الطرق اسماء ولكن شاهدت كتابا يقوم بإعطاء اسماء لها مبسطه ومميزه, ( الاسلوب القصير ) , ( الاسلوب المتوسط ) , ( الاسلوب الطويل ), لنقم بمشاهدتها مع بعضنا البعض:
نموذج ارسال بيانات:
http://arccn.net/images/php/l16e1.gif
الان في الصفحه التي نعرف بها البيانات , لدينا 3 طريق لاخذ هذا المتغير , لاحظ التالي:
http://arccn.net/images/php/l16e2.gif
ماهو الفرق بين هذه الطرق الثلاث, واي واحد تقوم بإستخدامه ؟؟ عن نفسي انا شخصيا احبذ استخدام الاسلوب الطويل ويحبذ ان تقوم بالاقرار على استخدام اسلوب واحد من الثلاثه فقط, الفروقات بين الثلاث طرق هو التالي:
الاسلوب القصير : اسهل اسلوب ولكن يقتضي ان يكون خيار register_global على الوضع on في اعدادات اللغه وكل هذا يعتمد على النسخه المستخدمه لديك, وهذا الاسلوب يجعلك تقوم بإخطاء تقوم بجعل موقع سهل الاختراق او غير امن
الاسلوب المتوسط : هذا الخيار جيد ولكن لن يقوم بالعمل الا اذا كانت لغة PHP التي قمت بتنصيبها اعلى من 4.1.0
الاسلوب الطويل : هذا هو افضل اسلوب تقوم بإستخدامه وهو الخيار الوحيد المضمون ان يعمل على اي خادم ( server ) مهما كانت اعدادات اللغه, وهو اكثرها حمايه وامانا, ولكن يحتمل ان يقوم صاحبو لغة PHP بإلغائه على المدى الطويل
ملاحظه : اذا كانت طريقة ارسال النموذج POST فسوف تستخدم الامثله الموجوده بالاعلى , ولكن لو كانت الطريقه GET فقط قم بإستبدال العباره POST بالعباره GET
الداله isset :
تقوم هذه الداله , بالتحقق من ان متغير تم انشاءه ام لا , لاحظ المثال التالي:
http://arccn.net/images/php/l16e4.gif
الداله unset :
تقوم هذه الداله بألغاء متغير موجود, لاحظ المثال التالي:
http://arccn.net/images/php/l16e5.gif
النوع HIDDEN من انوع النماذج :
في بعض الاحيان نريد ان نقوم بإرسال بيانات مخفيه من صفحه الى اخرى, ولا يعلم بوجودها الزائر , مثلا عدد الدرجات التي حصل عليها الى الان, او عنوان ال IP وغيرها , فسوف نستخدم الطريقه التالي:
http://arccn.net/images/php/l16e3.gif
1 – اسم المتغير
2 – القيمه الموضوع بالمتغير
تطبيق عملي :
ماهو التطبيق العملي المناسب, احترت كثيرا في اختياره , ولهذا تأخر صدور الدرس يوما كاملا, ولاننا في دروس مبتدئه ولم نقم بالمرور على قواعد البيانات او حفظ الملفات, فسوف نقوم بعمل تطبيق عملي بسيط, وهو نموذج الاختبار الذي قمنا بعمله سابقا, ولكن سوف نقوم بوضع الاسئله واجاباتها في مصفوفه وانشاء السؤال بطريقه عشوائيه , افتح محرر الاكواد وقم بكتابة التالي:
http://arccn.net/images/php/l16e6.gif
http://arccn.net/images/php/l16e7.gif
http://arccn.net/images/php/l16e8.gif
http://arccn.net/images/php/l16e9.gif
سأشرح لك التطبيق بطريقه سريعه, ولو تعمقت في طريقة الكتابه وقرأت التعليقات, سوف تتمكن من معرفة طريقة عمل البرنامج الصحيحه, لنبدأ.
1 – انشأنا عباره شرطيه, اذا كان المتغير انشأ من قبل فذلك يعني ان المستخدم قد نقر على زر الارسال في النموذج ( جاوب على السؤال ) وارسل المتغير, غير ذلك نقوم بعرض السؤال
2 – نضع 3 اسئله في مصفوفه حرفيه , ثم نقوم بترتيبها عشوائيا واختيار السؤال الاول واجابته في المصفوفه, ونضعه في مصفوفه اخرى رقميه بحيث ان الخانه 0 السؤال والخانة 1 الاجابه , واستخدمنا العباره break لاننا نريد اخذ السؤال الاول واجابته فقط, غير ذلك يخرج من دالة التكرار FOR
3 – انشأنا مدخلين من النوع المخفي ( hidden ) نضع بها السؤال المطروح والاجابه الصحيحه له
4 – اذا قام المستخدم بالاجابه نقوم بعبارت شرطيه التحقق ان المستخدم ادخل الاجابه وانها ارقام وغير ذلك

سؤال على الدرس :


1 – توجد الف طريقه لعمل هذا التطبيق, حاول ان تقوم بعمله بطريقه اخرى بإستخدام المصفوفات ولكن بطريقه اسهل من هنا ,

قلب., 9 - 11 - 2011 11:28 PM

اهداف الدرس :
  • مقدمه عن برمجة الكائنات ( Object Oriented )
  • مبدأ التعدديه ( Polymorphism )
  • مبدأ الوراثه ( Inheritance )
  • انشاء التصنيفات ( Class ) , الخواص ( Attribute ) , العمليات ( Operations )
  • مؤسس التصنيف ( Constructer )
  • استخدام التصنيفات

مقدمه عن برمجة الكائنات ( Object Oriented ) :


برمجة الكائنات نعني بها , الوصول بالبرمجه الى محاكاة الواقعيه, كثير من البرامج التي لا تدعم الكائنات يصعب فهم كودها, ولكن مع هذه الطريقه, يوجد لدينا طريق نحاكي به الواقع, لو فكرت قليلا وسألت نفسك, كيف يمكنني ان اقوم بمحاكاة سيارة , طائره , انسان وغيرها, صدقني سيصعب عليك ذلك من غير هذا المبدأ ولكن اذا استخدمت برمجة الكائنات فيسهل عليك فعل كل شي محاكي للواقع تريده, فمثلا لو قلنا ان لدينا تصنيف ( Class ) اسمه بشر , اكيد ان هذا البشر لديه خواص ( attributes ) فهو ينتمي الى نوع وهو ذكر او انثى, لديه اسم , لديه عمر , لديه لون بشره , لديه طول , لديه وزن وهكذا, ولديه عمليات ( operations ) يقوم بها كالنوم والاستيقاظ, والافطار, تخيل انك تقوم بفعل هذا كله بالبرمجه ؟؟؟ ماهو الاسهل بالنسبه لك الطريقه المعتاده من كتابة الاكواد , او الطريقه الجديده التي سنتعلمها بعد قليل http://arccn.net/wp-includes/images/...icon_smile.gif . وايضا نستطيه استخدام هذا المبدأ للاشياء المبدئيه, كالملفات مثلا , فيوجد لدينا ملف , ولديه اسم ولديه حجم , ولديه نوع وغير ذلك.
كثير من لغات البرمجه الحديثه تدعم مبدأ ( Object Oriented ), وتعتبر التي لا تدعمها ضعيفه, فأصبح كل شي في هذه الايام يعتمد على هذا المبدأ, فهو اسرع , اسهل , اكثر حمايه من الكود العادي, وبعض اللغات يطلب منها ويلزم عليها ان تكون مبنيه على هذا المبدأ. ومن وجهة نظري انا, اعتقد ان البرنامج الذي لا يستخدم هذا المبدأ لن يكون جيدا , ( ليس في كل الحالات ).
من اعظم فوائد مبدأ ( Object Oriented ) دعم والتشجيع على مبدأ ( Encapsulation ) ونعني به ( اخفاء المعلومات ), حيث اننا لا نستطيع التحكم في الخواص او المعاملات الا عن طريق الكائن, ومانسميه بواجهة الكائن. حى لو اردنا تغير نوع او اصلاح او اضافة اي شيئ, فسوف نرجع الى التصنيف الاساسي , ولن تطرق الى تعديل جميع اكوادنا. ويمكننا انشاء اكثر من ( Object ) من هذا التصنيف, حيث كل واحد منهم منفصل عن الاخر, فتخيل لدينا التصنيف الاول ( البشر ) فنستطيع انشاء عدة كائنات منه , واحد اسمه محمد ولديه خواص معينه , والاخر اسمه نوال ولديه خواص ومعاملات اخرى, ولا يعني انهم واحد, فكل واحد منهم منفصل على الاخر, ولديه تحكمات وخواص خاصه به.
مبدأ التعدديه ( Polymorphism ) :
بحثت في كثير من المعجمات والتراجم عن معنى هذه الكلمه بالعربيه ولم اجد, ولكن قرأت كتابا يقول عنها ( Different Classes have different behaviors for the same operations ) ومعنى ذلك باللغه العربيه, ان تصنيفات مختلفه يكون لديها سلوكات مختلفه لنفس العمليات, معادله رياضيه اليس كذلك ؟ لن تستطيع فهمها بسرعه, يجب ان تأخذ عليها امثله كثيره ليصل المبدأ الى العقل وتقوم بإستيعابه, واترك ذلك علي فسأحاول قدر الامكان ان اقوم بتسهيله لك. لنأخذ مثالا على ذلك, لو عندنا تصنيف سياره وتصنيف دراجه هوائيه, فكل منهما لديه خاصية التحرك ولكن في السياره يجب ان تقوم بالتشغيل, ولكن في الدراجه بطريقه اخرى ولا يوجد لدينا تشغيل, ولكن في لغات البرمجه لا يوجد لدينا هذا الواقع ولا تقوم بمحاكاة الواقع 100%100 فلذلك تحتاج اللغه ( polymorphism ) لكي تعرف اي عمليه تقوم بعملها لاي تصنيف. لنقولها بطريقه واقعيه باستخدام اللغه العربيه, الدراجه تحتاج الى تقوم بصيانتها , صبغها , تنظيفها , تلميعها , ونفس الشيئ السياره , ولكن اذا قلت اريد ان انظف, فيوجد بعقلك ماهو الشيئ الذي تريد ان تقوم بتنظيفه هل هو سياره او دراجه, هل وصلت الفكره ؟؟
مبدأ الوراثه ( Inheritance ) :
عملية الوراثه سهله, فأنت على سبيل المثال, ورثت صفة الحواجب العريضه من الاب, و الانف المعتدل من الام وغير ذلك, ولكن لديك اشياء وخواص خاصه بك لا توجد في الاب و الام اليس ذلك صحيحا ؟ نفس الشيئ هنا, لنضرب مثالا على ذلك , لدينا شركة سيارات, تقوم ببيع سيارات على عدة انواع ( رياضيه , عائليه , جيب ) , كل منهم لديهم خواص متماثله , كل سياره لها لون, كل سياره لها 4 عجلات, وغيرها, ولكن كل نوع لديه بعض الخصائص لا توجد في الاخرى, الرياضيه مقعدان فقط, الجيب 7 مقاعد , العائليه 5 مقاعد. في مبدا الكائنات نقوم بعملها كالتالي, ننشئ تصنيف اسمه سياره, وثلاث تصنيفات اخرى ونجعلها تورث الصفات من التصنيف سياره, هل وضحت الصوره ؟ انظر المثال التالي:
http://arccn.net/images/php/l17e1.gif
انشاء التصنيفات ( Class ) , الخواص ( Attribute ) , العمليات ( Operations ) :
تكلمنا كثيرا في درس اليوم, لنأتي الان الى تطبيقاتنا , ونأخذ امثله حيه لكيفة انشاء التصنيفات والخواص والمعاملات. يمكننا انشاء تصنيفات بإستخدام العباره class لاحظ المثال التالي:
http://arccn.net/images/php/l17e2.gif
تصنيفنا هذا يحتاج الى خواص , لنقم الان بإنشاء خاصيتين , وهي اسم السياره ولونها , ونقوم بإنشاء الخواص بإستخدام العباره var , لاحظ التالي :
http://arccn.net/images/php/l17e3.gif
————————————————–
مؤسس التصنيف ( Constructer ) :
في كل تصنيف نقوم بإنشائه يجب علينا ان نقوم بإنشاء مؤسس لهذا التصنيف ويسمى ( Constructer )وهو نوع خاص من العمليات, وينادى هذا المؤسس في حالة انشاء الكائن وفي العاده يقوم ببدأ خواص الكائن, كجعل الخواص تبدأ من البدايه وغيرها, ويجب ان يكون اسمه بنفس اسم التصنيف, والطريقه هي كالتالي:
http://arccn.net/images/php/l17e5.gif

————————————————–

وايضا نحتاج الى ان ننشئ بعض المعاملات على هذا التصنيف , ونقوم بذلك بإستخدام الدوال التي تعلمناها سابقا, راجعالدرس الحادي عشر: ادراج الملفات والدوال بأنواعها, لاحظ التالي :
http://arccn.net/images/php/l17e4.gif
استخدام التصنيفات :
الان قمنا بإنشاء تصنيف خاص بنا, نريد ان نقوم بإستخدامه, او البدأ بالعمل عليه, كيف نقوم بذلك ؟؟ لاحظ المثال التالي:
http://arccn.net/images/php/l17e6.gif
لاحظ اننا نقوم بإنشاء كائن في كل مره نقوم بإنشاء كائن من التصنيف, ولذلك سوف يكون ناتجنا هو التالي:
http://arccn.net/images/php/l17e7.gif

قلب., 9 - 11 - 2011 11:30 PM

أهداف الدرس :
  • استخدام خصائص التصنيفات
  • استخدام معاملات التصنيفات
  • الوراثه ( Inheritance )
  • الوراثه المتعدده

استخدام خصائص التصنيفات :


تعلمنا في السابق , كيفية انشاء تصنيف وتشغيله وانشاء خصائصه وعوامله, الان سنتعلم كيفية استخدام كل جزء من التصنيف لنعطي تحكم اكبر بالتصنيف والتعامل معه بطريقه تساعدنا على الوصول الى ما نريد اليه, عندما انشأنا التصنيف سياره, قامت
PHP بنفسها انشاء متغير لنا اسمه $this ومعناه ( هذا ), فلو لاحظنا في تصنيفنا السابق ان لدينا خاصيتان واحده منهما هي $carName اليس ذلك صحيحا ؟ , فلو اردنا استخدام هذا المتغير او اردنا الاشاره عليه فسوف نقوم بالتالي $this->carName , سواءً اردنا استخدامه او اردنا تعيين قيمه اليه , داخل معامل او خارجه. لاحظ معي الكود التالي:
http://arccn.net/images/php/l18e1.gif
في لغة PHP جميع الخصائص التي نقوم بعملها تكون عامه ( public ) , ( تم تغيير ذلك في النسخه رقم 5 من اللغه وسنتطرق اليها لاحقا ) , حيث ان يمكننا استخدامها خارج التصنيف في كل الحالات , فمثلا لاحظ التالي:
http://arccn.net/images/php/l18e2.gif
لاحظ اننا هنا لم نقوم بإستخدام ميزة التصنيفات الرئيسية وهي ( اخفاء المعلومات ) , ويجب ان نقوم بإستخدامها لكي نضمن الحمايه الكامله لبرنامجنا , ولكن هناك طريقة اخرى يمكننا الوصول بها الى اخفاء الملعومات وهي , استخدام المعاملات , فنضع معامل يقوم بتغير قيمة خاصيه , ومعامل يقوم بوضع قيمه في خاصيه وغيرها , لاحظ المثال التالي:
http://arccn.net/images/php/l18e3.gif
1 – معامل يقوم بإرجاع قيمة خاصيه
2 – معامل يقوم بإسناد قيمه الى خاصيه
الان سوف نستخدمه بالطريقه التاليه:
http://arccn.net/images/php/l18e4.gif
ويمكننا الان , وضع شروط بحيث ان اللون لا يمكن ان يكون احمر على سبيل المثال, شاهد التالي:
http://arccn.net/images/php/l18e5.gif

استخدام معاملات التصنيفات :

الان , لنرى المعاملات , نفس الطريقه التي تعلمناها قبل قليل , ويجب عليك ان تعرف ان كان المعامل يطبع قيمه سوف تقوم بالتالي:
$x->newColor()
اما اذا كان يرجع قيمه ( اي تستخدم في الاخير العباره return ) فتقوم بالتالي

echo $x->newColor()

او
$y = $x->newColor()
بكل سهوله http://arccn.net/wp-includes/images/...icon_smile.gif , اليس ذلك صحيحها ؟
الوراثه ( Inheritance ) :
اذا كنت تريد ان تقوم بعمل الوراثه الي تكلمنا عنها في الدرس السابق , سوف تقوم بإستخدام الكلمه المفتاحيه extends وطريقة عملها كالتالي:
http://arccn.net/images/php/l18e6.gif
الان لو اردنا انشاء , كائن من هذا التصنيف , سوف يكون كالتالي:
http://arccn.net/images/php/l18e7.gif
طبعا يمكننا استخدام كل عاومل وخصائص التصنيف الذي نرث منه , ولكن العكس ليس صحيح , فلو قلنا ان ( ب ) يرث التصنيف ( أ ) , فسوف تكون خصائص وعوامل ( أ ) كلها موجوده في ( ب ) , ولكن خصائص ( ب ) غير موجوده في ( أ )

الوراثه المتعدده :

كثير من لغات البرمجه , لا تسمح بالوراثه المتعدده , واعني بذلك , اذا كان التصنيف ( ت ) , يرث من ( أ ) ومن ( ب ) في نفس الوقت , فذلك غير مسموح , بحيث ان كل تصنيف , يرث من مكان واحد فقط , ولكن اذا كان هناك ( أ ) وهناك ( ب ) و ( ج ) , فيمكن ل ( ب ) و ( ج ) ان يرثو ( أ ) في نفس الوقت.

قلب., 9 - 11 - 2011 11:30 PM

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

التحرير والتحكم بالنصوص :


ترى كثيرا ان معظم المواقع تجعلك تضع معلومات وتقوم بإرسالها اليهم , سواء اسمك او بريدك او رسالتك , ولكن هل تعتقد انها تمر اليهم من غير فلتره ؟؟؟ متأكد ان جوابك سيكون لا, فالموقع لا يضمن ما يقوم بإدخاله المستخدم , هل هو المطلوب , او مجرد كلام ليس له معنى , اليس كذلك صحيحا ؟ فهنا تأتي فائدة تحرير واالتحكم بالنصوص , وسوف نستعرض اليوم دوال كثيره تجعلك تتحكم بالنصوص لكي تقوي برامجك وتجعلها محميه وقويه.
الدوال chop و ltrim و trim :
تستخدم هذه الدوال لكي نضمن ان المستخدم لي يضع اي فراغات في المدخل , يمكن ان تقول هذا الشيئ غير ضروري , ولكنه ضروري اذا كنت ستحفظ هذه المعلومه في قواعد البيانات او تريد مقارنة النص , فالمسافه محسوبه في النصوص , الداله trim تقوم بألغاء اي مسافات من بداية ونهاية النص, لاحظ المثال التالي:
http://arccn.net/images/php/l19e1.gif
عرفت الطريقه الان ؟ بالنسبه للداله ltrim فهي تقوم بنفس عمل trim ولكن تلغي المسافات من الجزء الايسر , اي من بداية النص , اما الداله chop فتقوم بألغاء المسافه من الجزء الايمين , اي اخر النص
الدالتين printf و sprintf :
تقوم هذه الدالتين بنفس عمل الداله print والفرق بينهما وبين العباره print انها تقوم بطباعة النص بطريقه معينه, لم تفهم ما اعنيه ؟ لنأخذ مثالا , تخيل ان لديك عدد ( 2.258982 ) على سبيل المثال , وتريد ان تطبع هذا العدد ولكن بالطريقه التاليه ( 2.25 ) فسوف تستخدم هذه الدالتين, الاختلاف بين printf و sprintf ان الاولى تقوم بالطباعه ام الثانيه فتقوم بإرجاع النص المعدل. الان لاحظ المثال التالي:
http://arccn.net/images/php/l19e2.gif
والناتج هو نفسه تماما , ولاحظ في الداله printf , ندخل اليها مدخلان , النص و
القيمه المستبدله , فتقوم بإستبدال %s ب قيمة $total , ارأيت السهوله ؟ ملاحظه معنى %s هو ( استبدل بالنص او القيمه الثانيه المدخله ). الان لو اردنا ان نطبع العدد هكذا 2.25 سوف نقوم بالتالي:
http://arccn.net/images/php/l19e3.gif
وناتجنا هو التالي:
http://arccn.net/images/php/l19e4.gif
يمكنك ان تدرج اكثر من خاصية تحويل ( % ) في النص , لاحظ المثال التالي اضغط على
الصوره للتكبير :

ملاحظه ( كل خواص التحويل تبدأ بي علامة % , ولو احتجت يوما ما الى طباعة هذا الرمز الى المتصفح استخدم الطريقه %% ) , لكي تعرف الخواص الاخرى في التحويل لاحظ المثال الجدول التالي
النوع
المعنى
b
يترجم على شكل عدد صحيح ويطبع على شكل ثنائي
c
يترجم على شكل عدد صحيح ويطبع على شكل على حروف
d
يترجم على شكل عدد صحيح ويطبع على شكل عشري
f
يترجم على شكل عدد عشري ( double ) ويطبع على شكل عشري ( float )
s
يترجم على شكل نص ويطبع على شكل نص

الدوال strtoupper و strtolower و ucfirst و ucwords :
الداله strtoupper تقوم بجعل كل الحرووف كبيره ( باللغه الانجليزية ) , اي تقوم بتحويل a الى A وهكذا
الداله strtolower تقوم بجعل كل الحروف صغيره ( باللغه الانجليزية ) اي تقوم بتحويل A الى a وهكذا
الداله ucfirst تقوم بجعل اول حرف من الجمله بالحاله الكبيره
الداله ucwords تقوم بجعل اول حرف من كل كلمه في النص الى الحاله الكبيره
http://arccn.net/images/php/l19e6.gif
والناتج هو
http://arccn.net/images/php/l19e7.gif
جمع وتفصيل النصوص :
في كثير من الاحيان نريد ان نفصل نص عن النص الكلي , لكي نقارن او نتحكم او اي شي اخر , وبعض الاحيان نريد ان نقوم بجمع النصوص مع بضها البعض وسوف نتعلم الان الطرق لعمل ذلك ,
الداله explode و implode و join :
تستخدم الداله explode لفصل النص عن بعضه البعض وتقوم بإرجاع الناتج على شكل مصفوفه , فلو ان المستخدم ادخل بريده الالكتروني , ونريد ان نعرف ماهي الشركه الي يستخدمها سوف نقوم بالتالي :
http://arccn.net/images/php/l19e8.gif
الدالتين implode و join متطابقه تماما , فلو اردنا جمع نص مع بعضه البعض سوف نقوم بعمل التالي:
http://arccn.net/images/php/l19e9.gif
الداله substr:
تستخدم هذه الداله لتعطيك تحكما في نص جزء من نص اكبر بتحديد البدايه والنهايه وتقوم بإرجاع النص المطلوب, فمثلا لو لديك النص ( Hello World ) وتريد ان تأخذ كلمة hello فقط , فسوف تقوم بالتالي:
http://arccn.net/images/php/l19e10.gif
الان لو تلاحظ كيفية عمل الداله فهي كالتالي ( قارن الارقام مع الصوره بالاسفل ) :
1 – النص المراد ان تأخذ جزأ منه
2 – مكان البدايه
3 – مكان النهايه
http://arccn.net/images/php/l19e11.gif
نبدأ النصوص دائما من 0 , وفي مثالنا من 0 الى 5 , نعني به 0 و 1 و 2 و 3 و 4 , لاحظ
التالي:
http://arccn.net/images/php/l19e12.gif
لو اردنا الجمله من مكان معين الى النهايه فسوف نضع قيمة البدايه فقط , لاحظ التالي:
http://arccn.net/images/php/l19e13.gif
وسوف ينتج لنا llo world
مقارنة النصوص :
في السابق قلنا اننا لو اردنا ان نقارن سوف نستخدم == او === اليس ذلك صحيحا ؟ هناك طرق اخرى للمقارنه سوف نراها الان ,
الدوال strcmp و strcasecmp:
هذه الدوال تستخدم لمقارنة النصوص , فالداله strcmp تقوم بإعطائنها نصين وتقوم بمقارنتهما , اذا كانو متساوييان سوف ترجع لك القيمه 0 , اما اذا كان الاول اكبر من الثاني سوف ترجع رقم اكبر من الصفر واذا كان اصغر سوف ترجع قيمه اقل من الصفر ( اي بالسالب ) , وهذه الداله حساسه لحالة الاحرف , لاحظ التالي:
http://arccn.net/images/php/l19e14.gif
الداله strcasecmp مطابقه للداله strcmp والفرق ان strcasecmp حساسه لحالة
الاحرف
الداله strlen :
تستخدم هذه الداله لمعرفة طول نص معين , وطريقتها كالتالي:
http://arccn.net/images/php/l19e15.gif
مطابقة وبحث وتغيير النصوص :
دوال البحث عن النصوص strstr و strchr و strrchr و stristr :
الدالتين strstr و strchr متطابتقين تماما و حساسه لحالة الاحرف , مع ان الثانيه تستخدم للبحث عن الاحرف ولكن الاولى تؤدي نفس العمل , وهي الافضل والمناسبه دائما , طريقة هذه الداله كالتالي:
http://arccn.net/images/php/l19e16.gif
1 – النص الكلي
2 – الكلمه المراد البحث عنها
اذا وجدت الداله كلمه مطابقه فسوف تقوم بإرجاع الكلمه ثم باقي الجمله , وتهمل ما قبل
الكلمه التي عثر عليها , لاحظ ناتج مثالنا بالاعلى
http://arccn.net/images/php/l19e17.gif
بالنسبه للداله stristr فهي مطابقه ل strtsr والفرق هو انها غير حساسة لحالة الاحرف, اما الداله strrchr فهمي ايضا مطابقه والفرق الوحيد هو انه اذا كانت الكلمه مكرره مرتين في الجمله , فسوف تقوم بإرجاع النص من اخر مكان تكررت فيه الجمله, على عكس strstr فهمي تقوم بإرجاع النص من اول مكان تكررت فيه الجمله
دوال تحديد اماكن النص strpos و strrpos :
هذه الدوال مشابه تقريبا الى strstr والفرق ان هذه الدوال تقوم بإرجاع المكان الرقمي للنص , لاحظ المثال التالي,
http://arccn.net/images/php/l19e18.gif
وسوف تقوم هذه الداله بإرجاع الرقم 6 , لان الكلمه world بدأت من الخانه 6 , قم بالعد وقارن http://arccn.net/wp-includes/images/...icon_smile.gif
الداله strrpos سوف تقوم بأرجاع اخر مكان ظهر به النص على عكس strpos , كما تعلمنا في دوال البحث في الاعلى
دالة تغيير النصوص str_replace :
تقوم هذه الداله str_replace بإيجاد نص وتغييره , وهي مفيده جدا لتتغير السريع , وطريقتها كالتالي:
http://arccn.net/images/php/l19e19.gif
1 – الكلمات التي نريد استبدالها
2 – الكلمات الجديده
3 – الجمله
لاحظ انه بالامكان ان نجعل الكلمات الجديده , والكلمات القديمه , في مصفوفه كل واحده على حده , لكي نقوم بإستبدال اكثر من كلمه , ويمكن ايضا من غير مصفوفه , حيث ان جميع الحالات مسموحه , واصبحت هكذا من نسخة PHP رقم 4.0.5

قلب., 9 - 11 - 2011 11:31 PM

اهداف الدرس:
  • مقدمه عن التعابير القياسيه ( Regular Expressions )
  • العثور على النصوص بإستخدام التعابير القياسيه
  • استبدال النصوص بإستخدام التعابير القياسيه
  • فصل النصوص بإستخدام التعابير القياسيه

مقدمه عن التعابير القياسيه ( Regular Expressions ) :


تدعم لغة PHP نوعان من التعابير القياسيه , وهي POSIX و PERL , الاول يكون مدمج مع اللغه تلقائيا ولكن الاخر يحتاج الى ان تقوم بتنصيبه ,, لا تقلق فعند استخدامك التنصيب العادي للغة سوف يتم وضع الاثنان معا , يعتبر النوع الاول اسهل في التعلم والطبيق من النواع الثاني , ويتم ترجمته وتشغيله اسرع ,, ولكنه ليس امن كالثاني http://arccn.net/wp-includes/images/...icon_smile.gif . جميع ما تعلمناه في الدرس السابق كان عباره عن مقانرة نصوص متطابقه او اجزاء من النصوص ولكن ماذا لو احتجنا الى ان نقوم بشيئ اكثر من ذلك ,, فالتعابير القياسيه هي مبتغانا ,, وسوف نقم بالتعلم عليها والتطبيق عليها.
الاساسيات:
التعابير القياسيه هي طريقة لوضع او شرح نمط معين مكرر في نص , فالعباره ( email )
تساوي في التعابير القياسيه ( mail ) و ( ma ) و ( i ). لكن مع استخدام التعابير القياسيه يمكننا المقارنه بالطرق التاليه ,, يقع الحرف في اول النص , الاخر , الوسط , وغير ذلك من الطرق التي سنتطرق لها
الاحرف والتصانيف:
لنأخذ امثله لكي نفهم الاحرف والتصانيف , لو استخدمنا الحرف ( . ) فهذا يقوم بمطابقة اي حرف اخر غير علامة السطر الجديد ( http://arccn.net/images/php/l20e7.gif ) , فلو قلنا نريد ان نقوم بمطابقة .at
فسوف يكون النتاج كالتالي , cat و mat و sat . لكن هذه الطريقه سوف تقوم ايضا بفرض ان #at نريده مع المقارنه , لكن هناك حل بأن نقوم بجعل المطلوب فقط احرف بالطريقه التاليه [a-z] ارأيت السهوله ؟ مثلا لو اردنا احرف ( vowel ) في مجموعه , سوف نقوم بالتالي [aeiou] , ويمكن استخدام مدى كما فعلنا قبل قليل [a-z] او اكثر من مدى [a-zA-Z] وهذا معناه اي حرف من a الى z سواء كان في حالته الصغرى او الكبرى ( في اللغه الانجليزيه ) , ويمكن ايضا ان نخرج مدى من المقارنه كالتالي [^a-z] فهذا يقوم بمقارنة اي حرف غير a الى z فالعلامه ^ اذا وضعت بين الاقواس [] معناها ( not ) اي ( ليس ) , وضحت الفكره الان ؟ بجانب المدى الذي نقوم بتحديده , او نريد مدى معين في بالنا , هناك مدى معرف سابقا في لغة PHP , لاحظ الجدول التالي:
المدى
المعنى
[[:alnum:]]
كل الارقام
[[:alpha:]]
كل الاحرف
[[:lower:]]
كل الاحرف في النمط الصغير
[[:upper:]]
كل الاحرف في النمط الكبير
[[:blank:]]
فراغات و علامة TAP
[[:space:]]
علامات الفراغات
[[:print:]]
كل الاحرف القابله للطباعه
[[:graph:]]
كل الاحرف القابله للطباعه ما عدا المسافات

التكرار:
في بعض المرات , تريد ان تقول ان هناك بعض النصوص تكرر اكثر من مره, يمكنك التعبير هنا بطريقتين في التعابير القياسيه ,, الاولى بإستخدام الحرف * و معناه ان النمط يمكن تكرار ( صفر او اكثر ) من مره. والطريقه الاخرى هي الحرف + وهذا معناه ان النمط يمكن ان يتكرر ( مره او اكثر )
اجزاء التعابير:
مثال على هذه الطريقه لتوضيحها , (very )*large سوف تقوم بمطابقة التالي: ‘large’ و ‘very large’ و ‘very very large’ وهكذا
عد اجزاء التعابير:
يمكنك تحديد عدد تكرار بعض الاشياء بإستخدام الارقام بين الاقواس {} , يمكنك
تحديد مطابقة تماما بالطريقه التاليه {4} ومعناه 4 مرات تكرار , او مدى تكرار {2 , 4}
ومعناه من مرتان الى اربع مرات او مدى غير منتهي {2, } ومعناه على الاقل مرتان تكرار , فلو عملنا التالي (very ){1,3} فسوف يطابق التالي ‘very ‘ و ‘very very ‘ و ‘very very very ‘.
بداية ونهاية التعابير القياسيه :
الطريقه التي سأعرضها الان سوف تقوم بتعليمك ان تطابق النص اذا كان في البدايه او النهايه وغيرها , ويمكن ذلك بإستخدام الحرف ^ , ( انتبه , لا تقم بالتعارض مع الطريقه التي بالاعلى ) , هذا الحرف ^ يقوم بالمقارنه في بداية النص والحرف $ يقوم بالمقارنه في نهاية النص. فلو قلنا ^bob فهذا يطابق bob في بداية النص , ولو قلنا com$ فهذا يقارن com في نهاية النص, لو تلاحظ المثال التالي ^[a-z]$ فهذا معناه ان يطابق اي حرف في النص كل على حده
التفريعات :
لو اردنا ان نطابق العبارات com او edu او net فسوف نستخدم الطريقه التاليه (com) | (edu) | (net)
( ملاحظه: لو ادرت ان تطابق احدى علامات التعابير مثل $ او * فيجب ان تضع امامها العلامه http://arccn.net/images/php/l20e8.gif , فلو اردت ان تطابق العلامه http://arccn.net/images/php/l20e8.gif فسوف تقوم بالتالي http://arccn.net/images/php/l20e9.gif )

العثور على النصوص بإستخدام التعابير القياسيه :

هناك نوعان لمطابقة التعابير القياسيه , وهما ereg و eregi وطريقة عمل الاول كالتالي:
http://arccn.net/images/php/l20e1.gif
هذه الداله تبحث في العباره ( search ) عن ما يطابقه بالنمط ( pattern ) , لو قلنا ان لدينا نموذج يضع فيه المستخدم بريد الكتروني ونريد ان نتحقق من صحة البريد الالكتروني , فسوف يكون التعبير القياسي كالتالي:
http://arccn.net/images/php/l20e10.gif
لنقم بشرح كل عباره على حده :
http://arccn.net/images/php/l20e11.gif
هذه العباره تعني ان يبدأ النص على الاقل بحرف واحد او رقم واحد او علامة _ او – او مجموع منهم ثم العلامه @
http://arccn.net/images/php/l20e12.gif
هذا التعبير يطابق الجزء الاول من العنوان مثلا ( yahoo ) ثم العلامه . واستخدمنا \ كما قلنا بالاعلى
http://arccn.net/images/php/l20e13.gif
يطابق نهاية البريد الالكتروني مثلا (com)
الان طريقة الاستخدام كالتالي
http://arccn.net/images/php/l20e2.gif
الدالة eregi تقوم بنفس العمل , ولكنها غير حساسه لحالة الاحرف.

استبدال النصوص بإستخدام التعابير القياسيه:

يمكن استخدام دالة استبدال النصوص ereg_replace او eregi_replace بنفس طريقة استخدام الدالة str_replace التي تعلمناها في الدرس السابق, وكما تعلم الداله eregi_replace هي نفسها الداله ereg_replace ولكن غير حساسة لحالة الاحرف
http://arccn.net/images/php/l20e3.gif
فصل النصوص بإستخدام التعابير القياسيه:
داله اخرى مفيده في التعابير القياسيه وهي split ,, وطريقتها كالتالي
http://arccn.net/images/php/l20e4.gif
الان لاحظ المثال التالي:
http://arccn.net/images/php/l20e5.gif
وناتج المثال هو كالتالي:
http://arccn.net/images/php/l20e6.gif

سؤال على الدرس :


1 – قم بالتعديل على تطبيق الدرس السابق , لكي يضمن التحقق من صحة البريد الالكتروني وان يكون الشركه غير مجانيه على سبيل المثال , واذا كانت الرساله تحوي على كلمة قطع غيار فيتم ارسالها الى قسم معين وهكذا

قلب., 9 - 11 - 2011 11:32 PM

أهداف الدرس :
  • لماذا التاريخ والوقت ؟
  • ايجاد وطباعة التاريخ والوقت

لماذا التاريخ والوقت ؟ :


الوقت والتاريخ من الاشياء المهمه جدا لبناء ويب متكامل , فالمستخدم يريد معرفة تاريخ اليوم , تاريخ نشر المقال , او الخبر وغيرها ,, ويمكن انه يريد ان يعرف وقت كتابة المقال , ليس هذا فقط , فصاحب الويب يريد معرفة تاريخ تسجيل مستخدم معين او تاريخ دخوله وتاريخ ارساله رساله الى الموقع, كل هذه الاشياء تجعل التاريخ مهم جدا لنا في بناء الويب. والتاريخ والوقت في لغة PHP سهل جدا , مجرد دوال نقوم بإستخدامها بطريقه صحيحه ونحصل على الناتج المراد. لنتابع الطريقه معا http://arccn.net/wp-includes/images/...icon_smile.gif
ايجاد وطباعة التاريخ والوقت :
لكي نقوم بطباعة التاريخ والوقت وايجاده وتنسيقه نستخدم الداله date() وهذه الداله عملها سهل جدا , تأخذ قيمتين واحد اساسي وواحد افتراضي ,, لاحظ التالي:
http://arccn.net/images/php/l21e1.gif
فلو اردنا طباعة تاريخ اليوم , سوف نقوم بالتالي:
http://arccn.net/images/php/l21e2.gif
وسوف يكون الناتج هو التالي:
http://arccn.net/images/php/l21e3.gif
الان تابع مع الجدول التالي لنرى ماهي الرموز المستخدمه لانشاء التاريخ والوقت بأشياء مختلفه:

الرمز

المعنى

مثال
aالوقت صباحا او مسائاam , pmAالوقت صباحا او مسائاAM , PMdاليوم في الشهر على شكل ارقام من خانتين , الخانه
الاولى صفرمن 01 الى 31Dاليوم في الشهر , ثلاث خانات مختصر , على شكل حروفمن mon الى sunFالشهر في السنه , مكتوب كاملاSeptembergالساعه في اليوم على مدى 12 ساعهمن 1 الى 12Gالساعه في اليوم على مدي 24 ساعهمن 0 الى 23hالساعه في اليوم على مدى 12 ساعهمن 01 الى 12Hالساعه في اليوم على مدى 24 ساعهمن 00 الى 23iالدقائق في الساعهمن 00 الى 59Iنهار او مساءنهار 1 , مساء 0jاليوم في الشهر على شكل ارقام من غير صفرمن 1 الى 31lاليوم في الشهر , مكتوب كاملا على شكل حروفMondayLالسنه الكبيسهكبيسه 1 , غير كبيسه 0mالشهر في السنه , على شكل خانتان بدأ من الصفرمن 01 الى 12Mالشهر في السنه على شكل ثلاث خانات , حروفJannالشهر في السنه , على شكل خانتان , لا يبدأ بالصفرمن 1 الى 12sالثواني في الدقيقه على شكل خانتان بدأ من الصفرمن 00 الى 59Sالاختصارات للاحرفTH , ST , NDtمجموع الايام في الشهرمن 28 الى 31Uمجموع عدد الثواني من تاريخ 1970 المسمى بي UNIX
TIME STAMPwاليوم في الاسبوع على شكل ارقامSunday => 0
, Saturday => 6yالسنه على شكل رقم من خانتان99 , 98 , 05Yالسنه على شكل رقم من اربع خانات2000 , 2005zاليوم في السنه على شكل ارقاممن 0 الى 365
التعامل مع Unix time stamp :
المدخل الثاني للداله date() هو ثواني UNIX TIME STAMP ومعنى هذا : عدد الثواني من تاريخ اول يوم في سنة 1970 وتعتبر هذه الطريقه القياسيه للتاريخ والوقت في لغات البرمجه وغيرها. اذا اردت تحويل التاريخ من الوضع العادي الى وضع UNIX TIME STAMP سوف تقوم بإستخدام الداله mktime() وطريقتها كالتالي:
http://arccn.net/images/php/l21e4.gif
ويجب عليك ملاحظة الترتيب هنا , لان اي غلط في الترتيب سوف يؤدي الى تاريخ و وقت خاطئ , لو تركت الداله من غير اي مدخل فسوف يرجع لك الوقت الحالي على شكل UNIX TIME STAMP. لاحظ التالي :
http://arccn.net/images/php/l21e5.gif
الدالة getdate() و كيفية استخدامها :
تستخدم هذه الداله على عكس سابقتها , فتقوم بإعطائها التاريخ على شكل UNIX TIME STAMP وتقوم بإرجاعه على شكل عادي , هذه الداله تقوم بإرجاع التاريخ على شكل مصفوفه حرفيه, لاحظ التالي:
http://arccn.net/images/php/l21e6.gif
المفتاح ( key ) لهذه المصفوفه في الجدول التالي:

key

value
secondsالثواني , ارقامminutesالدقائق , ارقامhoursالساعات , ارقامmdayاليوم في الشهر , ارقامwdayاليوم في الاسبوع , ارقامmonالشهر, ارقامyearالسنه , ارقامydayاليوم في السنه , ارقامweekdayاليوم في الاسبوع , على شكل نص كاملmonthالشهر, على شكل نص كامل

سؤال على الدرس :


1 – قم بإنشاء برنامج مصغر يقوم بحساب التاريخ , ويظهر الايام باللغه العربية , مثل ( سبت , احد , اثنين ) وغيرها .. مساعده : ( استخدم العباره الشرطيه IF )

قلب., 9 - 11 - 2011 11:33 PM

اهداف الدرس :
  • مقدمه عن قواعد البيانات
  • قواعد البيانات مقابل نظام الملفات
  • لماذا قواعد البيانات
  • قاعدة البيانات MySQL
  • معرفات قواعد البيانات
  • انواع الاعمده في قواعد البيانات
  • امثله على قواعد البيانات
  • العلاقات في قواعد البيانات
  • طرق ربط العلاقات في قواعد البيانات
  • تصميم قاعدة بيانات

ملاحظه عن درس اليوم: هذه مقدمه عن قواعد البيانات ومختصره , وسوف يتم الشرح بالكامل في قسم خاص عن قواعد البيانات مستقبلا


مقدمه عن قواعد البيانات
:
قواعد البيانات بحر كبير , كل ما تراه من الانظمه الحاليه والمتطوره, اساس نجاحها قواعد البيانات ولكن تتسائل ماهي قواعد البيانات ؟ قواعد البيانات عباره عن قاعدة بها جداول توجد بها المعلومات الي تقوم بتخزينها , غير واضح صحيح ؟ انظر حولك في البيت, هل يوجد لديك مكتب, اعتبره قاعدة البيانات, في هذا المكتب يوجد ادراج تضع بها اورقاك واشياء الشخصيه, درج للاقلام , درج للكتب , و درج للاوراق وهذه هي اماكن التخزين في قاعدة البيانات وماتسمى بي الجداول.
قواعد البيانات مقابل نظام الملفات :
لو تسآلت لماذا نستخدم قواعد البيانات ؟ لماذا لا نستخدم ملف ونضع فيه معلوماتنا, الاجابه بسيطه. طرق التخزين , المساحه , سهولة الاستعلام
طرق التخزين :
في الملفات نقوم بالتخزين بطريقه صعبه , فلو قلنا كل سطر يحوي على معلومات مستخدم لدينا بالموقع , وفي هذا السطر فواصل تفصل كل معلومه على حده مثل ( الاسم , العمر , كلمة المرور ) تخيل معي كيف ستقوم بقرائة هذا الملف وماهي الطريقة التي ستستخرج بها المعلومات , طريقه طويله لتقوم بعمل هذا كله ولكن مع قواعد البيانات فهي سهله جدا , فقط تقوم بتعيين نوع الحقل الذي تريده وتضع به القيم وهي تقوم بعمل الباقي من ترتيب ومن استخراج ومن وضع كل قيمه لوحدها وغيرها من الشروط مثل عدم التكرار.
المساحه :
تخيل موقع الياهو الذي يملك اكثر من مليون مستخدم , كم ملف سوف يقوم بإستيعاب جميع هؤلاء المستخدمين ؟ وكم سوف تكون احجام الملفات ؟ هل هو شي منطقي ؟ غير ان استخراج معلومه ما سوف يكون بطيئ جدا فهو غير منطقي اساسا, لكن مع قواعد البيانات فهو مسهل بطريقه ممتازه, مرتب بطريقه جيده, ولا يأخذ حيزا كبيرا مثل الملفات , وعند القراء يكون اسرع.
سهولة الاستعلام :
لو نرجع الى مثالنا , الملف الذي يحوي على اسماء المسجلين بالموقع , تخيل انهم 1000 مستخدم , كل مستخدم في سطر بالملف, لو اردت ان تقارن الاسم في الملف بالاسم الذي ادخله المستخدم فسوف تحتاج الى تقوم بقراء الملف كاملا اي 1000 سطر, لكي تقوم بإيجاد المعلومه المطلوبه , سوف تقول ماذا لو كان المستخدم في اول الملف , اذن ماذا لو كان في اخر الملف وكان رقم 1000 ؟ اعتقد ان الصوره وضحت. لكن مع قواعد البيانات فالاستعلام سهل جدا عن طريق اللغه المسماه SQL , فهي لغة منطقيه جدا وطريقتها سهله جدا فمجرد ان تقول اختر من الجدول ( مستخدمين ) القيمه التي تساوي ( اسم المستخدم المدخل ) فقط , وسوف يقوم الاستعلام بأخبارك هل يوجد اسم المستخدم ام لا .

لماذا قواعد البيانات :

اعتقد ان الكلام الذي قرأته بالاعلى اقنعك ان نظام قواعد البيانات افضل بكثير واخبرك لماذا نحتاج الى قواعد البيانات, ولكن ذلك لا يعني اننا لو اردنا عمل شي بسيط جدا ان نستعمل نظام قواعد البيانات, بل سيكون كافيا نظام الملفات ولكن في حالات نادره , ولا اظن ان هناك احد يستخدم نظام الملفات الى الان. من خصائص قواعد البيانات التالي:
  1. السرعه
  2. السهوله
  3. التنظيم
  4. تقليل التكرار
  5. تقليل المعلومات الغير مفيده
وغيرها الكثير التي لا حصر لها , ويمكن ان تذهب الى Google وان تكتب في محرك البحث why to use database , وسوف تحصل على المعلومات الكافيه التي تحتاجها.

قاعدة البيانات MySQL:

هناك كثير من قواعد البيانات موجوده الان , ويمكن انك قرأت عنها في الدرس الاول الذي يتكلم عن لغة PHP . ولكن لو لاحظت ان اغلب مبرمجين PHP يستخدمون هذه القاعده لخصائصها , فهي مجانيه , مفتوحة المصدر , سريعه , سهله. ولكن احد عيوبها انها لا تدعم العلاقات الا بطريقه معينه. وسوف نتكلم عن العلاقات في اخر الدرس.

معرفات قواعد البيانات:

لدينا 3 معرفات في قواعد البيانات وهي : قاعدة البيانات , الجدول , العمود
قاعدة البيانات :
وهي المحتوى ( الحقيبه ) التي يكون بها جميع معلوماتنا , ويمكنك انشاء اكثر من قاعدة بيانات
الجدول :
كل حقيبه لديها حافظات ( جيب ) واحد للاقلام , وواحد للاوراق وواحد للكتب ,, وهذه ما اعنيه بالجداول
العمود :
العمود هنا تخيله كأنه التفرعات لحافظات , فحافظات الاقلام ( جيب الاقلام ) يحتوي على اربع خانات لحفظ الاقلام واكثر , قلم احمر وقلم اخضر وقلم ازرق وقلم اسود

انواع الاعمده في قواعد البيانات :

الانواع الرقميه :
  • TINYINT
  • SMALLINT
  • MEDUIMINT
  • INT
  • INTEGER
  • BIGINT
الانواع العشريه :
  • FLOAT
  • DOUBLE
  • REAL
  • DECIMAL
  • NUMERIC
الوقت والتاريخ :
  • DATE
  • TIME
  • DATETIME
  • TIMESTAMP
  • YEAR
النصوص العاديه :
  • CHAR
  • VARCHAR
الكتابات و ( BLOB ) :
  • TINYBLOB
  • TINYTEXT
  • BLOB
  • TEXT
  • MEDUIMBLOB
  • MEDUIMTEXT
  • LONGBLOB
  • LONGTEXT
الخيارات والتعدديه:
  • ENUM
  • SET

امثله على قواعد البيانات:
جدول يقوم بتخزين معلومات المستخدمين:
http://arccn.net/images/php/l22e1.gif
جدول يقوم بتخزين معلومات الكتب الي تباع:
http://arccn.net/images/php/l22e2.gif

العلاقات في قواعد البيانات :

من اهم الاشياء التي يجب ان نراعيها في قواعد البيانات هي عدم التكرار , اي نجعل كل شي فريد من نوعه, لن استطيع شرح هذا كله الان , ولكن سوف اتكلم عن العلاقات في قواعد البيانات بشكل مختصر , لدينا ثلاث انواع من العلاقات :
العلاقه المسماه بي 1:1 او واحد لواحد ( One : One )
لنأخذ مثال على هذه العلاقه , تخيل ان لدينا متجر , وفي هذا المتجر يوجد عامل واحد فقط, فالعلاقه تكون ان الموظف ينتمي الى متجر واحد و المتجر يحوي على موظف واحد فقط لاحظ الصوره التاليه:
http://arccn.net/images/php/l22e3.gif
العلاقه المسماه بي M:1 او واحد لكثير ( Many : One )
تخيل ان لدينا رسام , هذا الرسام يقوم برسم عدة لوحات , ولكن كل لوحة من عمل رسام واحد فقط لاحظ الصوره التاليه :
http://arccn.net/images/php/l22e4.gif
العلاقه المسماه بي N:M او كثير لكثير ( Many : Many )
لو لدينا طلاب ولدينا مواد , فكل طالب يمكنه ان يأخذ ماده او اكثر , وكل ماده يمكن ان يأخذها اكثر من طالب اليس ذلك صحيحا ؟ ولكن هذه العلاقه ليست جيده لانها لن تحل مشكلة التكرار , ولكن نقوم بحلها عن طريق شي يسمى ( Bridge Entity ) او ( الجسر ) لاحظ الصورتين التاليه:
http://arccn.net/images/php/l22e5.gif
ولكي نقوم بحل هذه العلاقه او ايجاد طريقه اخرى لها نستخدم الجسر مثل الصوره التاليه:
http://arccn.net/images/php/l22e6.gif

طرق ربط العلاقات في قواعد البيانات :

كل جدول نقوم بإنشاءه يجب ان نجعل له ما يسمى المفاتح الرئيسي ( PRIMARY KEY ) وهذا المفتاح لا يتم تكراره في الجدول , حيث ان كل مستخدم لديه رقم رئيسي نعرفه به , ونحدد به اسمه ومعلوماته الاخرى ولكي نقوم بربطه في علاقة , في الجدول المربوط به نجعل هذه القيمه على شكل مفتاح اجنبي ( FOREIGN KEY ) لاحظ معي الصوره التاليه :
http://arccn.net/images/php/l22e7.gif
لاحظ ان العمود CustomerID في جدول CUSTOMERS هو مفتاح رئيسي ولا يمكن تكراره , ولكنه في جدول ORDERS على شكل ( FOREIGN KEY ) ويمكن تكراره , لان عدة طلبات يمكن عملها عن طريق مستخدم واحد , ولكن كل طلب مربوط بمستخدم واحد فقط.

تصميم قاعدة بيانات:

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

سؤال على الدرس :


1 – قم قراءة مواضيع عن قواعد البيانات بشكل اكبر تفصيلا , لكي تفهم هذا الدرس جيدا لانه مختصر جدا جدا

قلب., 9 - 11 - 2011 11:34 PM

أهداف الدرس:
  • كيفية التحكم في قاعدة البيانات
  • انشاء قاعدة بيانات
  • انشاء جداول في قاعدة البيانات
  • انشاء الاعمده في قواعد البيانات
  • اوامر الاستعلام في قواعد البيانات
  • دوال PHP للتحكم في قواعد البيانات

كيفية التحكم في قاعدة البيانات :


لو قمت بدراسه الدرس الاول او الثاني من دروسي, واتعبت طريقة تنصيب لغة PHP الموجوده هنا, فسوف يسهل عليك الدرس, قم بتشغيل السيرفر الشخصي الان واذهب الى المتصفح واكتب التالي:
http://arccn.net/images/php/l23e1.gif
بعد ان تفتح الصفحه التي تخبرك ان السيرفر الشخصي يعمل بشكل صحيح, قم الان بالضغط على الرابط التالي:
http://arccn.net/images/php/l23e2.gif
سترى الان صفحه, شبيه بالصوره التاليه, وهي برنامج PHP MY ADMIN وهو برنامج يتحكم في قاعدة البيانات ويسهل لك عملية الانشاء والحذف وغيرها :
http://arccn.net/images/php/l23e3.gif
لنبدأ الان خطوه بخطوه الى هدف درسنا لهذا اليوم.
انشاء قاعدة بيانات :
لنقم بإنشاء قاعدة بيانات اسمها info , الان اتبع التالي:
http://arccn.net/images/php/l23e4.gif
انشاء جداول في قاعدة البيانات :
ثم اضغط على الزر create وسوف تنقل الى الصفحه التاليه:
http://arccn.net/images/php/l23e5.gif
انشاء الاعمده في قواعد البيانات :
تحت العباره Create new table on database info تقوم بإنشاء جدول في قاعدة البيانات, لنقم بتسميته users ونحتاج ان يكون به 3 حقول ( رقم المستخدم , اسم المستخدم , البريد الالكتروني للمستخدم ), اضغط الان على الزر Go بعد ان تقوك بتعبئة البيانات كما في الصوره وسوف ترى التالي:
اضغط على الصوره لتكبيرها:

http://arccn.net/images/php/l23e6.gif
لاحظ ان اول حقل نجعل له الخصائص التاليه unsigned اي لا يمكن ان يحتوي على عدد اقل من الصفر او سالب ,, auto increment اي يزيد لكل عضو يضاف جديد تلقائيا ويولد له رقم مستخدم فريد من نوعه , واخيرا الخاصيه Primary اي يكون مفاتح رئيسي PRIMARY KEY
الحقلين الاخيرين , نجعل لهما طول الاول 20 , لنقل ان اسم المستخدم لن يزيد عن 20 حرف وبريده الالكتروني عن 50 حرف واخيرا نقوم بعمل التالي والنقر على save لاحظ الصوره:
http://arccn.net/images/php/l23e7.gif
واذا تم العمل بنجاح , سوف ترى الصفحه التاليه :
http://arccn.net/images/php/l23e8.gif
لاحظ ان الحقل user_id تحته خط وذلك يعني انه من النوع PRIMARY KEY
اوامر الاستعلام في قواعد البيانات :
سوف نمر الان على طريقة الاستعلام بلغة SQL وهي بسيطه جدا, وسوف تكون مختصره لنرى مع بعضنا البعض الان :
الامر INSERT :
ونعني به الاضافه وهو كالتالي:
http://arccn.net/images/php/l23e9.gif
المربع الاول نعني به اسم الجدول , والمربع الثاني اسماء الاعمده الي نريد الادراج بها , ولو كان العمود حقل يتم ازادته تلقائيا ( auto increment ) فلا نحتاج ان نضع له قميه فقط نقوم بوضع علامة التنصيص ”
الامر SELECT :
هذا الامر يعني الاختيار ( اي نستعلم عن معلومات معينه في قواعد البيانات ) وهو كالتالي:
http://arccn.net/images/php/l23e10.gif
نعني بالعباره * اي كل شي , ولو اردنا اختيار صف يحوي قيمه معينه نريد مطابقتها سوف نقوم بالتالي:
http://arccn.net/images/php/l23e11.gif
الامر DELETE :
نعني بهذا الامر المسح , اذا اردنا ان نقوم بمسح صف ( ليس عمود وانما صف ) فسوف نستخدم هذه العباره كالتالي:
http://arccn.net/images/php/l23e12.gif
يوجد هناك اوامر اخرى كثيره ولمعرفة المزيد عنها الرجاء زيارة العنوان التالي http://www.mysql.com
دوال PHP للتحكم في قواعد البيانات :
سأقوم الان بعرض اوامر قواعد البيانات في لغة PHP كل على حدة وبالترتيب , بدأ من الاتصال نهاية بعرض المعلومات , لنبدا بالاولى
الاتصال بقاعدة البيانات ( الداله mysql_connect و mysql_pconnect ) :
تقوم هذه الدوال بالاتصال الى قاعدة البيانات ومدخلاتها ثلاث اشياء , اسم الخادم , اسم المستخدم لقاعدة البيانات , كلمة المرور لقاعدة البيانات بالترتيب , لاحظ التالي:
http://arccn.net/images/php/l23e13.gif
بالنسبه للداله mysql_pconnect فهي تقوم بنفس العمل ولكن الاتصال بها لا ينقطع بإنتهاء الاستعلام , وانما يبقى السكربت متصلا بقاعدة البيانات
اختيار قاعدة البيانات ( الداله mysql_select_db ) :
تقوم هذه الداله بإختيار قاعدة البيانات التي تريد العمل عليها, المدخل الاول اسم قاعدة البيانات والمدخل الثاني هو حلقة الاتصال بقاعدة البيانات , وهي تعمل بالشكل التالي:
http://arccn.net/images/php/l23e14.gif
لاحظ انك لو استخدمت الداله mysql_pconnect فلن تحتاج الى ادخل حلقة الاتصال, لان الداله ستبقى متصله
ارسال الاستعلام ( الداله mysql_query ) :
هذه الداله الجميله تساعدك على ارسال استعلام الى قاعدة البيانات , مدخلها الاول الاستعلام المطلوب والمدخل الثاني حلقة الاتصال , لاحظ التالي:
http://arccn.net/images/php/l23e15.gif
استقبال الاستعلام وطباعته ( الداله mysql_fetch_array و الداله mysql_num_rows ) :
الداله mysql_num_rows تقوم بأخبارك كم صف تم ارجاعه من الداله mysql_query , لاحظ المثال التالي:
http://arccn.net/images/php/l23e16.gif
الان لو اردنا ان نقوم بعرض النتائج فسوف نقوم بإستخدام الداله mysql_fetch_array وهذه الداله تعطيها ناتج الاستعلام من الداله mysql_query وهي تقوم بطباعته عن طريق اي دالة تكرار , وتقوم الداله بإرجاع الناتج على شكل مصفوفه حرفيه , مفتاحها ( key ) هو اسم العمود في قاعدة البيانات و القيمه ( value ) هو ما يقابل هذا العمود , لاحظ المثال التالي:
http://arccn.net/images/php/l23e17.gif
قطع الاتصال من قاعدة البيانات ( الداله mysql_close ) :
اذا كنت تستخدم الداله mysql_connect فلا يتحتم عليك اقفال الاتصال وليس هو ضروري فسيتم اغلاقه عند الانتهاء من تنفيذ البرنامج , ولكن الداله mysql_pconnect فيحتاج ان تقوم بإلغاء الاتصال لانه الافضل http://arccn.net/wp-includes/images/...icon_smile.gif
http://arccn.net/images/php/l23e18.gif
معرفة الخطا من قاعدة البيانات ( الداله mysql_error ) :
تقوم هذه الداله بإعطائك رقم الخطأ اذا لم يتم عمل دوال MySQL بشكل صحيح وهي مفيده دائما , لذا انصح بإستعمالها , لاحظ التالي:
http://arccn.net/images/php/l23e19.gif

سؤال على الدرس :


1 – قم بإنشاء عدد من قواعد البيانات وحاول ان تستكشف في MySQL وحاول ان تتعود على طريقة استخدام SQL

قلب., 9 - 11 - 2011 11:35 PM

اهداف الدرس:
  • فكرة عمل البرنامج
  • تصميم قاعدة البيانات
  • العلاقات
  • انواع الاعمده في الجداول
  • كيفية عمل الموقع
  • الداله addslashes و stripslashes
  • الداله md5
  • الشكل النهائي لقاعدة البيانات

فكرة عمل البرنامج :


سوف يكون درسنا اليوم تطبيق متكامل من (أ – ي ) واتمنى ان لا اطيل او لا تصعب اي نقطه على اي متعلم مع ارسن http://arccn.net/wp-includes/images/...icon_smile.gif . فكرة برنامجنا هو ان المستخدم يقوم بالتسجيل وبعد ذلك يمكنه اضافة الدروس , وكل درس ينتمى الى قسم معين , واذا كان المستخدم هو صاحب الموقع فيمكنه اضافة قسم لكي تنتمي الدروس اليها.
تصميم قاعدة البيانات :
لو فكرنا بالبرنامج قليلا فسوف نستنتج اننا نحتاج الى ( درس – موضوع – مستخدم ) اليس ذلك صحيحا ؟ اذا هذه هي قاعدة البيانات الي نحتاجها انظر الى الصوره التالي:
http://arccn.net/images/php/l24e1.gif
العــــلاقــــات :
العلاقات في برنامجنا سهله , وجميعها من النوع ( 1 – كثير ) اي ( 1 : M ) , لنقم بشرحها الان , كل مستخدم يضيف درس او اكثر اليس هذا منطقيا ؟ فمن المستحيل ان يقوم اكثر من عضو بإضافة الدرس نفسه. كل درس ينتمي الى موضوع معين ويقوم بكتابته عضو واحد. وكل موضوع يحتوي على اكثر من درس ولا يوجد درس يضاف الى اكثر من قسم واحد. لاحظ الصوره التاليه:
http://arccn.net/images/php/l24e2.gif
انواع الاعمده في الجداول :
الجدول USER :

USERS
الحقل

النوع

الخاصيه

user_idinteger
- auto incrementprimary
keyuser_namevarchar(10)uniqueuser_passvarchar(100) user_emailvarchar(50)uniqueuser_adminenum(0,1)requ ired

الجدول LESSON:

LESSON
الحقل

النوع

الخاصيه

les_idinteger
- auto incrementprimary
keytopic_idintegerforeign keyuser_idintegerforeign keyles_titlevarchar(30)-les_texttext-

الجدول TOPICS:

TOPIC
الحقل

النوع

الخاصيه

top_idinteger
- auto incrementprimary
keytop_titlevarchar(30)-top_destext-top_imgvarchar(100)-

كيفية عمل الموقع :
نحتاج هنا الى معرفة كيفية تنقل المستخدم بين الصفحات وماهي الصفحات التي نحتاجها انظر الى الصوره التاليه :
http://arccn.net/images/php/l24e3.gif
الداله addslashes و stripslashes :
بعض النصوص نحتاج ان نقوم بإدخالها الى قاعدة البيانات, اليس ذلك صحيحا ؟ بعض محتويات هذه النصوص عاديه ولكنا قد تكون اوامر في قاعدة البيانات فتقوم بتعطيل قاعدة البيانات او تخريبها , ولذلك نستخدم هذه الدالتين , الداله addslashes قبل ادخل المعلومه الى قاعدة البيانات , وهي تعمل كالتالي:
http://arccn.net/images/php/l24e4.gif
نصيحه : ( قم دائما بإستخدام هذه الداله اذا اردت ادخال معلومات الى قواعد البيانات ,, خاصه وان كانت من طرف المستخدم , فلا يمكنك ابدا معرفة ماذا يريد السمتخدم كتابته ) http://arccn.net/wp-includes/images/...icon_smile.gif
الداله md5 :
نستخدم هذه الداله لتشفير كلمة مرور المستخدم ثم نضعها في قاعدة البيانات, فلا يصلح ان تقوم بوضع كلمة المرور كما هي , شفرها اولا ثم ادرجها , لاحظ التالي:
http://arccn.net/images/php/l24e5.gif
وناتج هذا التشفير ( 123456 ) فهو التالي:
http://arccn.net/images/php/l24e6.gif
الشكل النهائي لقاعدة البيانات :
http://arccn.net/images/php/l24e7.gif
http://arccn.net/images/php/l24e8.gif
http://arccn.net/images/php/l24e9.gif
http://arccn.net/images/php/l24e10.gif

قلب., 9 - 11 - 2011 11:36 PM

اهداف الدرس:
  • الداله mail
  • الداله header
  • الملفات التي نحتاجها
  • البدأ في تطبيق البرنامج


الداله mail :

اذا اردنا ان نقوم بإرسال بريد الكتروني الى مستخدم , او الى انفسنا فسوف نستخدم هذه الداله , وهي تعمل بشكل جيد , ولكن ليس دائما , ولكن اذا استخدمها مع السيرفر الشخصي وهي غير مفعله فلن تعمل , ولكي ترى عملها بشكل صحيح فيجب ان يكون لديك مساحه في موقع يدعم لغة PHP وسوف ترى عملها بشكل جيد هناك , لاحظ كيفية عمل الداله:
http://arccn.net/images/php/l25e1.gif
الداله header :
هذه الداله لها استخدامات كثيره جدا , وهي تقوم بإرسال معلومات HTTP ( رؤوس HTTP ) ولن نتطرق لشرحها الان , ولكن سوف نستخدمها في مثالنا للتحويل المستخدم من صفحه الى اخرى اليا , لكي نقوم بالاستغناء عن JavaScript ونتجنب استخدامها , ولكي نجعلها تعمل سوف نقوم بالتالي :
http://arccn.net/images/php/l25e2.gif
الملفات التي نحتاجها:
لكي نقوم بعمل هذا البرنامج , هناك طرق كثير جدا , ولكن دائما نختار الطريقه الانسب لنا والتي نعتقد انها جيده, لا اعلم اذا كانت طريقتي جيده ولكن متأكد انها سلميه ومناسبه وتعمل بشكل صحيح , مع ان هناك بعض العيوب وهي اننا لا نستطيع تتبع المستخدم من صفحه الى اخرى, ولكن عملته بطريقه اخرى وليست مناسبه. في الدروس المتقدمه سوف نرى كيفية تتبع المستخدم ونقوم بتحسين البرنامج الى الافضل. نحتاج في برنامجنا الى ملفات كثيره وقد وضعتها هنا في جدول لكي ترى اسم الملف وكيفة عمل كل ملف , لاحظ التالي:

الملف

عمل الملف
index.phpهنا يقوم الملف بإدخال
اسم المستخدم وكلمة المرور , واذا كان جديدا يذهب الى التسجيلcheck.phpالتأكد من اسم المستخدم
وكلمة المرور وتحويل المستخدم في حال صحتهاreg.phpصفحة التسجيلdo_reg.phpالتحقق من معلومات
المستخدم وادراج المعلومات في قاعدة البياناتmember.phpصفحة المستخدم وفيها كل
ما يحتاجview.phpعرض جميع الدروسlesson.phpاضافة درس جديدdo_les.phpالتأكد من الحقول وادراج
الدرس في قاعدة البياناتtopic.phpاضافة موضوع جديدdo_top.phpالتأكد من الحقول وادراج
الموضوع في قاعدة البياناتlesbyyou.phpعرض الدروس التي اضيفت من
المستخدمconfig.inc.phpملف نضع به معلومات
الاتصال في قواعد البيانات وندرج به الملفات التي نحتاجهاoutput.inc.phpدوال التصميم للصفحات ,
عرض القوائم والنماذج وغيرهاfunc.inc.phpدوال عامه نحتاجها لادراج
المعلومات وتسجيل المستخدم وغيرهاauth.inc.phpدوال التحقق من معلومات
المستخدم وصلاحياتهimagesفي هذا المجلد نضع صور
الاقسام التي نضيفهاinclude في هذا المجلد نضع
الملفات التي يوجد بها الدوال

http://arccn.net/images/php/l25e3.gif
http://arccn.net/images/php/l25e4.gif
http://arccn.net/images/php/l25e5.gif
البدء في تطبيق البرنامج:
لنبدأ في الملف output.inc.php وهذا الملف يحوي جميع دوال النماذج ( نقوم بإنشاءها نحن ) وغيرها , سوف اذكر الدوال هنا وسوف اشرحها بشكل مبسط :
http://arccn.net/images/php/l25e7.gif
هذه الداله تقوم بإنشاء رأس الصفحه , ونقوم بإدراجها في كل صفحه لدينا , ومدخلها عنوان الصفحه وجعلنا فراغ ($title = ” ) في مدخل الداله لانه توجد احتماليه ان لا يكون هناك عنوان للصفحه
http://arccn.net/images/php/l25e8.gif
هذه الداله تقوم بإقفال وسوم رأس الصفحه , وندرجها في النهايه كلما ادرجنا رأس الصفحه

هذه الداله تقوم بإدراج نموذج الدخول (اضغط على الصوره للتكبير ) , حيث تعرض اسم المستخدم وكلمة المرور وفي حالة ان المستخدم لم يسجل بعد توفر له رابط صفحة التسجيل
http://arccn.net/images/php/l25e10.gif
هذه الداله توفر لنا الروابط بشكل تلقائي , حيث لا نضر لكتابة وسوم الروابط في كل مره ولكن مره وحده , وندخل لهذه الداله عنوان الرابط و الاسم الذي يظهر للمستخدم.

هذه الداله الطويله المخيفه بسيطه جدا (اضغط على الصوره للتكبير ) , وعملها اظهار قائمة للمستخدم يختار منها اما اضافة درس او مشاهدة المواضيع , واذا كان مستخدم مراقب فسوف تفتح له رابط اضافة موضوع , ندخل لهذه الداله اسمه المستخدم لكي نقوم بعرضه ونخرج منها رقم المستخدم في قاعدة البيانات لنرسله من صفحه لصفحه ونتتبعه في الصفحات ( لاحظا استفادتنا من الحقلuser_admin ) بيحث لو كان يحوي y فهو مراقب واذا كان n فهو مستخدم عادي.

تظهر لنا هذه الداله نموذج التسجيل للمستخدم ( اضغط على الصوره للتكبير ), لكي يستطيع التسجيل وان يقوم بإضافة مواضيع

تقوم هذه الداله ( اضغط على الصوره للتكبير ) بإظهار نموذج اضافة الموضوع ( للمراقب ) لكي يستطيع اضافة مواضيع جديده.

هذا الملف سهل جدا , وظيفته ان نضع دوال تقوم باضافة ( مستخدم , درس , موضوع ) جديد فقط. وداله اخيره لجلب رقم المستخدم عن طريق اسمه.

هذه الداله تقوم بالتحقق من اسم المستخدم وكلمة المرور ( لاحظ اننا نقارن بكلمة المرور المشفره ) واذا تطابق لدينا نرجع القيمه ( true ) واذا لم يطابق نرجع القيمه ( false )
http://arccn.net/images/php/l25e15.gif
وظيفة الداله ان تقوم بمقارنة كلمة المرور الاولى مع كلمة المرور الثانيه ( في التسجيل ) اذا تطابقت يرجع القيمه ( true ) واذا لم تتطابق يرجع القيمه ( false )

تتحقق هذه الداله من ان اسم المستخدم جديد , اي لا يوجد مستخدم اخر قد قام بالتسجيل بنفس الاسم

هذه الداله تقوم بالتحقق من البريدالاكتروني الذي يدخله المستخدم , ( كل مستخدم لديه بريد الكتروني واحد و مستحيل ان يكون مستخدمان لهما نفس البريد )
http://arccn.net/images/php/l25e18.gif
دالتنا هذه تتحقق من صحة البريد الاكتروني كما تعلمنا في درس ( التعابير القياسيه ).

في هذا الملف ندرج جميع الملفات السابقه , لكي ندرج هذا الملف فقط وهو يقوم بالعمل الباقي , ونقوم بوضع الاتصال في قاعدة البيانات في هذا الملف
http://arccn.net/images/php/l25e19.gif

سؤال على الدرس :


1 – حاول بأن تقوم بإستخدام الملفات بنفسك , وحوال ان تقوم بعمل البرنامج لوحدك الى ان اقوم بكتابة بقية الدرس


قلب., 9 - 11 - 2011 11:38 PM

أهداف الدرس:
  • الصفحه index.php
  • الصفحه reg.php
  • الصفحه do_reg.php
  • الصفحه check.php
  • الصفحه member.php
  • الصفحه lesson.php
  • الصفحه do_les.php
  • الصفحه view.php
  • الصفحه lesbyyou.php
  • الصفحه topic.php
  • الصفحه do_top.php
  • تحميل التطبيق كاملا

الصفحه index.php :


في هذه الصفحه , نظهر للمستخدم نموذج الدخول , واذا لم يكن مسجلا فنضع له رابط صفحة التسجيل , لو نلاحظ الان لا نحتاج الى ان نقوم بكتابة النموذج ,, لاننا وضعنا داله تقوم بالنموذج واسميناها do_login_form اليس ذلك صحيحا ؟ اذن ما نحتاجه اولا , هو ان نقوم بإدراج الملف config.php وهو موجود داخل المجلد include لكي يقوم ادراج لنا كل الملفات الاخرى , لاحظ الكود التالي :
http://arccn.net/images/php/l26e1.gif
لاحظا اننا حددنا مكان الملف config.php , واننا كتبنا عنوان الصفحه , ولو كتبنا الداله من غير عنوان فسوف تعمل , راجع الدرس السابق لتتذكر لماذا , ثم وضعنا دالة اظهار نموذج الدخول واذا لم يكن العضو مسجلا يظهر له رابط الى صفحة التسجيل, لاحظ التالي:
http://arccn.net/images/php/l26e2.gif

الصفحه reg.php :

لو ان المستخدم ليس بعضو معنا , وذهب الى صفحة التسجيل فنظهر له نموذج التسجيل حيث يطلب منه اسم المستخدم ,, وكلمة المرور مرتان , والبريد الالكتروني. لاحظ الكود التالي:
http://arccn.net/images/php/l26e3.gif
وناتجنا هو التالي:
http://arccn.net/images/php/l26e4.gif

الصفحه do_reg.php :

هنا نقوم بمعالجة النموذج وادخاله في قواعد البيانات اذا كان كل شيئ صحيحا , او نقوم بعرض الخطأ الذي فعله المستخدم ,, لنقم بالعمل هذا خطوة خطوة , حسنا لنبدا , في البدايه نقوم بإدراج ملفاتنا التي نحتاجها
http://arccn.net/images/php/l26e5.gif
ثم نقوم بأخذ المتغيرات التي ارسلت لنا من النموذج بالطريقه التاليه :
http://arccn.net/images/php/l26e6.gif
أخذنا المتغيرات , الان يجب ان نتأكد هل قام المستخدم بلمئ جميع الخانات ام لا , والطريقه هي كالتالي :
http://arccn.net/images/php/l26e7.gif
المستخدم كتب جميع المتغيرات , اذن نحتاج الان الى ان نتحقق من اسم المستخدم هل هو موجود لدينا ام لا,
http://arccn.net/images/php/l26e8.gif
لا تنسى ان معظم الدوال التي تراها هنا هي من الملفات التي نقوم بإدراجها , الان نتحقق من كلمتي المرور هل هي متطابقه ام لا ,
http://arccn.net/images/php/l26e9.gif
الان نقوم بالتحقق من البريد الالكتروني هل هو موجود ام لا , و هل هو صحيح ام لا ,
http://arccn.net/images/php/l26e10.gif
الان تأكدنا ان جميع المعلومات صحيحه , فنقوم بإدراج معلومات المستخدم كلها في قاعدة البيانات , بالطريقه التاليه:
http://arccn.net/images/php/l26e11.gif
الباقي علينا الان , ان نقوم بإقفال كل دالة شرطيه قمنا بوضعها , بحيث لو لم يملئ جميع البيانات فنكتب له الرجاء كتابة جميع البيانات الخ…
http://arccn.net/images/php/l26e12.gif

الصفحه check.php :

هذه الصفحه تقوم بالتحقق من اسم المستخدم والبريد الالكتروني في قاعدة البيانات ثم مقارنتها بما ادخله المستخدم عند تسجيل الدخول , واذا كانت صحيحه فسوف تقوم بتحويله الى صفحة الاعضاء المسجلين بإستخدام الداله ( header ) , لاحظ التالي:
http://arccn.net/images/php/l26e13.gif
لاحظ اننا في تحويل المستخدم نقوم بإرسال اسم المستخدم مع الصفحه ( الطريقه GET ) وذلك لاننا نريد ان تكون مدخلا الى الداله display_menu حيث انها تعرض اسم المستخدم وتضع في كل رابط رقم المستخدم في قاعدة البيانات لكي نستخدمه لاحقا اذا اردنا ان نعرف الدروس الذي اضيفت من قبل المستخدم

الصفحه member.php :

في هذه الصفحه لا يوجد الكثير , فقط نقوم بعرض صفحة الزائر والروابط التي يمكن العمل عليها , واظهار اسمه ( لا تنسى اننا نقوم بإرسال اسمه من صفحة check.php و ندخلها للداله وهي تقوم بإستخراج الباقي ) , لاحظ التالي:
http://arccn.net/images/php/l26e14.gif
وسوف يكون ناتج الصفحه هو التالي:
http://arccn.net/images/php/l26e15.gif
http://arccn.net/images/php/l26e16.gif
لاحظ لانني مراقب فظهر رابط اضافة موضوع ولكن لو انني غير مراقب , فسوف يكون كالتالي :
http://arccn.net/images/php/l26e17.gif
ولو اردت معرفة ما اعنيه من اخذ رقم عضوية المستخدم لارسالها من صفحه الى اخر , فلو قمت بوضع الفأره على رابط اضافة درس جديد فسوف ترى الشكل التالي :
http://arccn.net/images/php/l26e18.gif
قد تسأل لماذا احتاج الى رقم المستخدم , الاجابه هي بكل بساطه , اننا لو اردنا المستخدم ان يضيف درس فنحتاج ان نقوم بمعرفة من هو المستخدم الذي اضاف الدرس , ويجب ان ندرج في الجدول رقم المستخدم لنربطه بالدرس , هل نسيت تصميم جدول الدورس في قاعدة البيانات , يوجد هناك لدينا حقل اسمه user_id لربط كل مستخدم بالدرس الذي قام بكتابته , http://arccn.net/wp-includes/images/...icon_smile.gif

الصفحه lesson.php :

هذه الصفحه تجعل المستخدم يقوم بإضافة درس جديد , حيث توفر له نموذج الاضافه الذي يحوي اسم الدرس و نص الدرس واي موضوع يتبع لكي نقوم بإدراج رقم الموضوع وطبعا رقم المستخدم الذي ارسلناه من صفحة member.php لاحظ التالي :
نأخذ رقم المستخدم في البدايه :
http://arccn.net/images/php/l26e19.gif
نستعلم عن المواضيع الموجوده في قاعدة البيانات , واذا لم يكن هناك مواضيع او لم يتم الاستعلام فلا يمكن للمستخدم ان يضيف درس ( هل يعقل ان اضيف درس لا ينتمي الى اي موضوع ؟ )
http://arccn.net/images/php/l26e20.gif
اذا نجح الاستعلام , سوف اقوم بالتحقق من عدد الاصفف التي ارجعها لي الاستعلام , اذا كان عددها صفر , اي لا يوجد اي مواضيع مفعله حاليا ولا يمكن اضافة درس , واذا كان اكثر من صفر فمعناها ان هناك مواضيع ويمكن ان ندرج تحتها بعضا من الدروس , لاحظ التالي :
http://arccn.net/images/php/l26e21.gif
ثم نقوم بعرض نموذج اضافة الدروس كاملا وندرج قائمه بها المواضيع الموجوده لدينا , بحيث يختار المستخدم اي موضوع ينتمي اليه الدرس

لو تلاحظ في الصوره ( اضغط عليها للتكبير ) اننا استخدمنا دالة تكرار لعرض المواضيع على شكل قائمه , ولاحظ اننا نرسل رقم المستخدم بالطريقه التي تعلمناها سابقا ( hidden ) هل وضحت الفكره الان ؟ اذن ناتجنا هو الشكل التالي:
http://arccn.net/images/php/l26e23.gif

الصفحه do_les.php :

هنا كالعاده نتحقق من ان جميع المعلومات موجوده , ثم نضيفها في قاعدة البيانات , ونظهر الخطأ اذا كانت هناك اي اخطاء
http://arccn.net/images/php/l26e24.gif

الصفحه view.php :

هذه الصفحه فقط نستخدم فيها دالة اظهار جميع الدروس , التي كتبناها في الملف output.inc.php
http://arccn.net/images/php/l26e25.gif
وناتج هذه الصفحه هو التالي:
http://arccn.net/images/php/l26e26.gif

الصفحه lesbyyou.php :

هنا نظهر للمستخدم جميع الدروس التي قام بإضافتها بحيث نرسل للصفحه رقم المستخدم كما فعلنا سابقا ونستعلم في قاعدة البيانات عن الدروس التي اضيفت عن طريق هذا الرقم :
http://arccn.net/images/php/l26e27.gif

الصفحه topic.php :

نفس طريقة اضافة الدرس , ولكن نقوم بإستخدام دالة المواضيع بدلا عن دالة الدروس لاحظ التالي:
http://arccn.net/images/php/l26e28.gif
وناتجها هو التالي:
http://arccn.net/images/php/l26e29.gif

الصفحه do_top.php :

نتحقق من المعلومات مره اخرى , ونقوم بإضافة الدرس في قاعدة البيانات :
http://arccn.net/images/php/l26e30.gif

تحميل التطبيق كاملا :

نظرا لطلب كثير من المتعلمين للغة PHP بأن اقوم بوضع الملفات كامله لهذا التطبيق , سأتجيب لذلك , ولكن نصيحة لك اخي المتعلم , قم بعمل كل شي بنفسك ثم بعد ذلك قارن عملك مع هذا العمل , لكي تزيد نسبة الفهم ويسهل عليك العمل , فجيب عليك ان تعرف ان النسخ واللصق لن يفيدك بشيئ في تعلم البرمجه , ولكن يجب عليك المحاوله مره تلو الاخرى الى ان تصل الى هدفك المطلوب http://arccn.net/wp-includes/images/...icon_smile.gif
حمل برنامج الدروس كاملا

سؤال على الدرس :


1 – حاول بأن تقوم بأستكشاف بعض من عيوب هذا البرنامج , وماذا يحتاج لكي يعمل بشكل صحيح , ومالذي ينقصه
2 – قم بعمل الصفحه لفقدان كلمة المرور
3 – حاول ان تفكر بطريقة عمل تفعيل اشتراك
4 – قم بعمل صفحة تجعل المستخدم يقوم بتغيير بياناته وتحديثها
5 – حاول ان تقوم بصفحه لعرض الدروس وتنسيقها

قلب., 9 - 11 - 2011 11:39 PM

اهداف الدرس:
  • الكلمات المحجوزه
  • متغيرات في اللغه
  • الداله strip_tags
  • الداله highlight_file
  • الداله highlight_string
  • الداله intval
  • الداله getenv

الكلمات المحجوزه :

هناك كلمات كثيره محجوزه في لغة PHP , ولها معانيها الخاصه , وهي تعتبر معرفات مسبقه فياللغه وقد اخذنا وتعلمنا الكثير منها , مثلا if وwhile و include وفي درس اليوم سوف نمر على بعض منها لان لها استخدامات جيده , وماعليك فعله هو معرفتها ثم التفكير في كيفية استخدامها فقط , هل انت مستعد ؟ اذن افتح محرر الاكواد ولنبدأ:

الكلمه __FILE__ :

هذه الكلمه تقوم بإعطائك مسار الملف الحالي كاملا , ولنشاهد عمل هذه الداله فاتح محرر الاكواد واكتب التالي:
http://arccn.net/images/php/l27e1.gif
وسوف يكون ناتج هذه العباره هو التالي:
http://arccn.net/images/php/l27e2.gif
لاحظ ان هذه العباره ارجعت لك المسار بالكامل واسم الملف الذي توجد به

الكلمه __LINE__ :

تقوم هذه الكلمه بإعطائك السطر الحالي للملف , لاحظ التالي:
http://arccn.net/images/php/l27e3.gif
وسوف يكون ناتجها هو السطر رقم ( 3 )

الكلمه isset() :

تقوم هذه الكلمه بالتحقق هل المتغير موجود ام لا , فمثلا لو نريد ان تحقق هل المتغير a موجود ام لا سوف نستخدمها كالتالي:
http://arccn.net/images/php/l27e4.gif
لاحظ اننا في البدايه لم ننشئ متغير اسمه a لذلك طبع لنا غير موجود ,, ولكن عندما انشأناه (حتى ولو كانت قيمته خاليه , اهم شي المتغير موجود ) فقط طبع العباره موجود

الكلمه unset() :

تقوم هذه الكلمه بتدمير المتغير ,, فلو لدينا متغير a واردنا ان نلغيه سوف نقوم بإستخدام هذه الداله ,, لاحظ التالي:
http://arccn.net/images/php/l27e6.gif
ملاحظه : هذه العباره لا تقوم بإرجاع اي قيمه , فقط تقوم بعملها وهو الغاء المتغير

الكلمه empty() :

تتحقق لنا هذه الكلمه من المتغير , هل توجد به قيمة ام لا ,, عملها بسيط لاحظ التالي:
http://arccn.net/images/php/l27e5.gif
متغيرات في اللغه :
تعلمنا سابقا ان لدينا مصفوفه اسمها $_POST و مصفوفه اسمها $_GET اليس ذلك صحيحا ؟ هنا سوف نتعلم مصفوفه جديده اسمها $_SERVER وهي مصفوفه تحوي معلومات عن السيرفر , يمكننا استخدام المتغيرات التي سوف اتحدث عنها الان من غير هذه المصفوفه ولكن الافضل ولا تنسى كلمتي هذه الافضل هو ان نقوم بإستخدامها بواسطه هذه المصفوفه لانها أامن لنا, لنبدأ بمشاهدة هذه المتغيرات وسوف تذهل من نواتجها , ضع يديك على لوحة المفاتيح ولنبدأ :

‘PHP_SELF’

هذا المتغير يقوم بإعطائك اسم الملف الحالي الذي تعمل عليه ( الملف الذي يشتغل في اللحظه ) وكما قلت في الاعلى عندما شددت على كلمة الافضل حاول ان تستخدمه بالطريقه الامنه وهي $_SERVER['PHP_SELF'] وطبعا يمكنك ان تستخدم هذا المتغير بالطريقه $PHP_SELF ولكن انا نصحتك بالطريقه الامنه والافضل والخيار يعود اليك, افتح محرر الاكواد لنشاهد عمل هذا المتغير , قم بكتابة التالي:
http://arccn.net/images/php/l27e7.gif

‘HTTP_REFERER’

سوف تستخدم هذه الداله اذا اردت معرفة الصفحه التي قدم منها الزائر ( اذا وجدت ) ولكني عندما قرأت دليل استخدام لغة PHP فقد وجدت عبارة تقول انه لا يمكن الوثوق في هذه الداله , لان الاستضافه يمكن ان تقوم بتعطيلها اذا ارادت وطريقة استخدامها هو كالتالي عزيزي الزائر:
http://arccn.net/images/php/l27e8.gif

‘REMOTE_ADDR’

اذا اردنا معرفة رقم (الاي بي ) = ( IP ) للزائر فسوف نستخدم هذا المتغير , وهو في الحقيقه لا يعمل بشكل صحيح , لذا نحتاج الى بعض الاوامر الاخرى لتحديد رقم الاي بي الخاص بالزائر , ولكن قد تجد منه منفعه في بعض الاوقات ,, خاصه اذا كنت على سيرفر شخصي خاص بك , لاحظ التالي:
http://arccn.net/images/php/l27e9.gif
هناك المزيد من هذه المتغيرات وهي كثيره جدا , ولا يمكن عدها من كثرتها , وقد شرحت لك ما تحتاجه هنا واذا اردت الزياده فاذهب الى موقع PHP وسوف تجد جميع المتغيرات الاخرى

اضغط هنا لزيارة موقع PHP

الداله strip_tags :
هذه الداله نستخدمها لفلترة النص ,, بحيث لو كانت به اسطر PHP او HTML نقوم بإستبعادها من النص وطباعته من غيرها ,, وتستخدم هذه الداله من ناحيه امنيه في معظم الاحيان , المدخل الاول هو النص المراد فلترته والمدخل الثاني هو اختياري وتضع به الوسوم التي لا ترغب في فلترتها لاحظ الكود التالي:
http://arccn.net/images/php/l27e10.gif
وناتج عملنا هو التالي :
http://arccn.net/images/php/l27e11.gif
الداله highlight_file :
هذه الداله تقوم بتلوين كود PHP الذي قمت بكتابته , على سبيل المثال لديك ملف اسمه code.php وبه الكود التالي :
http://arccn.net/images/php/l27e12.gif
ونريد عرض هذا الكود بشكل مرتب وملون , فسوف ننشئ ملف اسمه show.php ( على سبيل المثال ) ونكتب التالي :
http://arccn.net/images/php/l27e13.gif
لا تنسى ان الملف في نفس المجلد , فسوف يكون ناتج تشغيل الملف show.php هو الشكل التالي:
http://arccn.net/images/php/l27e14.gif
الداله highlight_string :
تقوم هذه الداله بنفس عمل التي بالاعلى ولكن الفرق ان الاولى لملف وهذه لنص , لاحظ التالي:
http://arccn.net/images/php/l27e15.gif
والناتج هو :
http://arccn.net/images/php/l27e16.gif
الداله intval :
اذا اردت معرفة ( العدد الصحيح ) لقيمة اي متغير فسوف تقوم بإستخدام هذه الداله :
http://arccn.net/images/php/l27e17.gif

الداله getenv :

تقوم هذه الداله الجميله بإعطائك قيمة المتغير لل ( environment ) = ( البيئيه ) واقصد بهذه المتغيرات التي تعلمناها في الاعلى مثل (REMOTE_ADDR ) وغيرها , هل تذكر عندما قلنا ان العباره (REMOTE_ADDR ) لا تقم بإعطائك رقم ( الاي بي ) الصحيح ؟ بمساعدة هذه الداله سوف تحصل على الاي بي الصحيح للمستخدم , طريقة عملها كالتالي:
http://arccn.net/images/php/l27e18.gif
ولمعرفة المتغيراتالبيئيه الاخرى يمكنك رؤيتها على الصفحه التاليه اضغط للذهاب الى صفحة المتغيرات البيئيه

سؤال على الدرس :


1 – قم بإنشاء نموذج يذهب الى نفس الصفحه وليس الى صفحه اخرى , وقم بمعاجلة المدخلات ( مساعده : استخدم isset و PHP_SELF ) مع طباعة المعلومات الخاصه بالزائر

قلب., 9 - 11 - 2011 11:39 PM

اهداف الدرس:
  • تعريف الجلسات
  • الكوكيز ( Cookies )
  • انشاء الجلسات بشكل مبسط
  • مثال مبسط على الجلسات

تعريف الجلسات :

هناك مشكلة كبيره في لغة HTML وذلك لانها لا تستطيع تحديد حالة المستخدم, ونعني بذلك انها لا تستطيع تتبع المستخدم من صفحه الى اخرى, هل تحتاج الى مثال ؟ فمثلا لو قام المستخدم بتنفيذ طلب اظهار صفحه ما, ثم طلب اظهار صفحه اخرى, فلا يمكن للغة HTML معرفة اذا كان الطلب تم من نفس المستخدم. وجدت الجلسات ليتم تتبع حالة المستخدم اثناء تصفحه لموقع معين. فإذا استطعنا ذلك, يمكننا عمل تسجيل دخول المستخدم واظهار بعض محتويات الصفحه على حسب درجته ومستوى تحكمه في الموقع. في لغة PHP الجلسه الواحده عباره عن رقم ( مشفر ) يتم انشاءه بطريقة عشوائيه, ويحفظ هذا الرقم عند المستخدم ( وليس السيرفر ) على طريقتين, اما في الجهاز على شكل كوكيز او على شكل رقم ينتقل من صفحه الى اخرى. هذا الرقم يقوم بالسماح لنا بتسجيل متغيرات اسمها متغيرات الجلسات ومحتويات هذه المتغيرات يتم تخزينها في جهة السيرفر ( وليس على جهاز المستخدم ) والذي يظهر للمستخدم فقط ويمكن رؤيته من قبله هو هذا الرقم العشوائي المستحيل ان يتم فهمه. هل فهمت الجلسات الى الان ؟ انا متأكد انك قمت بملاحظة هذا الرقم عند تصفحك لاحدى المواقع ويكون شكل هذا الرقم كالتالي :
http://arccn.net/images/php/l28e1.gif
الكوكيز (Cookies ) :
الكوكيز او ما يسمى باللغه العربيه ( الكعكات ) وهو اسم لا احب اطلاقه على الكويكز, عباره عن قطعه معلومات تحفظ في جهاز المستخدم ويستطيع الوصول لها فقط من قام بإنشائها ( الموقع ). دعني اختصر لك الامر لا تستخدم الكوكيز ! وهذا الذي سوف تتعلمه عند قرائة اي كتاب او اي درس عن الامان في الانترنت. حيث ان اكثر المتصفحات الجديده ومستويات الامان الموجوده بها تمنع الموقع من وضع اي معلومات في جهاز المستخدم, او على سبيل المثال المستخدم قد قام بإلغاء الكوكيز في جهازه, وحينها لن يستطيع الحصول على المراد وصاحب الموقع لن يحصل على مراده. اذن لنجلعها بكل بساطه ( لا تقم بإستخدام الكويكز في برامجك ) !
انشاء الجلسات بشكل مبسط :
سوف يكون محور درسنا عن الجلسات هو ارسال رقم الجلسه من صفحه الى اخرى وتتبع المستخدم بهذه الطريقه. رأينا في المثال بالاعلى ان رقم الجلسه موجود في المتصفح, فكر للحظات هل هذه طريقه جيده لارسال المعلومات ؟ بحيث انها ظاهره للمستخدم و ايشخص اخرى, طبعا لا ! اذن نحتاج ان نقوم بإرسال هذه المعلومات بطريقه مخفيه بحيث ان برنامج هو الوحيد الذي يستطيع استعمالها. هذه الطريقه تبدأ من لحظة دخول المستخدم الى الموقع وانشاء رقم الجلسه الخاص به, وينتهي بمجرد اغلاق المستخدم للصفحه, حيث يتم تدمير هذه الجلسه. لنقم بجعلها مبسطه وعلى شكل خطوات:
  1. بدأ الجلسه
  2. تسجيل متغير الجلسه
  3. استخدام متغير الجلسه
  4. الغاء متغير الجلسه وتدمير الجلسه
ليس بالضروره ان تكون جميع هذه الخطوات في صفحه برمجيه واحده, ويمكن ان تكون على عدة صفحات, لا تنسى ذلك !
بدأ الجلسه
يجب علينا ان نقوم بتفعيل ( بدأ ) الجلسات قبل عمل اي شي في الصفحه ويمكن فعل ذلك عن بالطريقه التاليه :
http://arccn.net/images/php/l28e2.gif
هذه الداله تقوم بالتحقق هل يوجد جلسه لهذا المستخدم ؟ اذا لا توجد جلسه تقوم بإنشاء جلسه خاصه بهذا المستخدم, فلو على سبيل المثال احمد قام بالدخول على الموقع فسوف يكون له جلسه خاصه به , ولو دخل خالد الموقع في نفس الوقت فسوف يكون له رقم اخر خاص به وهكذا. اما اذا كانت هناك جلسه خاصه بالمستخدم فسوف تقوم هذه الداله برفع المتغيرات التي تحويها هذه الجلسه لكي يتمكن لنا استعمالها في برنامجنا, ويجب عليك التذكر ان بدأ الجلسات في كل برامجك هو طريقه جيده بل ممتازه اذا كان برنامجك يعتمد على الجلسات.

تسجيل متغير الجلسه

هل تذكر المصفوفه $_GET والمصفوفه $_POST والمصفوفه $_SERVER سوف نتعلم الان مصفوفه جديده واسمها $_SESSION وهذه المصفوفه تقوم بتخزين كل المتغيرات بها. فلو اردنا ان نقوم بإنشاء متغير جلسه اسمه ( الاسم ) ونضع به القيمه 5 سوف نقوم بالتالي :
http://arccn.net/images/php/l28e3.gif

استخدام متغير الجلسه

لكي يمكنك استخدام متغير جلسه يجب علينا في البدايه بدأ الجلسه ثم استخدام المتغير عن طريق المصفوفه بالطريقه التاليه :
http://arccn.net/images/php/l28e4.gif
نفس الطرق التي تعلمناها في السابق, لا تخف من الجلسات فهي اسهل من السهوله. و اذا اردت التحقق من وجود متغير الجلسه ام لا , فسوف تعرف ذلك؟ ولتذكيرك تستخدم الطريقه isset او صديقتها empty كما تعلمنا مسبقا كالتالي:
http://arccn.net/images/php/l28e5.gif

الغاء متغير الجلسه و تدمير الجلسه

عند الانتهاء من استعمال متغير جلسه ما, يمكنك الغاء تسجيله بالطريقه التاليه :
http://arccn.net/images/php/l28e6.gif
والان بعد ان قمنا بإلغاء هذا المتغير نريد ان نقوم بتدمير الجلسه كامله لكي نقوم بالتنظيف, ويمكن عملها كالتالي:
http://arccn.net/images/php/l28e7.gif
مثال مبسط على الجلسات :
اعتقد انك تشعر بغرابه الان, هل هذه هي فقط الجلسات !! نعم عزيزي, هذه هي الجلسات ويمكن ان كلامي المبسط عنها لم يوضح الفكره, لنقم الان بعمل مثال يشرح لنا طريقة عمل الجلسات لكي توضح لك الصوره. سوف نقوم بإنشاء 3 صفحات وتتبع الجلسات بها. في الصفحه الاولى ( ses1.php ) سوف نقوم ببدأ الجلسه , وتسجيل متغير اسمه example لاحظ التالي :
http://arccn.net/images/php/l28e8.gif
و سوف يكون نتيجة الصفحه الاولى هو التالي :
http://arccn.net/images/php/l28e9.gif
لاحظ اننا بدأنا الجلسه ثم انشأنا المتغير , وعند انتهاء اسطرنا في البرنامج سوف تكون الجلسه في حالة تجميد الى ان نقوم ببدأ الجلسه في الصفحه التاليه. الان ننشئ صفحه جديده اسمها (ses2.php ) وسوف يكون محتواها هو التالي :
http://arccn.net/images/php/l28e10.gif
لو تلاحظ اننا بدأنا الجلسه في بداية الصفحه لكي نقوم بتحميل جميع المتغيرات ثم طبعنا محتوى متغير الجلسه واخيرا قمنا بإلغاء متغير الجلسه. دقق في الصفحه وسوف ترى اننا لم ننشئ متغير جديد ولكن نفس المتغير الذي انشأناه في الصفحه الاولى انتقل الى الصفحه الثانيه. وسوف يكون ناتج هذه الصفحه هو التالي:
http://arccn.net/images/php/l28e11.gif
في الصفحه الاخير نقوم بنفس العمل ولكن عند طباعة المتغير لن نجد اي قيمه لأننا قمنا بإلغاء المتغير في الصفحه رقم ( 2 ) اليس كذلك ؟ اذن الصفحه ( ses3.php ) سوف تحوي الكود التالي:
http://arccn.net/images/php/l28e12.gif
عند عمل هذا الكود لن يقوم بطباعة محتوى المتغير لاننا الغيناه من قبل وسوف نقوم في الاخير بتدمير الجلسه كاملا, ولو حاولت ان تقوم بالدخول على الصفحه ( ses2.php ) من غير الدخول على الصفحه ( ses1.php ) فلن يوجد اي شيئ بالمتغير وهذا يؤكد لنا اننا نتابع المستخدم من صفحه الى اخرى.
http://arccn.net/images/php/l28e13.gif
ملاحظه (ضروري, ضروري, ضروري ان تقوم ببدأ الجلسه قبل ان تقوم بطباعة اي شيئ الى المتصفح والا لن يقوم برنامج بالعمل بشكل صحيح, دائما ابدأ الجلسه ثم اكتب الكود المتبقي )

قلب., 9 - 11 - 2011 11:40 PM

اهداف الدرس:
  • فكرة البرنامج
  • مختصرات
  • الدخول الى صفحة الاعضاء
  • الصفحات الاخرى
  • تسجيل الخروج

فكرة البرنامج :

نريد ان نقوم بفعل شيئ مفيد بإستخدام الجلسات, وسوف نستخدمها اليوم في عمل برنامج تسجيل مبسط , لكي نقوم بوضع النكهات على برامجنا , فكرة عمل هذا البرنامج بسيطه , نموذج دخول ثم التحقق من اسم المستخدم وكلمة المرور , وبعد ذلك نقوم بتسجيل الجلسه للمستخدم لكي نعرف انه نفس المستخدم الذي يتصفح باقي الصفحات.
مختصرات :
لا اريد ان اقوم بشرح ما تعلمناه سابقا من جديد , لذلك سأذكر متطلبات عمل البرنامج في هذه النقطه ويجب عليك عزيزي الزائر ان تقوم بعملها بنفسك ولكي تقوم بإستراجع المعلومات يمكنك الرجوع الى الدرس رقم (24 و 25 و 26 ). ما نحتاجه هو
  1. قاعدة بيانات تحتوي على جدول اسمه (member ) توجد به الحقول (username ) و ( password )
  2. صفحة تسجيل دخول
  3. صفحة تسجيل خروج
  4. صفحة خاصه بالاعضاء
  5. صفحه اخرى للتحقق من الجلسات ( مجرد توضيح كيف عمل بقية الصفحات بنظام الجلسات )
الدخول الى صفحة الاعضاء :
الان بعد عملنا على متطلبات الموجوده في ( مختصرات ) نأتي الى محور درسنا اليوم, كما تعلمنا سابقا يجب ان نبدأ كل صفحه بالجلسات ( قبل طباعة اي شي الى المتصفح ) اليس ذلك صحيحا ؟ صفحة الاعضاء تعمل كالتالي, اذا كان متغير الجلسه ( user ) غير موجود نقوم بأخذ مدخلات اسم المستخدم وكلمة المرور والتحقق عنها من قاعدة البيانات , ثم نقوم بوضع اسم المستخدم داخل متغير الجلسه, غير ذلك نقوم بإظهار خطأ للمستخدم بأن اسم المستخدم وكلمة المرور غير صحيحه , او انه يجب عليه تسجيل الدخول لرؤية هذه الصفحه ,وفي الاخير اذا كان متغير الجلسه موجود وتوجد به قيمه نقوم بإظهار محتوى الصفحه للمستخدم. لاحظ الكود التالي:
http://arccn.net/images/php/l29e1.gif
بالنسبه للداله ( loginCheck ) فهي داله قمت انا بإنشائها للتحقق من اسم المستخدم وكلمة المرور من قاعدة البيانات.
الصفحات الاخرى:
الان , بنفس الطريقه في كل صفحه نقوم بوضع كود التحقق من الجلسات , بحيث ان لو لدينا صفحه اسمها (view.php ) والمستخدم لم يقوم بتسجيل الدخول فلن يمكنه مشاهدة محتوى الصفحه واذا كان قد قام بتسجيل الدخول ولم يقوم بإغلاق المتصفح (اغلاق المتصفح يؤدي الى تدمير الجلسه ) فيمكنه التنقل بين الصفحات من غير تسجيل الدخول مره اخرى لاحظ الكود التالي :
http://arccn.net/images/php/l29e2.gif

تسجيل الخروج :

لو اراد المستخدم تسجيل الخروج , فهناك طريقتين ,, اما اغلاق المتصفح واما الذهاب الى صفحة تسجيل الخروج ( وهي الافضل ) وهي على خطوات
  1. نقوم بوضع متغير الجلسه في متغير جديد
  2. نقوم بإلغاء مصفوفة الجلسات
  3. نقوم بتدمير الجلسه
  4. التحقق من ان الالغاء والتدمير تم بشكل صحيح

قلب., 9 - 11 - 2011 11:41 PM

اهداف الدرس :
  • نبذه عن انواع الصور
  • انشاء الصور

نبذة عن انواع الصور :

تعلمنا كيف نقوم ببرمجة موقع بلغة php ورأينا كم هي سهله وجميله في التعامل, ولكن استخدام لغة php لا يقتصر على اصدار ملفات
html او php بل يسمع لك ايضا بإنشاء الصور بأنواعها سواء كانت متحركه او ثابته. توجد هناك مكتبة خاصه لعمل هذه الصور وتسمى
مكتبة GD والاسم الكامل لها هو (GD Library ).
لهذه المكتبة اصدارات كثيره وسوف نتكلم عن الاصدار رقم 2.0.28 وهو متوافق مع الانواع JPEG و GIF و PNG. كلها تعمل بنفس الطريقه, هل وصلت الى مرحلة الحماسه للتعلم , اذن لنبدأ بتعريف هذه الصور واحده تلو الاخرى.
JPEG:
تنطق هذه العباره بالطريقه ( جاي-بيق ) وهي اختصار لـ ( Joint Photographic Experts Group ). انا متأ:د انك تعرف هذه النوعيه من الصور فنستخدمها كثيرا اذا اردنا حفظ الصور وهي مفيده اذا كانت في الصوره الوان كثيره وتدرجات كثيره. هذه النوعيه ليست جيده عند استخدام رسوم الخطوط و النصوص و الاجزاء التي تحتوي على لون جامد واحد. يمكنك معرفة امور اكثر عن هذه النوعيه عن طريق الموقع الخاص بهم موقع JPEG.
PNG:
تنطق هذه العباره بالطريقه ( بنق ) وهي اختصار لـ ( Portable Network Graphics ) وخصائص هذه النوعيه متماثله مع النوعية GIF وهي
تعتبر بديلا للنوعيه GIF. وسبب هذا البديل هو ان PNG اكثر جوده من النوع GIF. ويمكنك معرفة معلومات اكثر عن هذا النوع عن طريق الموقع الخاص بهم موقع PNG
GIF:
هذه النوعيه اختصار لـ ( Graphics Interchange Format ) وتستخدم كثيره في مواقع الانترنت لانها خفيفه وتستطيع عمل الصور المتحركهز تنصح بعض الكتب بإستخدام النوعيه PNG بدل من هذه النوعيه لانها اسهل.
انشاء الصور :
لانشاء الصور في لغة PHP نتبع 4 خطوات وهي مفيده جدا وتسهل علينا العمل
  1. انشاء الخلفيه المراد العمل عليها
  2. رسم المجسمات او الكتابات على هذه الخلفيه
  3. تصدير هذه الصور او العمل
  4. تنظيف العمل
لنقم بعمل مثال بسيط على هذه الطريقه لنفهم كيفية العمل
http://arccn.net/images/php/l30e1.gif
بعد تنفيذ هذا العمل سوف يكون الناتج هو التالي :
http://arccn.net/images/php/l30e2.gif
ملاحظه : في حالة عدم ظهور الصوره قم بكتابة الكود بالشكل التالي, اضغط هنا
لنقم الان بشرح عملنا خطوه خطوه

اعداد الصوره:

اول عمل قمنا بفعله هو انشاء صوره لنقم بالرسم عليها لنقل انها كراسة الرسم الخاصه بنا , وهناك طريقتين لعمل هذه الطريقه الاولى بإستخدام الداله ImageCreate وهي تأخذ مدخلان العرض والطول بالترتيب وسوف تقوم بإرجاع الصوره التي قمنا بعملها
http://arccn.net/images/php/l30e4.gif
الطريقه الثانيه هي انشاء خلفية العمل من صوره موجوده مسبقا لدينا بأي نوع كانت بإستخدام الداله ImageCreateFromPng او ImageCreateFromJpeg او ImageCreateFromGif وهي تأذخ مدخل واحد وهو اسم الصوره التي نريد العمل عليها ( اسم الملف ) والطريقه كالتالي :
http://arccn.net/images/php/l30e5.gif
رسم الصوره:
قمنا بعد ذلك برسم الاشكال التي نريدها على الصوره, وفي الحقيقه هناك طريقتان لعمل ذلك , اولا يجب ان نقوم بإختيار الالوان التي نريدها , وكما نعرف انها مكونه من 3 الوان وهي الاحمر والاخضر والازرق , ويمكن استخدام هذه الالوان عن طريق الداله ImageColorAllocate وهي تأخذ 4 مدخلات وهي الصوره , اللون الاحمر واللون الاخضر والازرق وقد عملنا في مثالنا لونان وهما الابيض والاسود. وهذه الداله تقوم بإرجاع اللون الذي سنستخدمه لاحقا.
http://arccn.net/images/php/l30e6.gif
الطريقه الثانيه هو رسم ما نريد ويكون على اربع نقاط نحتاج اليها , الصوره , الاحداثيات , اللون , معلومات النص ( اذا كان نص ) , ويمكننا مشاهدة عملنا في مثالنا هنا:
http://arccn.net/images/php/l30e7.gif
الداله ImageFIll تقوم بتعبة الصوره وتأخذ 4 مدخلات وهي الصوره , الاحداث السيني , الاحداث الصادي , واللون.
الداله ImageLine تقوم برسم خط وتأخذ 6 مدخلات وهي , الصوره , بداية الاحداث السيني , بداية الاحداث الصادي , نهاية الاحداث السيني , نهاية الاحداث الصادي , اللون.
الداله ImageString تقوم بكتابة نص على الصوره وتأخذ 6 مدخلات , الصوره , نوع الخط , الاحداث السيني , الاحداث الصادي , النص , اللون
** لاحظ ان ( 0, 0 ) معناها الركن العلوي الايسر

اصدار الصوره:

يمكننا اصدار الصور بطريقتين , الطريقه الاولى الى المتصفح , الطريقه الثانيه حفظها على شكل ملف, وفي مثالنا استخدمنا الطريقه الاولى وهي تصدير الصوره الى المتصفح. ويكون العمل على خطوتين , الخطوه الاولى يجب ان نخبر المتصفح اننا نريد تصدير صور بدلا من مجرد نصوص او HTML ويمكننا عمل ذلك عن طريق الداله Header التي تعملناها سابقا.
http://arccn.net/images/php/l30e8.gif
في العاده عندما نقوم بتصدير ملف HTML او PHP يكون الارسال تلقائيا بالشكل التالي Content-type: text/html وهو يخبر المتصفح كيف ان يقوم بترجمة المعلومات. الخطوه الثانيه نقوم بإخراج الصوره الى المتصفح بإستخدامنا للداله ImagePng او ImageJpeg او ImageGif وقمنا بعمل ذلك في ملفنا بالطريقه التاليه
http://arccn.net/images/php/l30e9.gif
في حالة اردنا ان نقوم بتصدير الصوره الى ملف نقوم بكتابة اسم الملف كمدخل ثاني الى الداله , ويكون بالطريقه التاليه :
http://arccn.net/images/php/l30e10.gif

تنظيف العمل:

بعد ان تقوم بطباعة الصوره والانتهاء من العمل يجب ان تقوم بإرجاع جميع ما استخدمه لانشاء الصوره للخادم وذلك يكون بتدمير الصوره التي قمت بإنشائها وذلك عن طريق الداله ImageDestroy وقمنا بعمل ذلك في مثالنا بالشكل التالي:
http://arccn.net/images/php/l30e11.gif
هذي هي مكتبة الصور ( GD ) في لغة PHP بشكل مبسط جدا , واذا اردت ان تخوذ بها زياده لكي تحترف التعامل بها يمكنك مراجعة ملف الاستخدام الخاص بلغة PHP عن طريق الموقع الخاص بهم,موقع PHP%3

قلب., 9 - 11 - 2011 11:41 PM

اهداف الدرس:
  • تهيئة النصوص بإستخدام الداله eval()
  • الداله die()
  • معرفة معلومات عن بيئة PHP
  • مشاركة الاكواد البرمجيه (highlighting soruces )

تهيئة النصوص بإستخدام الداله eval() :

هذه الداله المفيده نلاحظ استخدامها دائما في عمل نظام القوالب, وعمل هذه الداله هو ان تقوم بأخذ نص وتنفذه على انه كود من لغة PHP فعلى سبيل المثال, لو كتبنا الكود التالي:
http://arccn.net/images/php/l31e1.gif
سيكون الناتج لهذا السطر هو:
http://arccn.net/images/php/l31e2.gif
لنأخذ مثالا على اماكن استخدام هذه الداله, تخيل ان لديك كود برمجي كامل داخل قاعدة البيانات وتريد ان تقوم بتنفيذ هذا الكود البرمجي, اذن الداله eval هي طريقك الى هذا العمل. عمل اخر وهو لو اردت ان تقوم بإنشاء كود برمجي من دالة تكرار , فتنفيذ هذا الكود هو الداله eval.
الداله die() :
تعلمنا سابقا الداله exit وقلنا اننا لو اردنا الخروج عن تنفيذ العمل وايقاف عمل البرنامج سوف نستخدم هذه الداله , ولكن لو تلاحظ ان الداله exit لا تقوم بإرجاع اي شي الى المتصفح, اذن لدينا الان الداله die وهي تقوم بإخراجك من الكود البرمجي ولكن مع كتابة الخطأ الذي حصل في حالة اردت ذلك. لاحظ المثال التالي:
http://arccn.net/images/php/l31e3.gif
ويوجد نظير لهذه الداله الا وهو exit() وتستخدم بنفس طريقة لداله die()
معرفة معلومات عن بيئة PHP :
يوجد هناك شيئين نحتاج الى معرفتهما وهما
  1. الداله التي تدل على مالك البرنامج وهي get_current_user() وتستخدم دائما في معرفة التراخيص التي يحملها مستخدم البرنامج
  2. معرفة متى اخر مره تم تعديل البرنامج الخاص بنا عن طريق الكود التالي :
    echo date(‘g:i a, j M Y’ , getlastmod() );
    ولو قمنا بتجربة العمل سوف يظهر لنا التالي:
http://arccn.net/images/php/l31e4.gif
وناتج التعديل هو كما يظهر لك في الصوره التاليه:
http://arccn.net/images/php/l31e5.gif
مشاركة الاكواد البرمجيه ( highlighting soruces ) :
في بعض الاحيان تريد ان تقوم بمشاركة الكود مع بعض المبرمجين , او تريد ان تقوم بعمل برنامج دروس ويظهر لك الكود من غير تنفيذه , اذن سوف تستعمل الداله التي تسمى show_source() او highlight_file() وكل هذه الدالتين تقوم بنفس العمل تماما, وتأخذ هذه الدالتين ملفات ( يجب ان تكون ملفات PHP او لن يكون هناك معنى ) , وعند استخدامها سوف تقوم الداله بجعل الكود يظهر بشكل مرتب وبشكل الوان مرتبه , لنأخذ مثالا يوضح لنا الفكره , لدينا ملف اسمه fun.php ويوجد به الكود التالي:
http://arccn.net/images/php/l31e6.gif
ونريد ان يظهر هذا الكود بدل من ان يتم تنفيذه ,, فسوف نقوم بعمل ملف ونكتب به التالي:
http://arccn.net/images/php/l31e7.gif
واذا قمنا بتشغيل هذا البرنامج فسوف يظهر لنا الشكل التالي:
http://arccn.net/images/php/l31e8.gif

قلب., 9 - 11 - 2011 11:43 PM

اهداف الدرس:
  • الاخطاء البرمجيه
  • رسائل الاخطاء
  • مراحل الاخطاء
  • نهاية المطاف
الاخطاء البرمجيه :

اذا كنت تستخدم لغة PHP او اي لغة اخرى فهناك انواع اخطاء تنطبق عليهم جميعا. شي مريح اتوافقني الرأي ؟ الاخطاء هذه على 3 انواع وهي الاخطاء الكتابية ,, الاخطاء التشغيليه ,, الاخطاء المنطقيه وسوف نتكلم لكل واحده على حده لكي تفهم مضمونها وكيفية تجنبها.

الاخطاء الكتابية :
يوجد لكل لغة شروط كتابية وتسمى بال ( Syntax ) ونحن الان نريد ان نشرع هذه الاخطاء المسميه ب ( Syntax Error ) وهذا الخطاء اذا لم نتبع شروطه فسوف ينتهي بنا المجال الى برنامج لن يعمل بشكل صحيح ولن يتم تشغيله في الاساس , وتشمل الفاصلة المنقوطه في اخر السطر وان يكون النص بين علامتي تنصيص واذا قمنا بخرق هذه الشروط فلن يعمل معنا البرنامج بشكل صحيح. من اقوى الاشياء الموجوده في لغة PHP هي الرسال المفيده التي تظهر لنا عند وقوع الخطأ, ومثال هذه الرساله هو الشكل التالي :
http://arccn.net/images/php/l32e1.gif
وقد نتج هذا الخطأ عن الكود التالي :
http://arccn.net/images/php/l32e2.gif
لو تلاحظ ان خطأنا في الكود في الاعلى هو اننا عندما مررنا النص لدالة التاريخ لم نقم بإقفال علامتي التنصيص ,, لقد وضعنا علامه واحده ونسينا الاخرى وللك نتج هذا الخطأ اعزائي. خطأ مبتدئين او خطأ عجله ,, لكم القرار http://arccn.net/wp-includes/images/...icon_smile.gif . لا تنسى ان الاخطاء الكتابيه من اسهل الاخطاء في لغات البرمجه ولذلك انها تعطيك الخطأ والسطر الذي يقع به الخطأ لكي يتم تعديله.

الاخطاء التشغيلية :
الاخطاء التشغيليه تعتبر اصعب في الايجاد والاصلاح فهذه الاخطاء لا تنتج عن خطأ في الكتابه يتم اكتشافه من قبل المترجم. هذه الاخطاء تحصل من طريقة عمل البرنامج مع ان جميع الاكواد مكتوبه بشكل صحيح ومثال على هذا الخطا هو عند استخدام العباره include( ‘filename.php ); فهذه العباره صحيحه ولا يوجد اي خطأ كتابي بها ولكن عند التشغيل سوف تجد ان هناك خطأ لان الملف غير موجود في الاساس والرساله التي ستظهر لك ان المترجم ليس لديه الصلاحيه لفتح هذا الملف ( لاحظ انه غير موجود ) وسوف يظهر لك خطأ شبيه بالتالي :
http://arccn.net/images/php/l32e3.gif
مثال اخر على خطأ تشغيلي هو القسمه على 0 , فلقد كتبت كود صحيح من 5 اسطر ولكن لم يعمل لان القسمه على 0, لاحظ الشكل التالي:
http://arccn.net/images/php/l32e4.gif
فنتج لدي هذه الرساله الي تقوم بجعل يومك سيئا http://arccn.net/wp-includes/images/...icon_smile.gif , :
http://arccn.net/images/php/l32e5.gif

وسوف اسهل لك هذا الدرس بإعطائك الاخطاء التشغيليه الشائعه وهي :
  1. استخدام دوال غير موجوده
  2. قراءة او كتابة ملفات
  3. التعامل مع قواعد البيانات
  4. الاتصال بخدمات الشبكات
  5. عدم التحقق من المعلومات المدخله
الاخطاء المنطقية :
تعتبر الاخطاء المنطقيه من اصعب الاخطاء عثورا واصلاحا في جميع لغات البرمجه كلها. وخلاصة هذه الاخطاء ان الكود مكتوب بشكل صحيح ويعمل بشكل صحيح ولكن لا يقوم بفعل النتيجه التي يريدها كاتب الكود البرمجي. مثال على هذا الخطأ هو دالة التكرار ( for loop ) لاحظ الكود التالي :
http://arccn.net/images/php/l32e6.gif
لو نظرت الى الكود نظرة سريعه فسوف ترى ان المراد منه هو كتابة الكلمه ” اهلا ” 10 مرات اليس ذلك صحيحا ؟ ولكن عند تشغيل هذا البرنامج سوف يقوم بكتابة الكود فقط مره واحده. اذا لم تعمق النظر فلن تجد الخطأ ولكن اذا نظرت بتركيز شديد سوف ترى ان هناك فاصله منقوطه بعد انتهاء قوس دالة التكرار وهذه النقه تجعل الداله تدور 10 مرات ثم بعد ذلك تقوم بطباعة الكلمه اهلا, وهذا هو سبب الخطأ. وايضا يحصل الخطأ في الدالة While اذا لم نقم بوضع شرط يخرجنا من دالة التكرار.
مراحل الاخطاء :
تقوم لغة PHP بإعطائك الحرية في اظهار الاخطاء كيفما تريد , يمكنك اختيار اي اخطاء تظهر واي منها لا تظهر وبالطبيعه تقوم PHP بإطهار كل الاخطاء من دون التنبيهات, ومراحل الاخطاء عباره عن ثوابت سوف اعرضها لك في الجدول الذي ستراه الان :

القيمة
الخطأ
المعنى1E_ERRORاظهار الاخطاء الحرجه وقت
التشغيل2E_WARNINGاظهار الاخطاء الغير حرجه
وقت التشغيل4E_PARSEاظهار الاخطاء الي تتبع
الترجم8E_NOTICEاظهار التنبيهات16E_CORE_ERRORاظهار الخطأ اذا لم يعمل
محرك PHP32E_CORE_WARNINGاظهار الاخطاء الغير حرجه
اذا لم يعمل محرك PHP64E_COMPILE_ERROEاظهار اخطاء ترجمة الكود128E_COMPILE_WARNINGاظهار الاخطاء الغير حرجه
في ترجمة الكود256E_USER_ERRORاظهار الاخطاء المعرفه من
المستخدم مسبقا512E_USER_WARNINGاظهار الاخطاء الغير حرجه
المعرفه من المستخدم مسبقا1024E_USER_NOTICEاظهار التنبيهات المعرفه
من المستخدم مسبقا2048E_ALLاظهار كل الاخطاء
والانذارات والتنبيهات



اهداف الدرس:
  • مقدمه
  • مؤسس التصنيف
  • مدمر التصنيف
  • الخواص
  • المعاملات
  • الكلمه المفتاحيه Final
مقدمه :

عرفنا في الدرس السابع عشر و الثامن عشر ماهي برمجة الكائنات وماهي فوائدها وكيف تعمل وكيف نستخدمها, وعند اصدار النسخه رقم 5 من لغة PHP تم اعادة كتابة وهيكلة الكائنات في اللغه. تم اعادة النظر في نظام الكائنات القديم, واصدار نظام كائنات جديد, اقوى , افضل, خصائص اكثر. هذا هو موضوع درسنا لهذا اليوم, التعرف على جديد برمجة الكائنات في الاصدار الخامس من PHP و كما وعدتكم سوف يعتبر ( متفرقات ) و البقاء على الخط مع اللغه بعد انتهائنا من الدوره الكامله.
مؤسس التصنيف :
هل تذكر عندما كنا في الدرس السابع عشر نقوم بإنشاء مؤسس التصنيف بالطريقه ( function ) دعني اخبرك بشيئ ولكن لا تغضب مني, فتلك الطريقه لم تكن رسميه ولكن قمت بتعليمها لك لانها ( افضل ), والدليل على ذلك فالان لغة PHP في الاصدار رقم 5 قامت بجعل خاصية ( مؤسس التصنيف ) والذي يعني (Constructor ) شيئ اساسي في برمجة الكائنات. انشاء مؤسس تصنيف في الاصدار رقم 5 يكون عن طريق الكلمه المفتاحيه ( __construct() ) واليك مثال يشرح لك الطريقه , انظر التالي:
http://arccn.net/images/php/l33e3.gif
ومن مسامحة هذه اللغه الجميله, فقد جعلت الطريقه القديمه ( التي قمت بتعلمها في الدرس السابع عشر ) تعمل ايضا, فلو ان المترجم لم يجد الكلمه المفتاحيه ( __construct() ) فسوف يقوم بالبحث عن معامل يبدأ بنفس اسم الكائن لكي يتم اعتباره انه مؤسس التصنيف.
ملاحظه: اذا كنت تستخدم مبدأ الوراثه واردت ان تقوم بأستخدام ( مؤسس التصنيف ) للكائن الاب في الكائن ( الوارث ) فيكون ذلك بالطريقه التاليه ( parent::__construct() ) لاحظ الكود التالي:
http://arccn.net/images/php/l33e4.gif
مدمر التصنيف :
في الاصدار الخامس من هذه اللغه تم اضافة خاصية تسمي ( Destructor ) ومعناها ( المدمر ) وهي شبيه للغات البرمجه مثل ( C++ )وهذا المعامل يعمل في حالتين,
  1. جميع المؤشرات الى الكائن الغيت
  2. او عند تدمير الكائن بشكل مؤكد
ولاستخدام هذا المعامل نستخدم الكلمه المفتاحيه ( __destruct) ومثال على ذلك , لاحظ الكود التالي:
http://arccn.net/images/php/l33e5.gif
ملاحظه : نفس طريقة مؤسس التصنيف في حالة الوراثه يتم استخدامها مع مدمر التصنيف
ملاحظه : يتم استدعاء معامل التدمير حين انتهاء عمل برنامجك بشكل تلقائي
الخواص :
تم في الاصدار الخامس تغيير طريقة الخواص بالكامل في لغة PHP فأصبحت اكثر قوة واكثر تحكما, والمبدأ الذي تحدثنا عنه (Encapsulation ) تم تطبيقه بالكامل في هذا الاصدار. فعند تعلمنا لبرمجة الكائنات في الدوره سابقا كنا نقوم بإنشاء الخواص بالشكل التالي :
http://arccn.net/images/php/l17e3.gif
ولكن الرائع في PHP5 هو اننا الان نتحكم في ( اظهار ) الخواص وهناك 3 انواع لهذا التحكم وهي :
1. عام (Public )
وهذه الخاصيه تجعل الخاصيه قابلا للوصول من اي مكان تريده. فلو ان عندنا كائن اسمه ( car ) وبه الخاصيه ( color ) فيمكننا الوصول الى هذا الخاصيه بالطريقه التاليه ( $car->color ).
2. محمي (Protected )
وهذه الخاصيه تعني ان الخاصيه قابلا للوصل فقط من الكائنات التي تكون ( وارثه ) للكائن الاصلي.
3. سري (Private )
هذه الخاصيه هي (الافضل) وهي تعني ان التحكم في الخواص يكون فقط داخل الكائن الذي تم انشاءه ( في نفس الـ class )
لنقم برؤية مثال سريع لكيفية انشاء خواص بهذه الطرق الثلاث, لاحظ الكود التالي:
http://arccn.net/images/php/l33e1.gif
فلو على سبيل المثال , اردنا ان نقوم بإستخدام الخاصيه ( $on ) في كائن يرث الكائن ( car ) فلن يمكننا ذلك الا عن طريق (معاملات ) تقوم بجعلنا نتحكم في الخاصيه.
ملاحظه : استخدام الكلمه المفتاحيه ( var ) لانشاء الخواص لن تعمل في لغة PHP الاصدار الخامس.
المعاملات :
ايضا في الاصدار الخامس من لغة PHP تم تغيير طريقة بناء المعاملات, واصبحت مثل الخواص, فهناك معاملات ( عامه ) و ( محميه ) و( سريه ) لاحظ المثال التالي:
http://arccn.net/images/php/l33e2.gif
ملاحظه : انشاء معامل من غير ( public ) او ( private ) او ( protected ) فذلك سوف يجعل مترجم PHP يفترض ان المعامل من النوع (public ) تلقائيا.
الكلمة المفتاحيه Final :
هذه الكلمه المفتاحيه تستخدم مع الكائن او المعامل وهي تجعل هذا الكائن على المرحله ( النهائيه ) ولا يمكن ابدا تغييره بإستخدام الطريقه ( overrideing ) للكائن او المعاملات. وزيادة على ذلك فإن الكائن الذي يبدأ بالكلمه Final فلا يمكن ان يستخدم في مبدأ الوراثه. لاحظ المثال التالي:
http://arccn.net/images/php/l33e6.gif
وناتج عمل هذه الطريقه عند انشاء كائن من الـ sportCar سوف يؤدي ذلك الى خطأ من النوع ( Fata error ).

سؤال على الدرس :

  1. قم بإنشاء كائن كامل بطريقة PHP 5 ورئة ناتجك , وهل لديك القابليه لان تعمل مع هذه التغيرات بكل سهوله ام لا.
  2. قم بمراجعة دليل تشغيل لغةPHP من الموقع الرسمي (اضغط هنا ) لكي تقوم بالمرور على بعض الخواص التي لم امر عليها في هذاالدرس, فكما تعلم انا اقوم بجزء وانت اذا لديك الاهتمام تكمل باقي الجزء
اخوكم / محمد الرحيلي
منقول عن موقع http://arccn.net


الساعة الآن 02:25 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. منتديات المُنى والأرب

جميع المشاركات المكتوبة تعبّر عن وجهة نظر كاتبها ... ولا تعبّر عن وجهة نظر إدارة المنتدى