السبت، 28 أغسطس 2010

البرمجة باستخدام PHP

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

و الان سنقوم بأنشاء صفحتين الاولى ستكون مجرد HTML  و بها FORM بها حقول لتعبئة البيانات و فى نهايتها زر مكتوب عليها Submit او Send my Data. 

الصفحة الثانية: ستكون صفحة بها اكواد PHP. من خلال هذه الاكواد سيتم معالجة البيانات التى تم كتابتها من خلال الصفحة الاولى.



<html>
<head>
<title>My Form</title></head>
<body>
<form action="handle_form.php" method="post">
<fieldset><legend>Enter your information in the form below:</legend>
<p><b>Name:</b> <input type="text" name="name" size="20" maxlength="40" /></p>
<p><b>Email Address:</b>
<input type="text" name="email" size="40" maxlength="60" /></p>
<p><b>Gender:</b>
<input type="radio" name="gender" value="M" />Male
<input type="radio" name="gender" value="F" /> Female
</p><p><b>Age:</b>
<select name="age">
<option value="0-29">Under 30</option>
<option value="30-60">Between 30 and 60</option>
<option value="60+">Over 60</option>
</select></p>
<p><b>Comments:</b> <textarea name="comments" rows="3" cols="40"></textarea></p>
</fieldset>
<div align="center">
<input type="submit" name="submit" value="Submit My Information" />
</div>
</form>
</body>
</html>

الكود بالاعلى خاص بصفحة HTML و هو مجرد صفحة بها FORM كما ذكرنا من قبل و لكن هنا ملحوظة مهمة.
لاحظ المود المظلل باللون الوردى , form_handle.php هنا تكتب مسار الصفحة التى سيتم تمرير اليها البيانات المكتوبة فى هذه الــ FORM بمجرد الضغط على الزر SUBMIT. بشرط ان يكون الملف form_handle.php محفوظ فى نفس المجلد التى تم حفظ فيه الملف الحالى HTML .

سنقوم الان بإنشاء صفحة PHP و اسمها form_handle.php و سيتم حفظها فى نفس مجلد ملف HTML. الكود المكتوب فى ملف الــ PHP سيتم عن طريقه معالجة البيانات المرسلة و القادمة الى هذه الصفحة من صفحة نموذج HTML.


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


<html>
<head>
<title>Form Feedback</title>
</head>
<body>
<?php
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$comments = $_REQUEST['comments'];

echo "<p>Thank you, <b>$name</b>, for the following comments: <br />
<tt>$comments</tt></p>
<p>We will reply to you at <i>$email</i>.</p>\n";
?>
</body>
</html>

من انواع المتغيرات الموجودة داخل لغة PHP نوعا يسمى Super Global , و هى متغيرات يمكن تبادلها من خلال اكثر من صفحة ويب. و هنا يلزم استخدامها لكى يتم قراءة المتغيرات المرسلة من خلال النموذج.

شرح الكود:

فى النموذج الاول استخدمنا method=post و التى تمرر متغيرات لها نفس اسماء الحقول التى كتبناها فى النموذج , الخاصية name الموجودة داخل كل وسم من وسوم HTML يتم تمرير متغير باسم هذا الحقل فمثلا لاحظ التالى:

<input type="text" name="name" size="20" maxlength="40" />

الخاصية name هى المسؤولة عن ذلك , كتبنا كلمة name للخاصية name فهذا الحقل المسؤول عن كتابة الاسم. و يمكنك تغييره الى اى اسم اخر. فى الصفحة الاخرى التى تحتوى على كود PHP. الصفحة الاولى انشأت متغيرا اسمه name   و تم تمريره الى الصفحة الثانية PHP عن طريق الطريقة post.
كتبنا فى الصفحة الثانية 
 $_REQUEST['name'];
عن الضغط على الزر submit يتم تمرير الحقول كمتغيرات الى الصفحة المكتوبة فى خاصية action , يتم ارسالها على هيئة مصفوفة اسمها REQUEST_$ .

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

