مثلها مثل اى لغة برمجة اخرى ... يمكنك كتابة الاكواد لتنفيذ لتعليمات التى تريدها لتشغيل برنامجك و لقد تعلمنا اساسيات اللغة. هيا بنا الان نسيتخدم ما تعلمناه لكى نتعلم اشياء جديدة تمكننا من تنفيذ بعض الامكانيات الجميلة التى نراها فى المواقع المختلفة.
و الان سنقوم بأنشاء صفحتين الاولى ستكون مجرد HTML و بها FORM بها حقول لتعبئة البيانات و فى نهايتها زر مكتوب عليها Submit او Send my Data.
الصفحة الثانية: ستكون صفحة بها اكواد 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>
<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>
<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_$
الشرط IF
يمكن كتابة الجمل الشرطية بعدة طرق مختلفة.
if (condition) {
// Do something!
} else {
//Do something else!
}
// Do something!
} else {
//Do something else!
}
OR
if (condition1) {
// Do something!
} elseif (condition2) {
//Do something else!
} elseif (condition3) {
//Do something else!
} elseif (condition4) {
//Do something else!
} else {
//Do something different!
}
// Do something!
} elseif (condition2) {
//Do something else!
} elseif (condition3) {
//Do something else!
} elseif (condition4) {
//Do something else!
} else {
//Do something different!
}
و الجدول التالى يوضح المعاملات المستخدمة عند استخدام الجمل الشرطية: -
و الان سنقوم بتعديل بسيط فى المثال السابق و سنضيف جملة شرطية تقوم بكتابة تحية على حسب نوع المستخدم مذكر او مؤنث.
قم بتحرير الملف handle_form.php فى اى محرر ,
قم بتحرير الملف handle_form.php فى اى محرر ,
<html>
<head>
<title>Form Feedback</title>
</head>
<body>
<?php
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$comments = stripslashes( $_REQUEST['comments'] );
//هنا تم اضافة الجملة الشرطية
if (isset($_REQUEST['gender'])) {
$gender=$_REQUEST['gender'];
} else
{
$gender=NULL;
}
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";
<head>
<title>Form Feedback</title>
</head>
<body>
<?php
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$comments = stripslashes( $_REQUEST['comments'] );
//هنا تم اضافة الجملة الشرطية
if (isset($_REQUEST['gender'])) {
$gender=$_REQUEST['gender'];
} else
{
$gender=NULL;
}
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";
//متغير يحمل النوع الذى ادخله المستخدم فى نافذة النموذج و طباعة التحية بناء على ذلك
if ($gender=='M'){
echo '<p><b>Good day, Sir!</b></p>';
} elseif ($gender=='F'){
echo '<p><b>Good day, Madam!</b></p>';
} else
{
echo '<p><b>You forgot to enter your gender!</b></p>';
}
?>
</body>
</html>
if ($gender=='M'){
echo '<p><b>Good day, Sir!</b></p>';
} elseif ($gender=='F'){
echo '<p><b>Good day, Madam!</b></p>';
} else
{
echo '<p><b>You forgot to enter your gender!</b></p>';
}
?>
</body>
</html>
كما نرى يتم اضافة جملة شرطية للتحقق اولا ان REQUEST_$ لا يساوى NULL و هذا يعنى ان المستخدم قد قام بإدخال قيمة فى النموذج , فإذا كانت قيمة هذا المتغير لا تساوى NULL قمنا بتخزين قيمته داخل متغير اخر سميناه gender$ و هذا المتغير بدوره سيأخد القيم M او F او NULL , هذه هى كافة الاحتمالات الممكنة لقيمة هذا المتغير.
اضفنا جملة شرطية اخرى الغرض منها هى التحقق من قيمة المتغير gender$ اذا كانت تساوى M فنقوم بطباعة جملة Good Day Sir و هى الجملة الخاصة بالنوع المذكر, و اذا كان النستخدم قد اختار النوع F ستكون قيمة المتغير F و بالتالى سيتم طباعة العبارة Good Day madam , اما اذا لم يدخل المستخدم اى قيمة لهذا المتغير فالتالى تصبح قيمته NULL و عليه سيتم طباعة العبارة المناسبة و هى You forgot to enter gender.
الجملة الشرطية Switch
بدلا من استخدام عدة جمل شرطية بطريقة IF-elseif-else نستخدم الجملة switch اسهل من ذلك.
و الصيغة العامة لها هى : -
switch ($variable){
case 'value1':
//Do this.
break;
case 'value2':
//Do this instead.
break;
default:
//Do this then.
break;
}
case 'value1':
//Do this.
break;
case 'value2':
//Do this instead.
break;
default:
//Do this then.
break;
}
هى تقوم بالعمل على قيمة متغير و تختبر قيمة هذا المتغير بناء على عدة جمل مكتوبة بداخلها و هى case اى حالة المتغير عندما يساوى قيمة معينة.
و سنقوم باستخدام الجملة الشرطية switch بدلا من If-elseif-else المكتوبة فى المثال السابق. سنقوم باستبدال الجملة الشرطية الثانية و نستخدم بدلا منها طريقة switch
<html>
<head>
<title>Form Feedback</title>
</head>
<body>
<?php
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$comments = stripslashes( $_REQUEST['comments'] );
if (isset($_REQUEST['gender'])) {
$gender=$_REQUEST['gender'];
} else
{
$gender=NULL;
}
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";
switch ($gender){
case 'M':
echo '<p><b>Good day, Sir!</b></p>';
break;
case 'F':
echo '<p><b>Good day, Madam!</b></p>';
break;
default:
echo '<p><b>You forgot to enter your gender!</b></p>';
break;
}
?>
</body>
</html>
<head>
<title>Form Feedback</title>
</head>
<body>
<?php
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$comments = stripslashes( $_REQUEST['comments'] );
if (isset($_REQUEST['gender'])) {
$gender=$_REQUEST['gender'];
} else
{
$gender=NULL;
}
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";
switch ($gender){
case 'M':
echo '<p><b>Good day, Sir!</b></p>';
break;
case 'F':
echo '<p><b>Good day, Madam!</b></p>';
break;
default:
echo '<p><b>You forgot to enter your gender!</b></p>';
break;
}
?>
</body>
</html>
قم بحفظ الملف و تجربة هذه الاكواد.
التحقق من المدخلات فى النموذج
تستخدم للتحقق من المدخلات التى ادخلها المستخدم فى النموذج و يكثر استخدام الدالة isset حيث انها تقوم باختبار المتغيرات ما اذا كانت قم تم تعيين قيم لها ام لا. و لكنها غير فعالة مع الحقول النصية Text لأنه من الممكن ان يقوم المستخدم بإدخال مسافات فقط ... هنا نريد ان تعالج قيمة النص على انها فارغ و لكن هذه الدالة تعالج المسافات بالقيمة True و بالتالى لا يمكن الاعتماد عليها.
الان نقوم بكتابة الاكواد التالية لعمل التحقق من المدخلات.
اذا كتبنا الكود بهذه الطريقة سينتج عن ذلك خطأ اثناء تنفيذ الصفحة. و بدلا من ذلك نستخدم الاقواس الملفوفة.
التحقق من المدخلات فى النموذج
تستخدم للتحقق من المدخلات التى ادخلها المستخدم فى النموذج و يكثر استخدام الدالة isset حيث انها تقوم باختبار المتغيرات ما اذا كانت قم تم تعيين قيم لها ام لا. و لكنها غير فعالة مع الحقول النصية Text لأنه من الممكن ان يقوم المستخدم بإدخال مسافات فقط ... هنا نريد ان تعالج قيمة النص على انها فارغ و لكن هذه الدالة تعالج المسافات بالقيمة True و بالتالى لا يمكن الاعتماد عليها.
الان نقوم بكتابة الاكواد التالية لعمل التحقق من المدخلات.
<html>
<head>
<title>Form Feedback</title>
</head>
<body>
<?php
//----------------Cehck name------------------------
if (!empty($_REQUEST['name']))
{
$name=$_REQUEST['name'];
} else {
$name=NULL;
echo '<p><font color="red">You forgot to enter your name!</font></p>';
}
//-----------------Cehck email--------------------
if (!empty($_REQUEST['email']))
{
$email=$_REQUEST['email'];
}else {
$email=NULL;
echo '<p><font color="red">You forgot to enter your email address!</font></p>';
}
//-------------------Cehck comments---------------
if (!empty($_REQUEST['comments']))
{
$comment=$_REQUEST['comments'];
} else {
$comment=NULL;
echo '<p><font color="red">You forgot to enter your comments!</font></p>';
}
//-------------------Check gender-----------------
if (isset($_REQUEST['gender'])) {
$gender=$_REQUEST['gender'];
if ($gender=='M')
{
$message = '<p><b>Good day, Sir! </b></p>';
} elseif ('F'==$gender)
{
$message = '<p><b>Good day, Madam! </b></p>';
} else {
$message=NULL;
echo '<p><font color="red">Gender should be either "M" or "F"!</font></p>';
}
} else
{
$gender=NULL;
echo '<p><font color="red">You forgot to select your gender!</font></p>';
}
//-----------------Print out if everything is ok
if ($name && $email && $gender && $comment)
{
echo "<p>Thank you, <b>$name</b>, for the following comments: <br /><tt>$comment</tt></p>
<p>We will reply to you at <i>$email</i>.</p>";
echo $message;
} else {
echo '<p><font color="red">Please go back and fill out the form again.</font></p>';
}
?>
</body>
</html>
<head>
<title>Form Feedback</title>
</head>
<body>
<?php
//----------------Cehck name------------------------
if (!empty($_REQUEST['name']))
{
$name=$_REQUEST['name'];
} else {
$name=NULL;
echo '<p><font color="red">You forgot to enter your name!</font></p>';
}
//-----------------Cehck email--------------------
if (!empty($_REQUEST['email']))
{
$email=$_REQUEST['email'];
}else {
$email=NULL;
echo '<p><font color="red">You forgot to enter your email address!</font></p>';
}
//-------------------Cehck comments---------------
if (!empty($_REQUEST['comments']))
{
$comment=$_REQUEST['comments'];
} else {
$comment=NULL;
echo '<p><font color="red">You forgot to enter your comments!</font></p>';
}
//-------------------Check gender-----------------
if (isset($_REQUEST['gender'])) {
$gender=$_REQUEST['gender'];
if ($gender=='M')
{
$message = '<p><b>Good day, Sir! </b></p>';
} elseif ('F'==$gender)
{
$message = '<p><b>Good day, Madam! </b></p>';
} else {
$message=NULL;
echo '<p><font color="red">Gender should be either "M" or "F"!</font></p>';
}
} else
{
$gender=NULL;
echo '<p><font color="red">You forgot to select your gender!</font></p>';
}
//-----------------Print out if everything is ok
if ($name && $email && $gender && $comment)
{
echo "<p>Thank you, <b>$name</b>, for the following comments: <br /><tt>$comment</tt></p>
<p>We will reply to you at <i>$email</i>.</p>";
echo $message;
} else {
echo '<p><font color="red">Please go back and fill out the form again.</font></p>';
}
?>
</body>
</html>
لاحظ كيف استخدمنا الدالة empty حيث قمنا بكتابة ! لنفيها اى عندما يكون المتغير المراد التحقق منه غير فارغ اى به قيمة
طبعا بشرط الا تكون هذه القيمة عبارة عن عدة مسافات.
بالطبع يمكن استخدام الدالة ()is_numeric بنفس الطريقة التى استخدمنا بها الدالة isset او empty و ذلك للتأكد من ان قيمة المتغير هى قيمة رقمية.
ايضا يمكن استخدام الدالة ()strlen و التى تعود بقيمة تساوى طول السلسلة الحرفية المدخة اليها. و يمكن استخدامها مع المتغيرات النصية مثل الاسم و البريد الاليكترونى.
if (strlen($var) > 0)
{ // $var has a value. }
else { // $var does not
have a value.
have a value.
}
المصفوفات
يمكن تسجيل اكثر من قيمة فى نفس الوقت داخل متغير من نوع مصفوفة. و يتم تسجيل القيم داخل المصفوفة على شكل جدول به مفتاح العنصر و قيمة العنصر.
و يمكن استخدام احرف بدلا من الارقام اى يكون مفتاح كل عنصر عبارة عن حرف او حرفين او كما تريد.
و طبقا للجدولين بالاعلى يمكنك طباعة القيم المسجلة داخل المصفوفة على النحو التالى :
echo $artists[2]; // AniDiFranco
echo $states['MD']; // Maryland
echo $states['MD']; // Maryland
ملحوظة:
اذا اردنا طباعة قيمة اى عنصر فى المصفوفة ذات المفتاح الحرفى لانكتب مثل السطرين بالاعلى و اليك المثال على ذلك:
echo "IL is the abbreviation for $states['IL'].";
اذا كتبنا الكود بهذه الطريقة سينتج عن ذلك خطأ اثناء تنفيذ الصفحة. و بدلا من ذلك نستخدم الاقواس الملفوفة.
echo "IL is the abbreviation for {$states['IL']}.";
سنستخدم الان مثال على المصفوفة.سنقوم بإنشاء ملفين الاول سيكون عبارة عن 3 قوائم تمثل على الترتيب اليوم و الشهر و السنة و سيختار المستخدم قيمة لكل واحدة و بعد ان يضغط المستخدم submit سنقوم بكتابة script او كود اخر يعرض ما قام المستخدم بإدخاله فى الملف الاول.
الان قم بتشغيل اى محرر للكود و اكتب فيه الكود التالى و قم بحفظه فى ملف باسم calendar.php
//range() الدالة
$states = array ('TX' => 'Texas', 'UT' =› 'Utah',...);
$provinces = array ('QC' => 'Quebec', 'AB' => 'Alberta',...);
الان قم بتشغيل اى محرر للكود و اكتب فيه الكود التالى و قم بحفظه فى ملف باسم calendar.php
<html>
<head>
<title>Mini Calendar</title>
</head>
<body>
<form action="Calendar_handler.php" method="post">
<?php
//يمكنك اختيار مفتاح بدء عناصر المصفوفة فبدلا من ان تبدأ ب صفر نريد ان نبدأها ب واحد
$Month=array(1=>'January','February','March','April','May','June','July','August','September','October','November','December');
<head>
<title>Mini Calendar</title>
</head>
<body>
<form action="Calendar_handler.php" method="post">
<?php
//يمكنك اختيار مفتاح بدء عناصر المصفوفة فبدلا من ان تبدأ ب صفر نريد ان نبدأها ب واحد
$Month=array(1=>'January','February','March','April','May','June','July','August','September','October','November','December');
//range() الدالة
//تستخدم لعمل مصفوفة من مجموعة ارقام متتالية فى مدى معين
$Day=range(1,31);
$Year=range(2005,2015);
echo 'Choose a day from the calendar: <br><br><br>';
//create year Pull-down list
echo 'Year: ';
echo '<select name="year">';
echo '<br>';
foreach ($Year as $value)
{
echo "<option value=\"$value\">$value</option>";
}
echo '</select>';
echo ' ';
//create Months pull-down list
echo 'Month: ';
echo '<select name="month">';
echo '<br>';
foreach ($Month as $key => $value)
{
$Day=range(1,31);
$Year=range(2005,2015);
echo 'Choose a day from the calendar: <br><br><br>';
//create year Pull-down list
echo 'Year: ';
echo '<select name="year">';
echo '<br>';
foreach ($Year as $value)
{
echo "<option value=\"$value\">$value</option>";
}
echo '</select>';
echo ' ';
//create Months pull-down list
echo 'Month: ';
echo '<select name="month">';
echo '<br>';
foreach ($Month as $key => $value)
{
//القيمة التى سيتم تمريرها الى صفحة معالجة هذا الكود هى القيمة المكتوبة امام الخاصية
//attribute
//بغض النظر عما اذا كانت قيمتها تعبر عن قيمة او مفتاح العنصر
//key or value
//Display month as number اذا اردت عرض رقم الشهر
// echo "<option value=\"$key\">$value</option>";
//Display month name اذا اردت عرض اسم الشهر
echo "<option value=\"$value\">$value</option>";
}
echo '</select>';
echo ' ';
//create day Pull-down list
echo 'Day: ';
echo '<select name="day">';
echo '<br>';
foreach ($Day as $value)
{
echo "<option value=\"$value\">$value</option>";
}
echo '</select>';
echo '<br><br><br>';
echo '<input type="submit" value="Show result" />';
?>
</form>
</body>
</html>
//Display month as number اذا اردت عرض رقم الشهر
// echo "<option value=\"$key\">$value</option>";
//Display month name اذا اردت عرض اسم الشهر
echo "<option value=\"$value\">$value</option>";
}
echo '</select>';
echo ' ';
//create day Pull-down list
echo 'Day: ';
echo '<select name="day">';
echo '<br>';
foreach ($Day as $value)
{
echo "<option value=\"$value\">$value</option>";
}
echo '</select>';
echo '<br><br><br>';
echo '<input type="submit" value="Show result" />';
?>
</form>
</body>
</html>
استخدمنا foreach للمرور على كل عنصر داخل المصفوفة لطباعة قيمته. و بالطبع لا يشترط تسمية المتغيرين value$ او key$ بنفس هذه الاسماء و لكن يمكنك ان تستخدم اى اسماء مختلفة و لكن يفضل استخدام الاسماء المعبرة خصوصا اذا كنت ستستخدم المتغيرات فى عدة اماكن من الكود.
سنقوم الان بكتابة الكود الذى يعرض القيم التى ادخلها المستخدم فى الصفحة السابقة. قم بكتابة الكود التالى فى محرر الكود و قم بحفظه باسم calendar_handler.php
<html>
<head>
<title>Calendar result</title>
</head>
<body>
<?php
$day=$_POST['day'];
$month=$_POST['month'];
$year=$_POST['year'];
echo 'You have chosen the day:<br><br>';
echo "$month $day, $year";
?>
</body>
</html>
<head>
<title>Calendar result</title>
</head>
<body>
<?php
$day=$_POST['day'];
$month=$_POST['month'];
$year=$_POST['year'];
echo 'You have chosen the day:<br><br>';
echo "$month $day, $year";
?>
</body>
</html>
استخدام المصفوفات المتعددة الابعاد Multidimensional array
$states = array ('TX' => 'Texas', 'UT' =› 'Utah',...);
$provinces = array ('QC' => 'Quebec', 'AB' => 'Alberta',...);
لاحظ مصفوفتان ذات البعد الاحادى كل واحدة تحوى عدة عناصر, نريد ان نصل الى عناصر كل منهما عن طريق مصفوفة اخرى لاحظ المصفوفة التالية :
$abbr = array ('US' => $states, 'Canada' => $provinces);
هذه المصفوفة تحمل مؤشران لكل من المصفوفتان السابقتين. و اذا اردنا الوصول الى العنصر Texas مثلا يكون الكود كالتالى :
echo "The US state whose abbreviation is MD is {$abbr['US']['TX']}.";
سنقوم الان بكتابة كود بسيط فيه نموذج يدخل المستخدم فيه هوياته عن طريق checkboxes سيتم تمرير كل القيم التى قام المستخدم بتحديدها الى صفحة اخرى عن طريق مصفوفة ذات بعد ثنائى كالتى رأينا الان. قم بتشغيل محرر الكود و اكتب الكود التالى : -
<html>
<head>
<title>Enter your hobbies</title>
</head>
<body>
<form name="form1" method="post" action="displayHobbies.php">
<fieldset><legend align="center">Enter your name and choose your hobbies</legend>
<p>Enter your name:
<label for="name"></label>
<input name="name" type="text" size="40" />
</p>
<p>Choose your hobbies:</p>
<p>
<input type="checkbox" name="interest[]" value="MUSIC">MUSIC</input>
<input type="checkbox" name="interest[]" value="BOOKS">BOOKS</input>
<input type="checkbox" name="interest[]" value="FOOTBALL">FOOTBALL</input>
<input type="checkbox" name="interest[]" value="MOVIES">MOVIES</input>
<input type="checkbox" name="interest[]" value="SKIING">SKIING</input>
</p>
<div align="center"><input name="submit" type="submit" value="Submit your information" /></div>
</fieldset>
</form>
</body>
</html>
<head>
<title>Enter your hobbies</title>
</head>
<body>
<form name="form1" method="post" action="displayHobbies.php">
<fieldset><legend align="center">Enter your name and choose your hobbies</legend>
<p>Enter your name:
<label for="name"></label>
<input name="name" type="text" size="40" />
</p>
<p>Choose your hobbies:</p>
<p>
<input type="checkbox" name="interest[]" value="MUSIC">MUSIC</input>
<input type="checkbox" name="interest[]" value="BOOKS">BOOKS</input>
<input type="checkbox" name="interest[]" value="FOOTBALL">FOOTBALL</input>
<input type="checkbox" name="interest[]" value="MOVIES">MOVIES</input>
<input type="checkbox" name="interest[]" value="SKIING">SKIING</input>
</p>
<div align="center"><input name="submit" type="submit" value="Submit your information" /></div>
</fieldset>
</form>
</body>
</html>
الوسم fieldset يقوم بعمل اطار حول العناصر المكتوبة داخله و يستخدم معه الوسم legend الذى يقوم بكتابة عنوان لهذا الاطار و توسيط هذا العنوان. و كتبنا اسم مجموعة Checkboxes على انها مصفوفة لحفظ العناصر بها. و الان نقوم بحفظ هذا الكود و عمل ملف جديد سينكتب فيه الكود الذى سيتم عن طريقه معالجة هذا الكود. و نكبت الكود التالى.
<html>
<head>
<title>Display your hobbies</title>
</head>
<body>
<?php
//check name is not blank and if it is not blank stripslashes from it
if ( !empty($_POST['name']) )
{
$name=$_POST['name'];
}else {
$name=NULL;
echo '<p><font color="red">* You didn\'t enter your name</font></p>';
}
//check user enters at least one hobby, that means interest[] array is not NULL
if (isset($_POST['interest']))
{
//$interest المتغير
//سيكون فى حد ذاتع عبارة عن مصفوفة اخرى على عكس البرامج التى كتبناها
//كنا نستقبل المتغيرات على انها متغيرات ذات قيمة واحدة و لكن برنامجنا هنا
//يتم تمرير مصفوفة و عند معالجتها يتم معاملتها ايضا على انها مصفوفة
$interest=$_POST['interest'];
}else {
$interest=NULL;
echo '<p><font color="red">* You didn\'t enter at least one hobby</font></p>';
}
if ($name && $interest)
{
echo "Thank you <b>$name</b>, ";
echo 'your hobbies are:<ul>';
foreach ($interest as $value)
//يتم طباعة عناصر المصفوفة بشكل عادى
{
echo "<li><font color=\"blue\">$value</font></li>";
}
echo '</ul>';
}
?>
</body>
</html>
<head>
<title>Display your hobbies</title>
</head>
<body>
<?php
//check name is not blank and if it is not blank stripslashes from it
if ( !empty($_POST['name']) )
{
$name=$_POST['name'];
}else {
$name=NULL;
echo '<p><font color="red">* You didn\'t enter your name</font></p>';
}
//check user enters at least one hobby, that means interest[] array is not NULL
if (isset($_POST['interest']))
{
//$interest المتغير
//سيكون فى حد ذاتع عبارة عن مصفوفة اخرى على عكس البرامج التى كتبناها
//كنا نستقبل المتغيرات على انها متغيرات ذات قيمة واحدة و لكن برنامجنا هنا
//يتم تمرير مصفوفة و عند معالجتها يتم معاملتها ايضا على انها مصفوفة
$interest=$_POST['interest'];
}else {
$interest=NULL;
echo '<p><font color="red">* You didn\'t enter at least one hobby</font></p>';
}
if ($name && $interest)
{
echo "Thank you <b>$name</b>, ";
echo 'your hobbies are:<ul>';
foreach ($interest as $value)
//يتم طباعة عناصر المصفوفة بشكل عادى
{
echo "<li><font color=\"blue\">$value</font></li>";
}
echo '</ul>';
}
?>
</body>
</html>
و الان قم بحفظ الكود و جرب الكود سيتم طباعة ما اختاره المستخدم من هوايات على شكل قائمة.
يمكن كتابة البرنامج السابق باستخدام القائمة متعددة الخيارات و هى قائمة تسمح للمستخدم باختيار عدة عناصر فى نفس الوقت.
<select name="interests[]" multiple="multiple">
<option value="Music">Music</option>
<option value="Movies">Movies</option>
<option value="Books">Books</option>
<option value="Skiing">Skiing</option>
<option value="Napping">Napping</option></select>
<option value="Music">Music</option>
<option value="Movies">Movies</option>
<option value="Books">Books</option>
<option value="Skiing">Skiing</option>
<option value="Napping">Napping</option></select>
استخدام For and while Loops
سنقوم بتعديل بسيط على كود برنامج Calendar.php سنستخدم For Loop بدلا من مصفوفة الايام و سنستخدم while loop بدلا من مصفوفة السنين.
نقوم بتشغيل ملف calendar.php فى محرر الكود و نكتب الكود التالى : -
سنقوم بتعديل بسيط على كود برنامج Calendar.php سنستخدم For Loop بدلا من مصفوفة الايام و سنستخدم while loop بدلا من مصفوفة السنين.
نقوم بتشغيل ملف calendar.php فى محرر الكود و نكتب الكود التالى : -
<html>
<head>
<title>Mini Calendar</title>
</head>
<body>
<form action="Calendar_handler.php" method="post">
<?php
$Month=array(1=>'January','February','March','April','May','June','July','August','September','October','November','December');
echo 'Choose a day from the calendar: <br><br><br>';
//create year Pull-down list
echo 'Year: ';
echo '<select name="year">';
//echo '<br>';
//تم الاعلان عن متغير للسنين القيمة الابتدائية له 2005 و سيتم تكرار الكود حتى وصول قيمته الى 2015
$year=2005;
while ($year <=2015)
{
echo "<option value=\"$year\">$year</option>";
$year++; //while loop لا تنس هذا السطر بالنسبة
}
echo '</select>';
echo ' ';
//create Months pull-down list
echo 'Month: ';
echo '<select name="month">';
echo '<br>';
foreach ($Month as $key => $value)
{
//Display month as number
//echo "<option value=\"$key\">$value</option>";
//Display month name
echo "<option value=\"$value\">$value</option>";
}
echo '</select>';
echo ' ';
//create day Pull-down list
echo 'Day: ';
echo '<select name="day">';
//echo '<br>';
//القيمة الابتدائية لمتغير الايام 1 و القيمة النهائية 31
for ($day =1;$day <=31 ; $day++)
{
echo "<option value=\"$day\">$day</option>";
}
echo '</select>';
echo '<br><br><br>';
echo '<input type="submit" value="Show result" />';
?>
</form>
</body>
</html>
<head>
<title>Mini Calendar</title>
</head>
<body>
<form action="Calendar_handler.php" method="post">
<?php
$Month=array(1=>'January','February','March','April','May','June','July','August','September','October','November','December');
echo 'Choose a day from the calendar: <br><br><br>';
//create year Pull-down list
echo 'Year: ';
echo '<select name="year">';
//echo '<br>';
//تم الاعلان عن متغير للسنين القيمة الابتدائية له 2005 و سيتم تكرار الكود حتى وصول قيمته الى 2015
$year=2005;
while ($year <=2015)
{
echo "<option value=\"$year\">$year</option>";
$year++; //while loop لا تنس هذا السطر بالنسبة
}
echo '</select>';
echo ' ';
//create Months pull-down list
echo 'Month: ';
echo '<select name="month">';
echo '<br>';
foreach ($Month as $key => $value)
{
//Display month as number
//echo "<option value=\"$key\">$value</option>";
//Display month name
echo "<option value=\"$value\">$value</option>";
}
echo '</select>';
echo ' ';
//create day Pull-down list
echo 'Day: ';
echo '<select name="day">';
//echo '<br>';
//القيمة الابتدائية لمتغير الايام 1 و القيمة النهائية 31
for ($day =1;$day <=31 ; $day++)
{
echo "<option value=\"$day\">$day</option>";
}
echo '</select>';
echo '<br><br><br>';
echo '<input type="submit" value="Show result" />';
?>
</form>
</body>
</html>
هذه نهاية الدرس
ليست هناك تعليقات:
إرسال تعليق