تنويه بسيط : في الردود السابقة قلت أنني سأقوم بتأخير الدرس الثالث.. وعذراً كان القصد هو الدرس الثاني..
رغم أني لم أجد حلاً للمثال الذي طرحته سابقاً لكن سأكمل معكم باقي الدروس على أن نقوم سوية بحل المثال السابق..
الدرس الثاني - القسم الأول
ملخص ما ستتعلمه من هذا الدرس:
- حفظ البيانات للإستخدام اللاحق
- فتح ملف ما
- إنشاء ملف والكتابة عليه
- إغلاق ملف
لنحاول أن نضيف بعض المعلومات المفيدة التي تهم هذا المخزن الالكتروني وتخص الزبون وهي إضافة العنوان الذي سيتم الشحن إليه.كما في الشكل الموضح :
قبل البدء بكتابة الكود لنلق نظرة على بعض المصطلحات ..
- حفظ البيانات للإستخدام اللاحق:
هناك طريقتان أساسيتان نستخدمهما لتخزين البيانات (في ملف عادي وعادةً يكزن نصي txt وتسمى هذه الطريق ب flat file ، أو بواسطة قاعدة البيانات database).
كما نوهنا سابقاً الملف يكون بالصيغة التي نريد لكن هنا غالباً ما نستخدم ملف نصي ، سنقوم بكتابة طلبات الزبون إلى هذا الملف حيث كل طلب بسطر منفرد..
طبعاً هذه الطريقة السهلة محدودة جداً ، أما للبيانات الضخمة فسنتعامل مع قواعد البيانات(لاحقاً ازا الله راد)...
لنلقي نظرة على الكود الجديد:
كود
<html>
في السطر التالي:
أسمينا الحقل الذي سيضيف عنوان الزبون باسم address (يمكنك ان تسميه ما شئت) لنستخدمه لاحقاً كمتغير في ملف المعالجة.
الآن هذه المعلومات تحتاج لثلاث عمليات عند الكتابة وعند القراءة على النحو التالي:
1- عند الكتابة:
- فتح الملف، واذا لم يكن موجوداً فيجب إنشاؤه قبلاً.
- كتابة البيانات إلى الملف.
- إغلاق الملف.
2- عند القراءة:
- فتح الملف، واذا لم نستطع ذلك(على سبيل المثال الملف غير موجود) يجب ان نعلم بذلك ونخرج ن البرنامج بلباقة(حيث أن الصفحة يشاهدها زبون وما في داعي لنشر الغسيل
).
- القراءة من الملف.
- إغلاق الملف.
لنلق نظرة على الشيفرة البرمجية المستخدمة هنا للكتابة على الملف:
في السطر التالي:
كود
<input type="text" name="address" size=40 maxlength=40>
أسمينا الحقل الذي سيضيف عنوان الزبون باسم address (يمكنك ان تسميه ما شئت) لنستخدمه لاحقاً كمتغير في ملف المعالجة.
الآن هذه المعلومات تحتاج لثلاث عمليات عند الكتابة وعند القراءة على النحو التالي:
1- عند الكتابة:
- فتح الملف، واذا لم يكن موجوداً فيجب إنشاؤه قبلاً.
- كتابة البيانات إلى الملف.
- إغلاق الملف.
2- عند القراءة:
- فتح الملف، واذا لم نستطع ذلك(على سبيل المثال الملف غير موجود) يجب ان نعلم بذلك ونخرج ن البرنامج بلباقة(حيث أن الصفحة يشاهدها زبون وما في داعي لنشر الغسيل
).- القراءة من الملف.
- إغلاق الملف.
لنلق نظرة على الشيفرة البرمجية المستخدمة هنا للكتابة على الملف:
كود
<html>
لاحظ السطر التالي:
لاحظ السطر التالي:
كود
$outputstring = $date."t".$tyreqty." tyres t".$oilqty." oilt"
وضعنا متغيراً جديداً مهمته جمع ما أدخله الزبون في طلب الشراء لكتابته لاحقاً على الملف .. واستخدمنا الحرف (t) وهي تفسها المستخدمة في وورد اوفيس tab ، أما الحرف (n) فهو لإعلام الملف ببداية سطر جديد new .
- فتح الملف:
نستخدم فيها الدالة:
تأخذ الدالة:
وقد استخدمنا الرمز @ لحظر نتائج الخطأ وطباعة الخطأالذي نحدده نحن كما في السطر التالي :
وضعنا متغيراً جديداً مهمته جمع ما أدخله الزبون في طلب الشراء لكتابته لاحقاً على الملف .. واستخدمنا الحرف (t) وهي تفسها المستخدمة في وورد اوفيس tab ، أما الحرف (n) فهو لإعلام الملف ببداية سطر جديد new .
- فتح الملف:
نستخدم فيها الدالة:
كود
fopen()
، وعند فتح الملف نريد ان نخصص لأي غرض سنستخدمه ..ففي السطر التالي نجد ما يلي :كود
@ $fp = fopen(".ordersorders.txt", "a");
تأخذ الدالة:
كود
fopen()
باراميترين الأول هو مسار الملف المراد فتحه ، والثاني هو الغاية من فتح الملف ( أي الطريقة )، وقد استخدمنا طريقة الإضافة أي يمكننا إضافة بيانات فقط للملف (أي الكتابة فقط ) من بداية ما تمت كتابته مؤخراً (أي من آخر ما كتبت).. وتوجد عدة طرق أخرى يمكنك الاطلاع عليها من موقع php.net ..وقد استخدمنا الرمز @ لحظر نتائج الخطأ وطباعة الخطأالذي نحدده نحن كما في السطر التالي :
كود
if (!$fp)
الآن بعد ما أنشأنا الملف وأعطيناه التصاريح اللازمة للكتابة عليه chmod=777 نأتي للكتابة على الملف..
- الكتابة على الملف:
لاحظ السطر التالي:
دالة الكتابة على الملف هي fwrite وتأخذ ثلاث باراميترات، حيث يكون الثالث اختياري وهو يمثل الرقم الاعظمي لعدد البايتات المراد كتابتها.
قبل عملية إغلاق الملف سوف نناقش أمراً مهماً في الكتابة على الملفات..
لنتخيل هذا الوضع أنه إذا قام زبونان مثلاً بكتابة طلبية بنفس الوقت في آن واحد .. ترى ماذا سيحدث عند الكتابة على الملف بوقت واحد ؟ هل يا ترى سيكتب الأمر الاول ام الثاني قبل ؟ أم سيحصل تداخل بين الطلبين ، أم أم .... لا يمكن تحديد ما سيحصل لكن سيكون هناك نوعاً من اللخبطة..
لتجنب هذا نستطيع قفل الملف بواسطة الدالة
وهذه الدالة يجب أن تنفذ بعد دالة فتح الملف وقبل البدء بأي عملية للقراءة أو الكتابة.
لنرى هذا السطر :
يعني الرقم 2 قفل الملف لكتابة أي لايمكن مشاركة الملف او استخدامه قبل الانتهاء من الكتابة عليه..
والسطر التالي :
يحرر الملف من القفل عن طريق الرقم 3 ويصبح الملف حراً جاهزا للاستخدام ..
- إغلاق الملف:
ويكون باستخدام الدالة
الصورة التالية تبين الصفحة بعد الطلب وبعد الكتابة على الملف