ملحوظة: يمكنك استخدام المصفوفة POST_$ مثل REQUEST_$.

و اذا كنت تستخدم الطريقة GET نستخدم المصفوفة GET_$

الاثنين، 9 أغسطس 2010

اساسيات لغة PHP المتغيرات و الثوابت

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


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

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

echo 'Hello, world!';
print "It's nice to see you.";
قم بحفظ النص التالى فى ملف بامتداد php , اذا كنت تستخدم برنامج النوت باد فانتبه للخطوات التالية :

لكى يتم تشغيل الكود و ترى تأثيره. يتم حفظ الملف داخل مجلد تثبيت الاباتشى فى المسار التالى
c:\Apache\htdocs

باعتبار انك قمت بتثبيت الاباتشى على C

جيد . و لكن ماذا لو اردنا كتابة جملة بها الفاصلة مثل جملة I'm happy
فى هذه الحالة يجب استخدام العلامتين ' '   مع "   “  , وبالتالى نتغلب على هذه المشكلة كما بالشكل التالى :

echo 'She said, "How are you?" '; 
print "I'm just ducky.";


فى السطر الثانى لايمكننا ابدا استخدام العلامتين '  ' المفردة حيث ان كلمة I'm اصلا تحتوى على العلامة '

و لكن يمكننا ايضا بكل مرونة استخدام العلامتين ' ' و لكن لاحظ كيف يتم عمل ذلك

echo "She said, \"How are you?\"";   
print 'I\'m just ducky.';

العلامة \ تخبر لغة PHP ان ما سيأتى بعدها هو ليس نهاية السلسلة الحرفية و بهذه الطريقة سوف يتم كتابة How Are you محاطة بين علامتين تنصيص كما هى.

تعالوا نجرب ما قمنا بكتابته , قم بفتح انترنت اكسبلورو و اكتب فى شريط العنوان

http:\\localhost\first.php

باعتبار انك قمت بحفظ الملف باسم first.php
سترى العبارات التى كتبناها تظهر على الشاشة.


ولكن هل نستطيع ارسال كتبات لها تنسيقات خاصة كالالوان و الحجم؟؟؟  بالطبع نعم , اذا ارسلنا اكواد لغة HTML يمكننا ارسال الكود الذى يجعل الكتابة مائلة او سميك.... و هكذا.


echo 'Hello, world!';

ملحوظة: يمكنك كتابة اسماء الدوال بالحروف الكبيرة او الصغيرة لان لغة PHP هى case-insensitive


كتابة التعليقات


لكى نعرف اكثر عن كتابة التعليقات يجب ان نلاحظ ان التعليقات بالنسبة للغة HTML لا يتم عرضها و لكن يمكنك رؤيتها اذا اخترت Right click ثم view source اى انها ترسل الى متصفح الانترنت ضمن ملف HTML و لكنها لا تظهر لانها مجرد تعليقات. جرب ان تكتب اى كود HTML و يتخلله اى تعليق مكتوب بين وسم التعليقات 
قم بحفظ الصفحة التى تتضمن التعليق و قم بعرضها فى متصفح الانترنت. نلاحظ ان التعليق لن يظهر عند عرض الصفحة و لكن عند اختيار الامر View Source يتم عرض التعليق مكتوبا كما هو بين وسم التعليقات فى لغة HTML.

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

يوجد اكثر من طريقة لكتابة التعليقات فى لغة PHP. 
# This is a comment.
// This is also a comment

و لكن هذا لكتابة تعليقات على سطر واحد فقط اما اذا اردنا كتابة اكثر من سطر كتعليق.
/* This is a longer comment
that spans two lines. */

ملحوظة: كتابة تعليق داخل تعليق تسبب خطأ اثناء تشغيل الكود.


انواع المتغيرات

