عرب ويب  

العودة   عرب ويب > تطوير و برمجة المواقع > بي اتش بي PHP
التسجيل التعليمات قائمة الأعضاء التقويم البحث مشاركات اليوم اجعل جميع المنتديات مقروءة

رد
 
أدوات الموضوع طرق مشاهدة الموضوع
  #11 (permalink)  
قديم 06-09-2005, 03:07 PM
 
تاريخ التسجيل: Jun 2005
المشاركات: 54
Post تاسعا : الجملة الشرطية Switch

تاسعا : الجملة الشرطية SWITCH

بعد أن شرحنا سابقا الجمل الشرطية الثلاثة المترابطة ( if و else و elseif ) سوف نشرح الآن الجملة switch ..
في الحقيقة الجملة switch تقوم باختصار الجمل الثلاث السابقة ، حيث أنها تتيح إدخال أكثر من شرط وليست كالجملة if التي تحتاج للجملة elseif حتى تدخل أكثر من شرط .

سوف نقوم بتطبيق مباشر على مثالنا ... فعلى سبيل المثال لو أردنا معرفة كيف عرف الزبون بموقعنا ، سنضع قائمة منسدلة أولا في الفورم كما يلي :
كود:
	<tr>
	  <td width="50%" align="center">
	  <select name="know">
	   <option value = "">
	   <option value = "a">من خلال منتديات سوالف
	   <option value = "b">من خلال إعلان في الجريدة
	   <option value = "c">من خلال إعلان تلفزيوني
	   <option value = "d">نصيحة من صديق
	  </select>
	  </td>
	  <td width="50%" align="center"><b><font face="Simplified Arabic">كيف عرفت 
	  بموقعنا ؟</font></b></td>
	</tr>
أضفه في الملف food.html في المكان الموضح بالصورة :
-------------------------------------------------------------------------

-------------------------------------------------------------------------
لاحظوا في الكود أننا أضفنا قائمة منسدلة واسميناها know ( أي أن المتغير في php سيكون know$ ) ، مكونة من أربع عناصر ، رموزها : (a,b,c,d) ... والآن سنكتب كود php يقوم باستقبال ما اختاره الزائر من القائمة ويظهره للزائر .

نستطيع كتابة هذا الكود كما أشرنا سابقا بطريقتين :
1- بطريقة الجمل الشرطية if - else - elseif :
-------------------------------------------------------------------------

-------------------------------------------------------------------------
لقد شرحنا طريقة عمل هذه الجمل في الدرس السابق وأفترض انكم تفهمون تماما ما قمت بعمله هنا ! أليس كذلك ؟!؟
2- بطريقة الجملة switch :
--------------------------------------------------------------------------

--------------------------------------------------------------------------
والآن سأبدأ بشرح الجملة بالتفصيل :
أولا قمنا بكتابة الجملة وبجانبها قوسين فيهما المتغير الذي جلبنا منه القيم ، ألا وهو القائمة المنسدلة التي أسميناها know$ .
هذه الجملة مشابهة تماما للجملة if ، ولكن هناك اختلافين :
الأول : في القوسين بدلا من كتابة الشرط كما في الجملة if ، نكتب فقط المتغير الذي سنطبق عليه الشروط .
الثاني : في الجملة if لا داعي للأقواس المعقوفة { } إلا إذا طبقنا أكثر من جملة واحدة ، لكن في switch فهذه الأقواس ضرورية دائما .
والآن سنأتي لتوابع الجملة switch وهي ثلاثة فقط :
case و break و default .
التابع الأول case ... ويستخدم لوضع الشرط ، فمثالنا السابق يقول : ( switch تمرير المتغير know$ على الحالات case ففي حالة a قم بعمل التنفيذ ... ) وهنا يوجد عندنا أربع حالات a و b و c وd ، سوف تقوم الجملة switch بتمرير المتغير know$ على هذه الحالات كلها ، وإذا انطبق المتغير مع أحدها سوف يطبق ما بداخلها ، ولكن هذه الجملة ستستمر في التطبيق حتى تصطدم بالجملة break فلو لم نضع هذه الجملة سوف يستمر بتطبيق الشرط المتحقق وما بعده غن كان بعده شيء ، لذا عند نهاية كل حالة (شرط) نضع الجملة break لننبه الجملة switch أن الشرط قد انتهى .
ولكن ماذا لو لم ينطبق أي من هذه الحالات ( الشروط ) ، عندها ستطبق switch ما يوجد داخل default ، فـdefault هذه قريبة جدا من عمل الجملة else إذا تذكرون !! حيث إذا لم ينطبق أي من الشروط السابقة سيطبق الأمور التي فيها .

