Chapter VII : การแก้ไขข้อมูล
Over view edit.php
การแก้ไขข้อมูล ใช้ส่วนต่าง ๆ ที่เกี่ยวข้องดังนี้ 1. ไฟล์ connect.php 2. ตารางที่มีข้อมูล nisit ในฐานข้อมูล prg2x 3. หน้าเว็บเพจแสดงข้อมูล list.php 4. ฟอร์มแก้ไขข้อมูล form_edit.php 5. หน้าเว็บเพจอัพเดทข้อมูล edit.php 6. โฟลเดอร์ upix และภาพ
Step:1 สร้างลิงค์จากข้อความ แก้ไข list.php ไปยัง form_edit.php พร้อมแฝงค่าตัวแปรที่เป็นคีย์หลักของระเบียนนั้น ๆ ชื่อ pk ด้วยคำสั่ง <a href=“form_edit.php?pk=<?=$x[“aid”]?>”> แก้ไข </a>
Step:2 2. เปิดไฟล์ form_insert.php และทำการ บันทึกเป็น form_edit.php 3. แทรกคำสั่ง ในเพจ form_edit.php ทำให้เกิดการเรียกข้อมูลเพื่อแก้ไขดังนี้ (แทรกไว้ก่อนแท็ก ฟอร์ม) include (“connect.php”); $gpk=$_GET[“pk”]; // รับค่าตัวแปร pk ที่ถูกส่งแฝงมากับลิงค์ $q=mysql_query(“select * from nisit where aid =‘$gpk’ “); // สั่งสืบค้น ด้วยคีย์หลักที่รับมา ในตัวแปรชื่อ gpk
Step:3 4. ใช้ฟังก์ชัน mysql_result เพื่อแสดงค่าจากฟิลด์ ดังนี้ $x=mysql_result($q,0,1); // ข้อมูลเพศ จากฟิลด์ ลำดับที่ 1 * ฟังก์ชัน mysql_result ประกอบด้วยพารามิเตอร์ 3 ส่วนคือ mysql_result(, , ); ส่วนผลลัพธ์ที่ได้จากการสืบค้น แถวหรือเรคคอร์ดที่ต้องการ เช่น สืบค้นได้ 1 ค่าพารามิเตอร์ส่วนนี้จะเป็น 0 ลำดับฟิลด์ในตารางข้อมูล โดยเริ่มนับจากฟิลด์แรกทางซ้ายมือ เป็นลำดับที่ 0 5. แก้ไข action ของแท็กฟอร์มเดิม ไปที่ edit.php <form enctype="multipart/form-data" method="post" action="edit.php">
Step:4 6. ส่วนแรกที่จะพิจารณา คือ ตัวเลือกเพศ ซึ่งข้อมูลที่เก็บในตาราง คือ male หรือ female จากขั้นตอนที่ 4 ตัวแปร x จะทำหน้าที่ในการเก็บข้อมูลดังกล่าว 7. สำหรับการเลือกเพศ หญิง เราได้ออกแบบให้มีการเลือก (checked) ไว้ก่อนแล้ว ซึ่งถ้าข้อมูลของเรคคอร์ดที่สืบค้น มีข้อมูลเพศ หญิง (female) หรือแม้กระทั่งค่าว่าง ก็ไม่จำเป็นที่จะต้องเปลี่ยนตัวเลือกสำหรับเพศนี้ 8. สำหรับการเลือกเพศ ชาย หากข้อมูลที่สืบค้นขึ้นมา คือ male จำเป็นที่จะต้องทำให้ radiobutton สำหรับเพศ ชาย ถูกเลือก(checked)ด้วย เพื่อให้ตรงกับข้อมูลเดิม โดยการใช้คำสั่ง (ตัวอย่างของแท็ก radio แทรกด้วยคำสั่ง php) <input name="fx" type="radio" value="male" <? if($x=="male") echo "checked"; ?>>
Step:5 9. textfield อื่น ๆ ให้ทำการกำหนด value ตามลำดับดังนี้ รหัสนิสิต value="<?=mysql_result($q,0,2)?>" ชื่อ-สกุล value="<?=mysql_result($q,0,3)?>" โทรศัพท์ติดต่อ value="<?=mysql_result($q,0,5)?>" เมลล์ติดต่อ value="<?=mysql_result($q,0,6)?>"
Step:6 10. ส่วนเบราส์ไฟล์ ให้ทำการแสดง ชื่อและชนิดของไฟล์ (เขียนไว้ก่อน ออบเจ็ค) และทำการซ่อนค่าไปกับตัวแปรชื่อ op (ตัวแปรนี้จะถูกส่งไปยัง edit.php ด้วยวิธีการ post ) 11. ทำการซ่อนค่าคีย์หลัก ไปกับ hidden field <input type=“hidden” name=“gpk” value=“<?=$gpk?>”> 12. ปิดการเชื่อมต่อ mysql_close($connect);
edit.php 1. รับค่าตัวแปรจากฟอร์มทั้งหมด 2. ทราบค่าตัวแปรของคีย์หลัก 3. ทราบค่าตัวแปรของภาพเดิม 4. ทราบว่ามีการเลือก(เบราส์) ภาพใหม่ 4.1 สำเนาภาพใหม่เก็บที่ upix 4.2 หากมีการใช้ภาพใหม่ ต้องทำการลบภาพเก่า 5. อัพเดทเรคคอร์ด ด้วยข้อมูลใหม่ ได้ 6. แจ้งการประมวลผล ไปยังหน้า list.php
Step:7 1. สร้างไฟล์ ชนิด php ใหม่ และบันทึกชื่อเป็น edit.php 2. สร้างการเชื่อมต่อ และรับค่าตัวแปร include (“connect.php”); $ex=$_POST["fx"]; $enid=$_POST["fnid"]; $ename=$_POST["ffname"]; $etel=$_POST["ftel"]; $email=$_POST["fmail"]; $epic=$_POST["fpic"]; // hidden variable $gpk=$_POST["gpk"]; $op=$_POST["op"];
Step:8 3. ทำการตรวจสอบ เบราส์ไฟล์ ว่ามีค่าว่างหรือไม่ เพื่อให้เกิดการเลือกทำโดยใช้คำสั่ง if หากว่าง ให้ทำการอัพเดทข้อมูลตามปกติ (ใช้ข้อมูลภาพเดิม) 4. ตรวจสอบคำสั่งสืบค้น หากอัพเดท ไม่ได้ ให้แจ้งข้อความกลับไปเพจ list.php
Step:9 5. หากทำการอัพเดทได้ ให้แจ้งข้อความ และกลับไปยังเพจ list.php 6. จากขั้นตอนที่ 3 หากมีการเบราส์ภาพใหม่เข้ามา ให้ทำคำสั่งในส่วนของ else โดยเริ่มจับ temporary และสั่ง update ข้อมูล
Step:10 7. ตรวจสอบคำสั่งสืบค้น หากอัพเดท ไม่ได้ ให้แจ้งข้อความกลับไปเพจ list.php 8. หากอัพเดทได้ ให้ทำการ ลบ(unlink) ภาพเก่า($op) และคัดลอกภาพใหม่($img) ก่อนแจ้งข้อความกลับไปยังเพจ list.php 9. ปิดการเชื่อมต่อ mysql_close($connect);