الدرس السادس عشر: الكتابة في ملف نصي
في الدرس الماضي تعلمنا القراءة من ملف نصي، في هذا الدرس سنتعلم كيف نكتب في ملف نصي.
هناك طريقتان متشابهتان لكن بفرق واحد: يجب أن يكون لديك صلاحية الكتابة في ملف، هذا يعني أن الملف يجب أن يوضع في مجلد حيث تملك الصلاحية التي تخول لك فعل ذلك.
إن كنت تعمل في حاسوبك يمكنك أن تحدد هذه الصلاحية بنفسك: اضغط بالزر الأيمن على مجلد ثم اختر "Properties"، في شركات استضافة المواقع سيكون هناك في الغالب مجلد واحد يسمح لك بكالكتابة فيه، المجلد يسمى غالباً "cgi-bin" أو "log" أو "databases" أو شيء مماثل، وإذا سمح لك مستضيف موقعك يمكنك أن تغير الصلاحيات بنفسك، غالباً من خلال الضغط بالزر الأيمن على المجلد من خلال برنامج FTP لنقل الملفات، اختر "properties" أو "permissions" أو شيء مماثل، صورة الشاشة أدناه تعرض كيف ينجز ذلك من خلال برنامج FileZilla.
اقرأ المزيد حول الموضوع من خلال صفحات الدعم لمستضيف موقعك.
لاحظ أن الملف النصي - وليس ملف PHP - يحتاج إلى أن يكون في مجلد له صلاحية الكتابة.
فتح الملف النصي للكتابة فيه
بنفس الطريقة عندما عند قراءة ملف نصي نستخدم الوظيفة fopen أيضاً للكتابة، لكن هذه المرة نغير الطريقة إلى "w" للكتابة (writing) أو "a" للإلحاق (appending).
الاختلاف بين الكتابة والإلحاق هو في مكان مؤشر الكتابة، إما أن يكون في بداية أو نهاية الملف النصي.
في أمثلة هذا الدرس تستخدم ملفاً نصياً فارغاً باسم textfile.txt، لكن يمكنك إنشاء ملفك النصي الخاص إذا أردت.
أولاً لنجرب فتح الملف النصي للكتابة:
<?php // Open the text file $f = fopen("textfile.txt", "w"); // Close the text file fclose($f); ?>
مثال 1: كتابة سطر في الملف النصي
لكتابة سطر يجب أن تستخدم الوظيفة fwrite لفعل هذا، بهذا الشكل:
<html> <head> <title>Writing to a text file</title> </head> <body> <?php // Open the text file $f = fopen("textfile.txt", "w"); // Write text line fwrite($f, "PHP is fun!"); // Close the text file fclose($f); // Open file for reading, and read the line $f = fopen("textfile.txt", "r"); echo fgets($f); fclose($f); ?> </body> </html>
بما أننا فتحنا الملف للكتابة، السطر سيضاف في أعلى الملف النصي وهذا يعني أنه سيكتب فوق أي سطر آخر موجود، أما إن فتحنا الملف للإلحاق سيضاف السطر في آخر الملف وهذا يعني زيادة سطر واحد للملف في كل مرة نكتب في الملف.
مثال 2: إضافة كتلة من النص إلى الملف
بالطبع يمكنك أن تضيف كتلة من النص بدلاً من سطر واحد، بهذا الشكل:
<html> <head> <title>Write to a text file</title> </head> <body> <?php // Open the text file $f = fopen("textfile.txt", "w"); // Write text fwrite($f, $_POST["textblock"]); // Close the text file fclose($f); // Open file for reading, and read the line $f = fopen("textfile.txt", "r"); // Read text echo fgets($f); fclose($f); ?> </body> </html>
في الدرس التالي سنلقي نظرة على وسيلة أخرى لحفظ البيانات: قواعد البيانات.