هذا كل ما في الجملة switch .. وأريد أن أنبه لأمر مهم أنه يمكننا وضع حالتين أو أكثر لكل شرط كما يلي :
--------------------------------------------------------------------------

--------------------------------------------------------------------------
في الحقيقة لم يخطر ببالي مثال حي الآن ، ولكن ستحتاجها مستقبلا ، فأحببت أن أنبهكم لها .

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

انتظرونا ...

رد مع اقتباس
  #12 (permalink)  
قديم 06-09-2005, 03:12 PM
 
تاريخ التسجيل: Jun 2005
المشاركات: 54
Post عاشرا : التكرار

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

المهم .. كيف سنستخدم لغة php الآن لتكرار العمليات ؟!؟
في الحقيقة هناك ثلاثة طرق .. من خلال ثلاث جمل توفرها لنا لغة PHP والتي سنشرحها إن شاء الله ... والآن سنبدأ بالجملة الأولى في درسنا هذا :

الجملة الأولى : ( while )
كما عودتكم .. لن أشرح شيئا إلا بتطبيق عملي .. لذا على فرض أننا نريد عمل جدول يبين أسعار التوصيل للمنزل ، طبعا السعر يختلف حسب المسافة التي تفصل المنزل عن المطعم .
على كل حال قوموا بعمل صفحة php جديدة وأسموها : delivery.php .. وقوموا بوضع الكود التالي فيها :
كود:
<html>

<head>
<meta http-equiv="Content-Language" content="ar-sa">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>أسعار التوصيل</title>
</head>

<body>

<table border="1" width="70%" id="AutoNumber1" cellspacing="0"
style="border-collapse: collapse" bordercolor="#111111" cellpadding="2">
  <tr>
	<td width="50%" bgcolor="#6699FF" align="center">السعر</td>
	<td width="50%" bgcolor="#6699FF" align="center">المسافة</td>
  </tr>
  <tr>
	<td width="50%" align="center">10</td>
	<td width="50%" align="center">5</td>
  </tr>
  <tr>
	<td width="50%" align="center">20</td>
	<td width="50%" align="center">10</td>
  </tr>
  <tr>
	<td width="50%" align="center">30</td>
	<td width="50%" align="center">15</td>
  </tr>
  <tr>
	<td width="50%" align="center">40</td>
	<td width="50%" align="center">20</td>
  </tr>
  <tr>
	<td width="50%" align="center">50</td>
	<td width="50%" align="center">25</td>
  </tr>
</table>

</body>

</html>
كما رأيتم في الكود فإننا قمنا بتصميم جدول مكون من عمودين وخمسة أسطر ، وهذا تطلب منا كتابة كود طويل بعض الشيء .
سنقوم الآن بعمل كود يقوم بعمل سطر واحد من الجدول ، ثم نكرره على عدد الأسطر باستخدام الجملة ( while ) ..
قبل البدء بالعمل يجب تحديد الأمر الذي نريد تكراره ، وأيضا عدد مرات التكرار أو بلغة أخرى ( ما هو الشرط الذي نريده أن يتحقق لكي يستمر التكرار ) وأيضا المكان الذي نريد وضع كود التكرار فيه .... ثم بعد ذلك سنكتب الجملة التكرارية ( while ) ..
أولا : ماذا نريد أن نكرر ؟
ارجعوا إلى الكود .. ستلاحظون أن الكود المتكرر هو الكود التالي :
كود:
  <tr>
	<td width="50%" align="center">10</td>
	<td width="50%" align="center">5</td>
  </tr>
وهذا الكود يقوم بعمل سطر يكتب فيه المسافة وسعر التوصيل لهذه المسافة .
ثانيا : عدد مرات التكرار ؟
نريد من الكود أن يكرر هذا الأمر عدة مرات حتى يصل السعر إلى 50 أو تصل المسافة إلى 25 !! هل عرفتم لماذا ؟ لأن آخر سطر في الكود لدينا هو السطر الذي فيه المسافة 25 والسعر 50 ، لذا عندما يصل السعر إلى 50 أو تصل المسافة إلى 25 سنطلب من الكود التوقف عن التكرار .
ثالثا : أين نضع الكود ؟
هذا الأمر بسيط جدا .. سنقوم بإزالة الكودات المكررة في الصفحة السابقة ونضع مكانها جملة التكرار ، أظن أن السبب واضح ! فبدلا من الكودات المكررة الكثيرة ، سنضع كود واحد صغير يكرر لنا العملية برمتها .

