การประมวลผลแฟ้มแบบ text

ปรับปรุง : 2548-02-06 ()

บทเรียน ONLINE : การเขียนภาษา PHP
[ วิธีจัดการแฟ้มแบบ text ]
http://www.se-ed.net/thaiall
หากท่านต้องการรายละเอียดเพิ่มเติมเป็นภาษาไทย ขอเชิญที่ thaiiq.com
  1. ข้อควรทราบ
  2. สร้างแฟ้มพร้อมเพิ่มระเบียนแรก (ไม่ว่าในแฟ้มจะมีอะไร จะหายหมด เหลือแค่ระเบียนใหม่ 1 ระเบียนเท่านั้น)
  3. สร้างแฟ้ม หรือเพิ่มระเบียนต่อท้าย (ถ้าไม่มีแฟ้มก็จะสร้างแฟ้ม แต่ถ้ามีแล้วจะนำระเบียนไปต่อท้าย)
  4. อ่านข้อมูลจากแฟ้ม มาแสดงทางจอภาพ (อ่านข้อมูลมาแสดง)
  5. ฟอร์ม html ที่ใช้เลือกระเบียนที่ต้องการลบ (รับค่าจากแป้นพิมพ์ แล้วส่งไปให้ php กระทำ)
  6. ลบระเบียน ตามลำดับเลขระเบียน (ทำหน้าที่ลบระเบียนที่ต้องการ โดยรับเลขระเบียนจากฟอร์ม)
  7. โปรแกรมที่รับค่าจากฟอร์มไปเพิ่มในแฟ้ม (รับค่าจากฟอร์ม แล้ว เพิ่มค่าต่อท้ายแฟ้มเดิม)
  8. แบบฝึกหัด
ข้อควรทราบ
  1. ตัวอย่างทั้งหมดทดสอบที่ se-ed.net/thaiall ซึ่งในบทนี้จะแสดงให้เห็นการใช้งานแฟ้มแบบ text เหมือนกับที่ใช้ใน perl ตามปกติ
  2. บทนี้ไม่ได้เน้นเทคนิคพิเศษ เพียงแต่ต้องการสื่อให้ทราบ ว่า php สามารถติดต่อกับ text ได้ง่าย รวมถึงการรับค่าจาก form หรือ url ไปประมวลผลตามต้องการ ซึ่งมีความสามารถในการ เพิ่มระเบียนใหม่ หรือ อ่านข้อมูลมาแสดง เป็นหลัก
  3. สำหรับแฟ้มข้อมูลนั้น จะมีขนาดเท่านจำนวนตัวอักษร แต่ท้ายบรรทัดจะมีรหัสซ่อนอยู่ 2 byte ทุกบรรทัด คือ 0D และ 0A แต่เมื่อส่งแฟ้มเข้าไปแล้ว จะเหลือเพียง 0A เช่นแฟ้มมี 5 บรรทัด ๆ ละ 8 อักษร แฟ้มใน PC จึงมีขนาด 50 byte แต่เมื่อส่งเข้าไป แฟ้มจะมีขนาดเหลือ 45 byte เท่านั้น พอผม download แฟ้ม 45 byte ใน mode ascii กลับมาที่ PC ขนาดของแฟ้มกลับไปอยู่ที่ 50 byte เหมือนเดิม .. ผมไม่ได้สังเกตุว่าเป็นกับ server ตัวอื่น หรือเปล่า แต่ที่ se-ed.net เป็นอย่างนี้ครับ
  4. ตัวอย่างข้อมูลในแฟ้ม fsample.txt ซึ่งตัวอย่างโปรแกรมในบทเรียนนี้ กระทำกับแฟ้มนี้ทั้งหมด
      asdf<br>
      wowfromurl<br>
      4 36 38 <br>
      4 36 55 <br>
      wowfromurl<br>


