من ناحية أخرى فسأكتفي حالياً بهذا الدرس و ربما أعود للموضوع بحال وجود حاجة لذلك.
مع فائق الإحترام.
شروح لبرنامج Notes :
أولاً : هدف البرنامج:
هدف البرنامج هو إنشاء صفحة يستطيع طالب من خلالها و بعد إدخال رقم التسجيل و كلمة سر الحصول على نتيجته في الامتحانات.
ثانياً : طريقة عمل البرنامج:
في الصفحة المسماة login.html يضع الطالب رقم تسجيله و كلمة السر, فيقوم البرنامج بتحويل المعلومات لصفحة PHP مسماة : ResultPage.php هذه الصفحة هي برنامج يقوم بالتحقق أولاً من معلومات دخول الطالب فإذا كانت المعلومات غير صحيحة , يقوم بكتابة عبارة بهذا المعنى (Login incorrect)
أما إذا كانت المعلومات صحيحة فإن البرنامج سيبحث عن نتيجة الطالب من خلال رقم تسجيله و يعرض النتيجة له من خلال صفحة html .
كما نرى هنا فنحن بحاجة لبيانيين (TABLE) واحدة لحفظ أرقام التسجيل للطلاب و كلمات السر.
و أخرى لحفظ النتائج لكل طالب.
سأشرح الآن كيفية عمل ذلك.
ثالثاً : شرح كيفية عمل البرنامج:
كما رأينا سابقاً فنحن بحاجة لجدولين في قاعدة المعطيات فإنشاء البرنامج لا بد أن يبدأ بإنشاء هذين الجدولين , ثم سننشئ صفحة الدخول و هي صفحة بسيطة كما سنرى و يمكن تعديلها بال HTML فقط.
و أخيراً لا بد لنا أن نكتب البرنامج PHP الذي سيقوم بمعالجة المعلومات المبعوثة من صفحة الدخول و عرض النتيجة بحال وجودها و بحال كانت معلومات الدخول صحيحة.
1- قاعدة المعطيات :
سنحتاج لبيانيين واحد لحفظ معلومات الطلاب (رقم التسجيل,كلمة السر ...)
و سنسميها : v_users و هذه طريقة بناء الجدول بقاعدة المعطيات من نوع MYSQL ضمن برنامج مخصص لهذا الغرض (PPMYADMIN مثلاً)
# بنية الجدول `v_users`
#
CREATE TABLE v_users (
uid bigint(20) NOT NULL auto_increment,
username varchar(100) NOT NULL default '',
password varchar(100) NOT NULL default '',
PRIMARY KEY (uid)
) TYPE=MyISAM;
الحقل username سيحتوي رقم التسجيل للطالب.
لنقوم الآن بإضافة بعض المحتويات لهذا الجدول مثلاً عن طريق هذا الكود:
INSERT INTO v_users VALUES (1, 'Tarek', 'toto');
INSERT INTO v_users VALUES (2, 'jadmoon', 'titi');
الجدول الثاني سيحتوي معلومات الطلاب لنسميه : v_results
#
# بنية الجدول `v_results`
#
CREATE TABLE v_results (
rid bigint(20) NOT NULL auto_increment,
refid varchar(100) NOT NULL default '',
note varchar(100) NOT NULL default '',
PRIMARY KEY (rid)
) TYPE=MyISAM;
و لنضع هذه النتيجة في الجدول :
INSERT INTO v_results VALUES (1, 'Tarek', '99/100');
2- تصميم صفحة الدخول :
صفحة الدخول هي صفحة HTML بسيطة يمكن كتابتها بأي برنامج مخصص لل HTML و المهم لل PHP لاحقاً هم حقول معلومات الدخول و الصفحة التي سنحول إليها المعلومات بعد الضغط على زر "GO"
أي أهم ما في الصفحة login.html هو ال FORM التالي :
الكود التالي : ACTION="ResultPage.php"
هو الذي يحدد لأي صفحة سنحول الفورميلير عندما سنضغط على submit أو زر "Get Result".
الأمر التالي هو أهمية خاصية name للحقلين المخصصين لرقم التسجيل و كلمة السر و اللذين سيتحولان لمتحولات في صفحة ال PHP.
3- تصميم صفحتي النتائج :
أولاً سنصمم صفحة المعالجة المعلومات ResultPage.php هذه الصفحة ستقوم كما في الدرس الماضي بالاتصال بقاعدة المعطيات.
الجديد هنا أننا وضعنا function (تابع) في صفحة منفصلة و أسميتها functions.php
لإستخدام ال function الموجود في هذا الملف يجب إضافته للصفحة الحالية كما يلي :
require "./functions.php";
العمل الآن سيكون على دفعتين :
أولاً سنتحقق من معلومات الدخول , لهذا الغرض يجب أن نحصل على معلومات الدخول التي أرسلتها لنا صفحة الدخول أي : login.php كما يلي :
$v_refid = $_POST['v_refid'];
$v_password = $_POST['v_password'];
الآن سنقوم بالطلب من قاعدة المعطيات إن كانت المعلومات التي لدينا صحيحة كما يلي :
$query = mysql_query("SELECT * FROM v_users WHERE username='$v_refid' AND password='$v_password'") or die(mysql_error());
if($query && mysql_num_rows($query) == 1){
$member = mysql_fetch_array($query);
$v_refid = $member[username];
}
else{
echo " Login Incorrect - Please login again";
exit;
}
كما نرى فإننا نبدأ بالطلب من قاعدة المعطيات إذا كان لديها بيان موافق للمعلومات التي لدينا.
ثم إذا وجدنا أن هناك نتيجة نقوم بالحصول على المعلومات الإضافية في البان الذي حصلنا عليه, و إذا لم نحصل على شيء فهذا معناه أن معلومات الدخول خاطئة و نعرض تنويهاً بسيطاً بذلك للمستخدم و نطلب منه بالعودة لصفحة الدخول و المحاولة من جديد :
echo " Login Incorrect - Please login again";
أما التعليمة exit فتعني انتهاء المعالجة و الصفحة في هذه الحالة.
ثم نتابع , و المتابعة بالصفحة تعني أننا في حالة معلومات دخول صحيحة. إذاً فسنبحث الآن على نتيجة الطالب و نعرضها له.
نطلب من قاعدة المعطيات و من الجدول v-results إإإذا كان هناك بيان يحتوي على نتيجة للطالب:
$query = mysql_query("SELECT * FROM v_results WHERE refid='$v_refid' ") or die(mysql_error());
إذا حصلنا على نتيجة سنعرضها باستخدام ال function الذي كتبناه في صفحة أخرى. و إلا فليس هناك نتيجة بعد للطالب و نكتب له رسالة بهذا المعنى:
الآن سأشرح بشكل مفصل ماذا يحصل في الحالة التي وجدنا بها النتيجة في هذه السطور :
$result = mysql_fetch_array($query);
$note = $result[note];
$html = template("ResultPage.html");
eval("echo stripslashes("$html");");
أول سطرين سهلين فنحن نقوم بالحصول على النتيجة التي وصلتنا من قاعدة المعطيات ووضعها بمتحول ($note)
ثم نستخدم ال function , template للحصول على محتويات ال HTML للصفحة ResultPage.html.
بعد الحصول عليها نستخدم function eval لاستبدال المتحولات بقيمتها ثم عرضها على المستخدم.
لنفهم النقطة الأخيرة : أي استبدال المتحولات بقيمتها سنلقي نظرة على ما تحتويه الصفحة ResultPage.html :
Result Page
$v_refid
$note
كما تلاحظ فإنها صفحة HTML عادية عدا أنها تحتوي على بعض المتحولات كصفحات ال PHP المتحولات هي :
$v_refid
$v_note
و مكانها هو مكان المعلومات التي تتغير بحسب الطالب , كما نلاحظ أنها متطابقة مع بعض المتحولات التي حصلنا عليها في صفحة ResultPage.php.
هذه المتحولات هي التي قمنا باستبدالها بقيمتها باستخدام ال function eval.
أتمنى أن الشرح كان كافياً. و لا تتردوا بسؤالي عن أي شيء استعصى عليكم.