أما الآن .. سنأتي لكتابة الجملة ، وقبل البدء سنحتاج لمتغيرين ، الأول للمسافة والثاني للسعر ، وذلك لأن المسافة والسعر سيتغير في كل مرة يتكرر فيها الكود ، أليس كذلك ؟!؟
سنسمي متغير المسافة distance$ ومتغير السعر price$ .

والآن افتحوا صفحة delivery.php ... واحذفوا الكودات المكررة :
-------------------------------------------------------------------------

-------------------------------------------------------------------------
ثم قوموا بكتابة الجملة while مكان الكود المحذوف :
-------------------------------------------------------------------------

-------------------------------------------------------------------------
والآن نأتي لشرح الجملة ... وإليكم البنية الأساسية لها :
كود:
while(الشرط الذي يجب أن يتحقق حتى يستمر التكرار
{
	   الكود الذي سيتكرر تنفيذه
}
ملاحظات هامة :
- لم نقم بكتابة الفاصلة المنقوطة ( بعد الجملة while .
- إذا أردنا إدخال كود html داخل كود php علينا كتابة خط مائل لليسار ( \ ) قبل أي شرطتين علويتين داخل كود الـHTML وإلا لن يعمل الكود ويظهر لك خطأ بالصفحة :

-------------------------------------------------------------------------

-------------------------------------------------------------------------
انتبهوا إلى أن الشرطتين العلويتين الداخلتين في كود php لا يجب وضع الشرطة المائلة لليسار :
-------------------------------------------------------------------------

-------------------------------------------------------------------------
أما الآن .. سنوضح ما كتبناه في الكود السابق :
أولا : قمنا بعمل متغيرين للمسافة والسعر حيث أنهما سيتغيران في كل سطر مكرر ، ثم ضبطناهما على القيمة صفر ، وذلك لأننا سنبدأ من الصفر ...
ثم بدأنا التكرار بالجملة while وقد وضعنا الشرط الذي يوقف التكرار : ( أن تصل المسافة إلى 25 (أو) أن يصل السعر إلى 50 ) ... لقد استعنا بعامل المقارنة أصغر (>) والعامل المنطقي (أو) ( || ).. أي أن يستمر التكرار ما دام السعر أقل من 50 أو المسافة أقل من 25 ، فإذا أصبح السعر أكبر من 50 أو المسافة أكبر من 25 سيتوقف التكرار .
ثم في الداخل طبعنا كود html يقوم بعمل سطر مكون من عمودين ضمن الجدول الرئيسي ، وأيضا قمنا بعمل عملية حسابية على كل من المتغيرين ، حيث أن المسافة تزداد كل مرة ( 5 ) والسعر يزداد كل مرة ( 10 ) فاستخدمنا العامل المدمج ( =+ ) أرجو الرجوع إلى درس العوامل لتفهموا طريقة عمل هذا العامل المدمج .

هذا كل ما في هذه الجملة ... ومن خلالها تستطيع عمل الكثير الكثير ... وسنشرح لاحقا الجملتين الباقيتين for و do .. while ولكن قبل ذلك أود منكم أن تفهموا هذا الدرس جيدا لأن الدرس التالي قائم على هذا الدرس .. وإذا فهمت الجملة while فستكون قد قهمت الجملة do .. while بنسبة 99% والجملة for بنسبة 90% ....

انتظرونا....
رد مع اقتباس
  #13 (permalink)  
قديم 06-09-2005, 03:18 PM
 
تاريخ التسجيل: Jun 2005
المشاركات: 54
Post تابع .. الجمل التكرارية ..

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

فالجملة do ... while هي أخت الجملة while ولكن يوجد فرقين اثنين فقط لا ثالث لهما ...
---------------------------------------------------------------------------

---------------------------------------------------------------------------
كما لاحظنا .. أن الفرق الأول هو أن الجملة while لا نكتب بعدها الفاصلة المنقوطة ( ; ) أما في الجملة do .. while فإننا نكتب الفاصلة المنقوطة بعد الجملة while ....
ثم في الجملة while الأوامر المنفذة والمكتوبة بين الأقواس المعقوفة { } تكون بعد الجملة while أم في الجملة do...while تكون قبل الجملة while ....

وهذان هما الفرقان الوحيدان ... ويترتب على هذين الفرقين شيء واحد فقط ... ألا وهو تنفيذ الأمر مرة واحدة على الأقل بغض النظر عن تحقق الشرط أو عدم تحققه .. وهذا في الجملة do..while أما الجملة while فلا يتم التنفيذ إلا بعد تحقق الشرط ...
ما معنى هذا ؟!؟ يبدو أني ( كنفزتكم ) لكن لا مشكلة سنوضح الآن بمثال حي ومباشر من أرض الملعب !

الجملة do تعني ( نفذ ) لذا سيتم تنفيذ الأوامر المكتوبة بعد do وهي مكتوبة قبل while مرة واحدة بدون التأكد من الشرط الموجود داخل الجملة while ... أما في المرة الثانية فما فوق .. فسيتم التحقق من الشرط قبل التكرار ... على عكس الجملة while التي تتأكد من الشرط من أول مرة قبل التكرار ...

على فرض أننا نريد عمل برنامج يقوم بالعد حتى 10 بدءا من قيمة يدخلها الزائر ....
افتحوا ملف جديد وأسموه count.html واكتبوا الكود التالي فيه :
كود:
<html>

<head>
<meta http-equiv="Content-Language" content="ar-jo">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>New Page 1</title>
</head>

<body>

<p align="center" dir="rtl">الرجاء إدخال رقم من (0) إلى (10) :</p>
<form method="POST" action="dowhile.php">
  <p align="center" dir="rtl">
  <input type="text" name="number" size="20"></p>
  <p align="center" dir="rtl"><input type="submit" value="إرسال" name="B1">
  <input type="reset" value="مسح" name="B2"></p>
</form>

</body>

</html>
طبعا من الكود يتبين لكم أننا سنبرمج ملف php اسمه : ...... !؟ احزروا ؟!
والآن افتحوا ملف جديد بواسطة php coder .. واكتبوا فيه الجملة do .. wihle ..
---------------------------------------------------------------------------

---------------------------------------------------------------------------
هذا الكود لن يعمل بشكل جيد ... لماذا ؟؟؟
الكود بالمختصر المفيد .. سيأخذ الرقم الذي يدخله الزائر من (0) إلى (10) ثم يبدأ بطباعة الأرقام بدءا من هذا الرقم الذي أدخله وحتى يصل إلى 10 ... فإذا وصل إلى 10 سيتوقف ... ولكن لماذا لن يعمل بشكل جيد ؟!؟ بسيطة .. جرب أن تدخل أي رقم أكبر من 10 ... ستجده يطبعه !! لماذا ؟ لأن الجملة do .. while تنفذ الأمر قبل التأكد من الشرط .. فبالرغم من أن الشرط لم يتحقق أي أن 11 مثلا أكبر من 10 إلى أنه تم طباعة الرقم مرة واحدة .. ثم لم يتكرر الأمر لأن الشرط لم يتحقق في المرة الثانية ...

طبعا لو كتبت الكود بواسطة الجملة while فإنه سيعمل بشكل طبيعي ولن يطبع أي قيمة خطأ ...
ولكن متى تحتاج الجملة do .. while ؟!؟ ... ستحتاجها بالتأكيد عندما تبدأ بكتابة كودات أكثر تعقيدا ...
مثلا أذكر عندما كنت أدرس في الجامعة لغة البرمجة c .. وهي على فكرة أخت الـphp فمن يتقن اللغة c فهو يتقن 90% من php ... طلب مني الدكتور مرة أن نبرمج لعبة ( حجرة ورقة مقص )... ولكنه طلب منا أن ندخل ميزة ( هل يريد المستخدم اللعب مرة أخرى ؟ ) .. فكان الحل ببساطة الجملة do .. while حيث أن المستخدم سيلعب مرة واحدة على الأقل في البداية ثم يتأكد من الشرط ألا وهو هل يريد اللعب مرة أخرى أو لا ؟!؟ فإذا كان اختيار المستخدم (لا) فلن يكرر اللعبة في المرة الثانية !

حسنا نأتي الآن للجملة for وهي جملة مهمة جدا في التكرار .. قبل بدء شرحها أريد أن أبين لكم فرقا جوهريا بين الجملتين do..while و while وبين الجملة for .... ألا وأن الجملة for تكرر الأمر عددا معروفا من المرات ويمكن أيضا أن يكون مجهولا .. بينما while و do..while يكون عدد مرات التكرار مجهولا دائما ...

البنية الأساسية لجملة for هي كالتالي :
كود PHP:
<?php

for(EXP1CONEXP2)
{
      
الأوامر التي سيتكرر تنفيذها
}

?>
الجملة for تأخذ 3 وسيطات أو بارامترات .. يفصل بينها فاصلة منقوطة ( ; ) .. وانتبهوا أن الجملة for لا تحتاج لفاصلة منقوطة في نهايتها .. ثم الأوامر التي يتم تكرارها تأتي بعد الجملة بين أقواس معقوفة إن كانت أكثر من سطر ، اما إن كانت الأوامر المكررة عبارة عن سطر واحد فليس هناك حاجة للأقواس المعقوفة .
والآن نأتي للبارامترات الثلاثة :[*] EXP1 : هنا نكتب القيمة الأولى للعداد .[*] CON : هنا نكتب الشرط الذي يجب أن يتحقق حتى يستمر التكرار .[*] EXP2 : هنا نكتب التغيير الدوري على العداد بدءا من التكرار الثاني .
ماذا تعني كل هذه التخابيص ؟!؟ ألا يدور هذا السؤال بذهنك ؟ أنا متأكد من ذلك ...
حسنا ... سنعود لمثال التوصيل للمنزل delivery.php ونحذف الجملة while ونقوم بنفس العملية ولكن باستخدام الجملة for ...
---------------------------------------------------------------------------

---------------------------------------------------------------------------
قارنوا بين هذه الجملة .. وبين جملة while في الدرس السابق ...
في الوسيطة الأولى قمنا بضبط المتغير distance$ على (5) لأننا سنبدأ من 5 .. ثم في الوسيطة الثانية كتبنا الشرط الذي يجب تحققه حتى يستمر التكرار ، ألا وهو أن تبقى المسافة أقل من او تساوي 25 .. فإن أصبحت المسافة أكبر من 25 فسيتوقف العداد .. ثم الوسيطة الثالثة كتبنا التغيير الدوري للعداد .. حيث أننا في كل تكرار سنزيد 5 على المسافة distance$ أليس كذلك ؟ ولكن كما قلت سابقا فإن هذه الزيادة ستبدأ من التكرار الثاني .. أي أن قيمة distance$ أول مرة ستون كما ضبطناها = (5) ولكن من المرة الثانية فما فوق سيزيد (5) على المسافة distance$ ...

هذا كل ما في الجملة for .. وقبل الانتهاء من الجمل التكرارية سأشرح ث جمل مهمة في العملية التكرارية :
break و continue و exit ...

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

الجملة exit إذا كتبتها في أي مكان داخل أو خارج التكرار .. سوف توقف عمل ملف php بأكمله وتخرج منه .
على سبيل المثال .. إذهب لملف order.php واكتب exit في المكان الموضح بالصورة :
---------------------------------------------------------------------------

---------------------------------------------------------------------------
والآن جرب الملف وانظر ماذا يحدث لو لم تقم بطلب شيء !

أما الجملتين break و continue فأترك لك تجربتهما على الملفين dowhile.php و delivery.php وترى بنفسك ماذا تفعلان .. وإن لم تفهمهما فانا موجود ويمكنك ( السؤلاني ) = باللغة الماليزية

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

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

لن تصدقوني إن قلت لكم أنكم تعلمتم إلى الآن 50% من لغة PHP ... ولكن هذا حقيقة وواقع ..
في الوحدة القادمة سأشرح بإذن الله تعالى إن أحيانا لذاك الزمن ... ( تخزين واستخراج البيانات ) .. وبعد شرح تلك الوحدة سنقوم ببرمجة 12 سكريبت !!؟!!؟!! ... تخيلوا .. بعد الوحدة القادمة ستكون قادرا على برمجة 12 سكريبت من أشهر السكريبتات وأكثرها تداولا واستخداما ...

فإلى اللقاء القادم .. وانتظرونا
رد مع اقتباس
  #14 (permalink)  
قديم 06-18-2006, 03:28 AM
Senior Member
 
تاريخ التسجيل: Jun 2006
المشاركات: 114
افتراضي

كل ضه يا سلام عليك
رد مع اقتباس
رد


أدوات الموضوع
طرق مشاهدة الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are معطلة


جميع الأوقات بتوقيت GMT +2. الساعة الآن 12:38 PM.


Powered by vBulletin®
Copyright ©2000 - 2008.

Search Engine Friendly URLs by vBSEO 3.0.1 ©2007, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27