สร้างแฟ้มพร้อมเพิ่มระเบียนแรก
(ไม่ว่าในแฟ้มจะมีอะไร จะหายหมด เหลือแค่ระเบียนใหม่ 1 ระเบียนเท่านั้น)
http://www.se-ed.net/thaiall/fopenw.php3
  1. โปรแกรมนี้จะสร้างแฟ้ม และนำเวลาจากฟังก์ชัน getdate() เขียนเข้าไป 1 ระเบียน
  2. fopen เป็นฟังก์ชันใช้สำหรับเปิดแฟ้ม ซึ่ง w เป็นตัวกำหนดว่า เปิดใหม่
  3. fput เป็นฟังก์ชัน สั่งให้เขียนข้อมูลลงไปในแฟ้ม
<?
$today = getdate();
$hour = $today[hours];
$minutes = $today[minutes];
$seconds = $today[seconds];
$file = fopen("fsample.txt","w");
fputs($file , "$hour $minutes $seconds <br>\n");
fclose($file);
print "save $hour $minutes $seconds ok";
?>


สร้างแฟ้ม หรือเพิ่มระเบียนต่อท้าย
(ถ้าไม่มีแฟ้มก็จะสร้างแฟ้ม แต่ถ้ามีแล้วจะนำระเบียนไปต่อท้าย)
http://www.se-ed.net/thaiall/fopena.php3
  1. โปรแกรมนี้ใช้เขียนเพิ่มระเบียนเข้าไปในแฟ้มเดิม โดยข้อมูลเดิมไม่หาย
  2. จุดที่น่าสังเกตุคือ อักษร a ในฟังก์ชัน fopen ที่ย่อมาจาก append
  3. การใช้อักษร a จะทำให้สร้างแฟ้มใหม่ในกรณีที่ไม่มีแฟ้มนั้นอยู่ด้วย
<?
$today = getdate();
$hour = $today[hours];
$minutes = $today[minutes];
$seconds = $today[seconds];
$file = fopen("fsample.txt","a");
fputs($file , "$hour $minutes $seconds <br>\n");
fclose($file);
print "save append $hour $minutes $seconds ok<br>";
?>


อ่านข้อมูลจากแฟ้ม มาแสดงทางจอภาพ
(อ่านข้อมูลมาแสดง)
http://www.se-ed.net/thaiall/fget.php3
  1. โปรแกรมนี้ใช้สำหรับอ่านข้อมูลจากแฟ้ม text มาแสดง
  2. ฟังก์ชัน feof ใช้สำหรับตรวจสอบการสิ้นสุดของแฟ้ม (Function End Of File)
  3. fgets ใช้สำหรับอ่านข้อมูลจากแฟ้มมาทีละบรรทัด ซึ่งต้องไม่เกิน 4096 ตัวอักษร
  4. echo เป็นคำสั่งใช้พิมพ์ คล้าย ๆ กับ print เลยครับ
<?
$file = fopen("fsample.txt","r");
while (!feof($file)) {
 $buffer = fgets($file,4096);
 echo $buffer;
}
?>


ฟอร์ม html ที่ใช้เลือกระเบียนที่ต้องการลบ
(รับค่าจากแป้นพิมพ์ แล้วส่งไปให้ php กระทำ)
http://www.se-ed.net/thaiall/fsndvalue.htm
  1. ฟอร์มข้างล่างนี้ใช้ควบคุมโปรแกรมต่าง ๆ ทั้งหมดในบทเรียนนี้ ซึ่งรวมไปถึงการแสดงให้เห็นลักษณะการส่งข้อมูล ทั้งในแบบส่งจาก form และส่งจาก url
  2. บางท่านอาจไม่ชินกับ html ก็ลองศึกษาการเขียนเพิ่มเติมดูก็ได้ครับ
Add value
thaiallvalue=wowfromurl
Delete record number