وهكذا ننتهي من الدرس الثاني - القسم الأول.. وازا الله راد في القسم الثاني من هذا الدرس سنناقش كيفية القراءة من الملف مع بعض الدوال المفيدة في استخدامات الملفات .. أخيراً المقارنة بين نظام الملفات ونظام قواعد البيانات.
ودمتم..
الآن بعد ما أنشأنا الملف وأعطيناه التصاريح اللازمة للكتابة عليه chmod=777 نأتي للكتابة على الملف..
- الكتابة على الملف:
لاحظ السطر التالي:
كود
fwrite($fp, $outputstring);
دالة الكتابة على الملف هي fwrite وتأخذ ثلاث باراميترات، حيث يكون الثالث اختياري وهو يمثل الرقم الاعظمي لعدد البايتات المراد كتابتها.
كود
fwrite(int fp, string str, int[length]);
قبل عملية إغلاق الملف سوف نناقش أمراً مهماً في الكتابة على الملفات..
لنتخيل هذا الوضع أنه إذا قام زبونان مثلاً بكتابة طلبية بنفس الوقت في آن واحد .. ترى ماذا سيحدث عند الكتابة على الملف بوقت واحد ؟ هل يا ترى سيكتب الأمر الاول ام الثاني قبل ؟ أم سيحصل تداخل بين الطلبين ، أم أم .... لا يمكن تحديد ما سيحصل لكن سيكون هناك نوعاً من اللخبطة..

لتجنب هذا نستطيع قفل الملف بواسطة الدالة
كود
flock()
والتي سيمرر لها باراميترين يكون الثاني لتحديد نوع القفل اللازم استخدامه..وهذه الدالة يجب أن تنفذ بعد دالة فتح الملف وقبل البدء بأي عملية للقراءة أو الكتابة.
لنرى هذا السطر :
كود
flock($fp, 2);
يعني الرقم 2 قفل الملف لكتابة أي لايمكن مشاركة الملف او استخدامه قبل الانتهاء من الكتابة عليه..
والسطر التالي :
كود
flock($fp, 3);
يحرر الملف من القفل عن طريق الرقم 3 ويصبح الملف حراً جاهزا للاستخدام ..
- إغلاق الملف:
ويكون باستخدام الدالة
كود
fclose()
كما في السطر التالي:كود
fclose($fp);
الصورة التالية تبين الصفحة بعد الطلب وبعد الكتابة على الملف
وهكذا ننتهي من الدرس الثاني - القسم الأول.. وازا الله راد في القسم الثاني من هذا الدرس سنناقش كيفية القراءة من الملف مع بعض الدوال المفيدة في استخدامات الملفات .. أخيراً المقارنة بين نظام الملفات ونظام قواعد البيانات.
(الخطأمني والصواب من رب العالمين)
ودمتم..
تم تحرير الموضوع بواسطة : Mr.i
بتاريخ: 2009-08-27 11:39:15
بتاريخ: 2009-08-27 11:39:15
| توقيع : Mr.i |
|
كلمتان خفيفتان على اللسان .. حبيبتان إلى الرحمن .. ثقيلتان في الميزان .. ---------------------------------------------------------------------------------------------- سبحان الله وبحمده سبحان الله العظيم |


منتدى الأدشات »
منتدى ال PHP
»
عرض نسخة صالحة للطباعة