تستخدم المتغيرات لحفظ قيم يمكن تغييرها اثناء تنفيذ البرنامج و لها 8 انواع :

  1. four scalar (single-valued) types — Boolean (TRUE or FALSE), integer, floating
    point (decimals), and strings (text).
  2. two non-scalar (multivalued) — arrays and objects.
  3. resources (which you'll use when interacting with databases) and NULL (which is a special type that has no value).
 هذا طبقا لدليل استخدام لغة PHP.

هيا بنا نقوم بتمرين بسيط لعرض محتويات متغيرات موجودة داخل لغة PHP. سنستخدم هنا مصفوفة جاهزة داخل لغة PHP . و بالطبع كلنا نعرف ان المصفوفة تحتوى على عدة عناصر فى نفس الوقت. و المصفوفة هى 
$_SERVER
بالطبع لن تكتب بهذه الطريقة و لكن سنستخدمها على النحو التالى باستخدام قيم جاهزة داخل PHP ايضا

$_SERVER['PHP_SELF'];   تعرض مسار و اسم ملف لغة بى اتش بى الحالى
$_SERVER['HTTP_USER_AGENT'];        يقوم بعرض بيانات عن المتصفح الذى يعرض ملف الكود الحالى
$_SERVER['REMOTE_ADDR'];      يعرض رقم الجهاز الذى يستخدم ملف الكود الحالى الاى بى

قم بفتح ملف Notepad او اى محرر تفضله لكتابة ملفات PHP.و قم بكتابة الكود التالى:-

 كما نرى قمنا بتعريف 3 متغيرات يبدأ اسم كل متغير بعلامة $ و استخدمنا ايضا الدالة echo التى تستخدم لطباعة قيم المتغيرات على نافذة المتصفح. يمكننا ايضا تضمين المتغيرات داخل دالة echo و لكن لاحظ فى هذه الحالة نستخدم فقط " "  و ليس  '   '
لكى يتم طباعة قيم المتغيرات و ليس اسم المتغير, اذا قمت باستبدال "  "  بـــ   '     '  سيتم عرض اسم المتغير كنص و ليس كمتغير اى ان الناتج سيكون هو اسم المتغير و قبله علامة $.
بعد كتابة الكود قم بحفظ الملف باسم variables.php داخل مجلد htdocs الموجود ضمن مجلد الاباتشى ,  و طبعا اذا اردنا تشغيل هذا الملف نكتب http://localhost/variables.php لا حظ النتائج و قم بتجربة تشغيل هذا الكود على اكثر من متصفح تجد اختلافا فى المتصفح.

لاحظ:

  1. لا يلزم تعريف المتغير اولا قبل استخدامه و لكن كما رأينا يمكن استخدام المتغير مباشرة.
  2. يفضل استخدام اسماء معبرة للمتغيرات
  3. كل سطر فى لغة PHP ينتهى بالعلامة ;
المتغيرات النصية

متغيرات تحمل قيم يتم التعامل معها على انها حرفية مهما كانت محتوياتها. و امثلة لها : 
'Tobias'
"In watermelon sugar"
'1,000'
'February 3, 2005'

و لكى نقوم باستخدام متغير نكتب اسم المتغير و علامة = و امامها القيمة المراد تخزينها فى المتغير
$first_name = 'Tobias';
$today = 'February 3, 2005';

و لكى يتم طباعة هذين المتغيرين نستخدم الدالة echo او print لطباعة القيم المسجلة داخلهما.
echo $first_name;
print $first_name;

فى المثال التالى سنقوم باستخدام وسم HTML الذى يعرض الكتابة بشكل مائل من داخل اكواد PHP
كما يمكنك استخدام الوسوم المختلفة فى لغة HTML لتنسيق الكتابة.

سنقوم الان بتعديل بسيط جدا على هذا الكود نريد ان نعرض اسم المؤلف المكون من first name  و last name , و لذلك سننشئ متغيرا يحتوى على قيمة المتغيرين و هنا نستخدم رابط لربط سلسلتين حرفيتين ببعضهما البعض و هو . مجرد dot
$author = $first_name . ' ' . $last_name;

تم استخدام سلسلة حرفية فارغة للفصل بين المتغيرين و ذلك فقط لتحسين مخرجات الكتابة. حتى لا يظهر الاسم الاول ملاصقا للاسم الثانى.
فى السطر الاخير من الكود استبدل المتغيرين و اكتب اسم المتغير author$ بدلا منهما و هو الان يحمل الاسمين مفصولين بمسافة. و هذا يسمى بــ concatenation.

دوال لتغيير حالة الاحرف:

  1. strtolower()        تحويل حالة الاحرف كلها الى احرف صغيرة
  2. strrtoupper()      تحويل حالة الاحرف كلها الى احرف كبيرة
  3. ucfirst()             تحويل حالة الحرف الاول فقط الى حرف كبير مثلا فى بداية الجملة
  4. ucwords()              تحويل حالة الحرف الاول من كل كلمة الى حرف كبير مثلا فى حالة الاسماء
و يمكن تمرير الى هذه الدوال النص المراد تحويل حالته. 
يمكن تمرير متغيرات لهذه الدوال ايضا كالتالى.
$author=ucwords($first_name . ' ' . $last_name);


المتغيرات الرقمية:

متغيرات تحتوى على قيم عددية و هذه امثلة لها
● 8
● 3.14
● 10980843985
● -4.2398508
● 4.4e2

المتغيرات الرقمية لا تكتب ابدا بين '  ' لانها ستعامل بهذه الطريقة على انها متغيرات حرفية. الجدول التالى يوضح انواع العمليات التى تتم على المتغيرات الرقمية 


الدالة round :  هى دالة تقوم بتقريب المتغير او ما يتم تمريره اليها الى اقرب رقم صحيح او تقريبه الى اقرب عدد مكون من ارقام عشرية.
$n = 3.14;
$n = round ($n);
هنا يكون الناتج 3 , تم التقريب لاقرب عدد صحيح. 

اما استخدامها هكذا
echo round(1.95583, 2);
هنا سيكون الناتج 1.96  , اى تقريب الرقم الى اقرب رقمين عشريين

الدالة number_format :

تعرض الارقام التى يتم تمريرها فى هذه الصورة 20,943  وضع الفاصلة كل 3 ارقام لتسهيل قراءة الرقم.
$n = 20943;
$n = number_format ($n);

الناتج هو 20,943 , تم وضع فاصلة بعد 3 ارقام لقراءة العدد بشكل اسهل. و يمكن ايضا التحكم فى عدد الارقام بعد العلامة العشرية كالتالى : 
$n=number_format ($n, 2);

سيتم عرض العدد بهذا الشكل 20,943.00 ... حتى لو لم يحتوى العدد على اى ارقام عشرية , سيتم كتابة الصفرين بعد العلامة العشرية. بالطبع يمكن تغيير عدد الارقام العشرية التى نرغب فى عرضها اذا قمنا بتمرير عدد الارقام العشرية المراد ظهورها بدلا من 2.

الثوابت:

لقد تحدثنا عن المتغيرات. الان نتحدث عن الثوابت او Constants و الثوابت لها قيمة واحدة ثابتة لا تتغير طوال سير البرنامج و يمكنك تسكينها بالقيمة التى ترغب فيها و لكن ما ان يتم تخزين قيمة بداخلها لا يتم تغييرها الى اى قيمة اخرى لانها ثابت. و لكن يتم تعريف الثوابت بطريقة مختلفة عن طريقة تعريف المتغيرات فنستخدم دالة define للاعلان عن الثابت و قيمته
define ('NAME', 'value');
و هذا مثال صغير نقوم فيه بالاعلان عن ثابت و من ثم طباعة القيمة المخزنة داخله.
define ('USERNAME', 'trout');
echo 'Hello, ' . USERNAME;
و كما ان هناك متغيرات معرفة مسبقا داخل لغة PHP فهناك ايضا ثوابت سابقة التعريف.
PHP_VERSION    اصدار بى اتش بى 
PHP_OS        تقوم بعرض بيانات عن نظام التشغيل الذى يقوم بتشغيل بى اتش بى

هذه نهاية الدرس.