fget.php3
fopena.php3
fdelrec.php3
fopenasndvalue.php3
fopenw.php3
fsample.txt
<body>
<form action=fopenasndvalue.php3>Add value
<input name=thaiallvalue>
<input type=submit value=fopenasndvalue.php3>
</form>
<a href=fopenasndvalue.php3?thaiallvalue=wowfromurl>thaiallvalue=wowfromurl</a>
<hr>
<form action=fdelrec.php3>Delete record number
<input name=recn>
<input type=submit value=fdelrec.php3>
</form>
<hr>
<a href=fget.php3>fget.php3</a><br>
<a href=fopena.php3>fopena.php3</a><br>
<a href=fdelrec.php3>fdelrec.php3</a><br>
<a href=fopenasndvalue.php3>fopenasndvalue.php3</a><br>
<a href=fopenw.php3>fopenw.php3</a><br>
<a href=fsample.txt>fsample.txt</a><br>
<hr>
</body>


โปรแกรมที่รับค่าจากฟอร์มไปเพิ่มในแฟ้ม
(รับค่าจากฟอร์ม แล้ว เพิ่มค่าต่อท้ายแฟ้มเดิม)
http://www.se-ed.net/thaiall/fopenasndvalue.php3
  1. โปรแกรมนี้รอรับค่าจาก form หรือ url เพื่อนำค่าไปเพิ่มในแฟ้ม
  2. ค่าที่ส่งมาคือ $thaiallvalue ซึ่งเข้ามาในโปรแกรมอย่างไม่มีปี่มีขลุ่ย แต่ก็เข้ามาครับ
<?
$file = fopen("fsample.txt","a");
fputs($file , "$thaiallvalue<br>\n");
fclose($file);
print "save append from input $thaiallvalue ok<br>";
?>


ลบระเบียน ตามลำดับเลขระเบียน
(ทำหน้าที่ลบระเบียนที่ต้องการ โดยรับเลขระเบียนจากฟอร์ม)
http://www.se-ed.net/thaiall/fdelrec.php3
  1. โปรแกรมนี้ใช้ลบระเบียน ซึ่งหวังว่าท่านจะสามารถแก้โปรแกรม ให้รับการแก้ไขข้อมูลได้
  2. เริ่มโปรแกรมจะเปิดแฟ้ม แล้วอ่านข้อมูลจากแฟ้ม เข้ามาในตัวแปรอาเรย์
  3. จากนั้นจะเข้า loop การเขียนข้อมูลทับแฟ้มเดิม แต่ถ้ามีเลขตรงกับที่ระบุก็ไม่เขียน
  4. Loop สุดท้าย จะอ่านข้อมูลจากแฟ้มที่ถูก update มาแสดงให้เห็นว่าเกิดการปรับปรุงแล้ว
<?
$filer = fopen("fsample.txt","r");
$i = 1;
while (!feof($filer)) {
 $buffer[$i] = fgets($filer,4096);
 $i++;
}
$total = $i;
fclose($filer);
$filew = fopen("fsample.txt","w");
$i = 1;
while  ($i < $total) {
 if ($i <> $recn) {  fputs($filew , "$buffer[$i]"); }
 $i++;
}
fclose($filew);
print "Delete ok <hr>ข้อมูลหลังลบแล้ว<br>";
$file = fopen("fsample.txt","r");
while (!feof($file)) {
 $buffer = fgets($file,4096);
 echo $buffer;
}
?>


แบบฝึกหัด
    ให้ทำตามโจทย์ต่อไปนี้
  1. ให้ copy source code ไปทดสอบให้ใช้งานได้
  2. ปรับปรุง และลองนำไปทำอะไรที่ท่านต้องการ เช่น chat board เป็นต้น
  3. ลองปรับปรุงโปรแกรมให้สามารถเลือกแก้ไขระเบียนที่ต้องการ
ผู้สนับสนุน + ผู้สนับสนุน
+ รับผู้สนับสนุน

แนะนำเว็บใหม่ : ผลการจัดอันดับ
รักลำปาง : thcity.com : korattown.com : topsiam.com : มหาวิทยาลัยโยนก
ศูนย์สอบ : รวมบทความ : ไอทีในชีวิตประจำวัน : ดาวน์โหลด : yourname@thaiall.com
ติดต่อ ทีมงาน ชาวลำปาง มีฝันเพื่อการศึกษา Tel.08-1992-7223