لإضافة قسم عليك أن تنشئ نموذج إدخال للأقسام
أولا :
نفترض أن اسم الملف admin.php
ضع رابطا لإضافة القسم، مثل
كود PHP:
echo "
<p align='right'><a href='$PHP_SELF?action=addcat'>إضافة قسم</a>
"
الأمر السابق يطبع جملة (إضافة قسم) ذات رابط.
الرابط يبدأ بـ $PHP_SELF وفائدة هذا الأمر أنه يأخذ اسم الملف نفسه
فلو غيرت اسم الملف فلن يتأثر الملف.
لكن لو كان اسم الملف test.php فإن الرابط سيكون
test.php?action=addcat
فلو غيرت اسم الملف إلى admin.php فإن الرابط لن يتغير. وعليك تغيير اسم الملف في الرابط
أنا أحبذ استخدام $PHP_SELF رغم أنك تجد كثيرا من البرامج لا تستخدمه؛ لأنه لا يريدون أن تغير اسمه الملف كي يعرف أن هذا البرنامج لهم.
فائدة هذا الأمر تظهر جلية إذا أردت تحويل برنامج ليتوافق مع برامج المجلة modules
فإنه يريحك كثيرا. وليس هذا مكان شرحه.
في ملف admin.php
ننظر إلى إضافة القسم مطلوبة؟
كود PHP:
if ($_GET['action']=="addcat") {
}
هذا الأمر يحدد إذا كان المطلوب إضافة قسم فإنه ينفذ الأوامر تحته.
تلحظ أنني استخدمت الدالة $_GET وهي تحديث للدالة القديمة $HTTP_VAR_GET
وهي أفضل من حيث الحماية. بحيث لا يقبل الأوامر من خارج المتصفح.
واستخدمت GET لأن الأمر عن طريق رابط، وليس عن طريق أنموذج. ففي الروابط تستخدم GET وفي الأنموذج يمكنك استخدام POST أو GET على حسب الحال.
تلحظ كلمة (action) وهي المتغير فالبرنامج ينظر إذا كان action ...
ثم (==) وهذه تعاني المطابقة. تنبه إلى أن يجب عليك أن تضاعف العلامة
ثم تأتي جملة المطابقة (addcat)
فإذا توفرت ثلاثة شروط :
1 - كون الطريقة بواسطة GET
2 -المتغير هو action
3 - كلمة المطابقة للمتغير addcat
فإنه ينفذ الأمر السابق.
يمكنك أيضا عمل الطريقة السابقة هكذا
كود PHP:
if ($action=="addcat") {
}
ففي هذا الأمر يستوي كون الطريقة POST أو GET .
ما دام المتغير action يطابق addcat فافعل كذا
انتهت الفقرة الأولى
ننتقل إلى الفقرة الثانية، وهي إنشاء أنموذج إضافة قسم ويكون بلغة HTML
كود PHP:
echo "
<center>
إضافة قسم
<br>
<form name='addcat' method='post' action='$PHP_SELF?action=doaddcat'>
أدخل اسم القسم <br>
<input type='text' name='new_cat' size='20'>
<input type='submit' name='Submit' value='أرسل'>
</form>
";
هنا طبعنا الأنموذج وهو كتالي :
1 - توسيط النص (إضافة قسم) عن طريق <center>
2 - إضافة سطر جديد عن طريق <br>
3 - تحديد نوع الأنموذج :
أ- اسمه name='addcat' وهذا ليس بلازم. لكنه يفيد المبرمج في معرفة الأنموذج، وتحتاج إليه أحيانا في برمجيات java للتأكد من كتابة الحقول.
ب- الطريقة التي سينفذ بها الأنموذج method='post' . فطريقة POST تعني عدم إظهار المتغيرات في شريط المتصفح. بل تكون مخفية. وتظهر هذه الفائدة في كلمات المرور والنصوص والأمور التي لا تؤثر في تحديد خصائص العرض.
أما GET فإنه يظهر المتغيرات في شريط الأدوات.
فمثلا لو اخترنا POST ثم نفذنا الأنموذج فسيكون شريط المتصفح هكذا : admin.php
ولو اخترنا GET سيكون الشريط هكذا : admin.php?new_cat=new_cat
حيث الثانية new_cat الاسم المدخل وهو متغير.
ج- action='$PHP_SELF' هنا نحدد الملف الذي سيقوم بتنفيذ الأنموذج. حيث يمكنك وضع الأنموذج في ملف والتنفيذ في ملف آخر.
ثم حدننا المتغير action=doaddcat كي نستفيد منه في تحديد الأمر.
هنا اخترنا الملف نفسه.
4- ثم طبعنا جملة (أدخل اسم القسم)
5 - ثم بعدها أضفنا سطرا جديدا <br>
6 - ثم حددنا خانة الإدخال لاسم القسم
كود PHP:
<input type='text' name='new_cat' size='20'>
أ - input تعني حقل إدخال.
ب- type تحديد نوعية الحقل، وهنا حددناه بأنه نص. ويمكنك وضع password حيث تظهر الحروف على شكل نجمات ***، ويمكنك وضع ملف لاختيار ملف من الجهاز.
هنا حددنا text لأننا نريد نصا (اسم القسم)
ج- ثم حددنا اسم الحقل name بـ new_cat
د- ثم حددنا حجم الحقل وهو عشرون خانة size='20'
6 - ثم أضفنا أمر إرسال الأنموذج
كود PHP:
<input type='submit' name='Submit' value='أرسل'>
7 - ثم أغلقنا الأنموذج
</form>
ثم علينا أن نغلق الشرط بحيث لا ينتقل إلى البرمجة التالية عن طريق exit ();
فتكون برمجة الشرط كاملة :
كود PHP:
if ($_GET['action']=="addcat") {
echo "
<center>
إضافة قسم
<br>
<form name='addcat' method='post' action='$PHP_SELF?action=doaddcat'>
أدخل اسم القسم <br>
<input type='text' name='new_cat' size='20'>
<input type='submit' name='Submit' value='أرسل'>
</form>
";
exit ();
}
الخطوة الثانية :
تنفيذ الأمر
ننظر هل تحقق الشرط ؟
كود PHP:
if ($_POST['action']=="doaddcat") {
}
في حقل الأنموذج حددنا الشرط بـ $PHP_SELF?action=doaddcat
وهنا نتحقق من هذا الشرط.
بعد أن تحققنا من اجتماع الشروط
ننظر في المتغيرات
نحدد الاحتمالات.
1 - هنا احتمال أنك ضغط على (أرسل) والخانة فارغة. فلا نريد ملء الخانة بفراغ
كما سبق اسم المتغير هو $new_cat
كود PHP:
if (empty($new_cat)) {
echo "لم تدخل اسما!! ارجع وأدخل الاسم";
exit ();
}
في الأمر السابق علينا أن نتأكد هل المتغير $new_cat يحمل قيمة أو لا؟
فإن كان فارغا فإنه يطبع جملة تنبيهية، ثم يقفل البرمجة لئلا ينتقل إلى ما بعدها.
يمكن تنفيذ هذه الطريقة بصورة أخرى
كود PHP:
if (!$new_cat) {
}
حيث إن علامة التعجب تعني فراغ القيمة، وبدون علامة تعني أن القيمة تساوي (1) يعني ممتلئة.
ويمكن تنفيذها بطريقة ثالثة :
كود PHP:
If ($new_cat=="") {
}
حيث ينظر البرنامج هل المتغير $new_cat يساوي فراغا؟
نرجع إلى الدرس.
بعد أن نتأكد من أن القيمة ممتلئة.
علينا أن نتأكد من أن الاسم ليس موجودا من قبل كي لا تتكرر عندنا أسماء الأقسام
كود PHP:
$query = "SELECT Cat_name
* FROM Cat
WHERE Cat_name='$new_cat'
";
$result = mysql_query ($query);
هنا نطلب من قاعدة البيانات أن تعرض لنا من جدول الأقسام Cat القسم الجديد، ثم إعلامنا بالنتيجة.
فإذا كانت النتيجة صحيحة، فهذا يعني أن القسم متوفر، فنطبع رسالة تنبيه.
كود PHP:
if ($result) {
echo "هذا الاسم مدخل من قبل!";
exit ();
}
إذا كانت النتيجة صحيحة، يظهر التنبيه، ثم نقفل البرمجة كي لا يتم تنفيذ الأوامر التالية.
إن لم يكن القسم مدخلا فإننا ندخله في قاعدة البيانات
كود PHP:
$add_cat="
INSERT INTO Cat
(Cat_name)
VALUES ('$new_cat')
";
هنا ندخل اسم القسم. والقاعدة تلقائيا تعطيه رقما تعريفيا. ويبقى عدد المقالات في هذا القسم. وبما أنه جديد فلا حاجة إلى إدخال قيمة له.
ثم ننفذ الأمر السابق
كود PHP:
$result=mysql_query ($add_cat);
إذا تمت العملية بنجاح، فإننا نطبع رسالة
كود PHP:
if ($result) {
echo "تمت إضافة القسم";
} else {
echo "حصل خلل في إضافة القسم";
echo mysql_error;
}
exit ();
انتهى
نعيد ترتيب البرنامج
كود PHP:
// هل نريد إضافة قسم؟
if ($_POST['action']=="doaddcat") {
// نتأكد من أن المتغير غير فارغ
if (empty($new_cat)) {
// نطبع رسالة تنبيه
echo "لم تدخل اسما!! ارجع وأدخل الاسم";
// نقفل البرمجة
exit ();
} // إغلاق شرط التأكد من امتلاء المتغير
// نتأكد هل الاسم مدخل من قبل؟
$query = "SELECT Cat_name
* FROM Cat
WHERE Cat_name='$new_cat'
";
$result = mysql_query ($query);
// إذا كان الاسم مدخلا طبعنا رسالة تنبيه
if ($result) {
// نطبع الرسالة
echo "هذا الاسم مدخل من قبل!";
// نقفل البرمجة
exit ();
} // إغلاق شرط التأكد من وجود الاسم
// نضيف الاسم إلى قاعدة البيانات
$add_cat="
INSERT INTO Cat
(Cat_name)
VALUES ('$new_cat')
";
// نطبع النتيجة
if ($result) {
echo "تمت إضافة القسم";
} else {
echo "حصل خلل في إضافة القسم";
echo mysql_error;
} // إغلاق شرط النتيجة
// نقفل البرمجة
exit ();
}// إغلاق شرط إضافة البرنامج