หนึ่งในปัญหาคลาสสิกที่คนทำงานกับ phpMyAdmin เจอกันเป็นประจำ คือเวลาที่เราเขียน SQL Query ซับซ้อน ไม่ว่าจะเป็นการกรองเงื่อนไขเฉพาะทาง หรือเลือกดูฟิลด์เฉพาะกลุ่ม จนได้ผลลัพธ์ออกมาเป็นรายการ (Result List) สวยงาม แต่พอคลิกปุ่ม Edit ที่แถวเพื่อแก้ข้อมูลบางจุด แล้วกดปุ่มบันทึก (Go) หน้าเว็บกลับ redirect ไปรันคำสั่ง SELECT * FROM table แบบเริ่มต้น ทำให้ Custom Query List ที่เราเพิ่งเปิดไว้หายไปต่อหน้าต่อตา ต้องเสียเวลาเขียนคำสั่งใหม่หรือไปตามคุ้ยจาก History
สาเหตุหลักมาจากกลไก Session และ State Management ของ phpMyAdmin ที่มักจะยึดบริบทของตารางหลัก (Base Table) เป็นค่าเริ่มต้นเมื่อมีการส่งฟอร์ม Update ข้ามหน้า
บทความนี้รวม 3 เทคนิคที่ช่วยให้การอัปเดตข้อมูลใน phpMyAdmin ทำงานได้ต่อเนื่องโดยไม่ต้องเสียลิสต์ผลลัพธ์เดิมไป
เปลี่ยนมาใช้ Inline Edit (ดับเบิ้ลคลิกแก้ที่ Cell โดยตรง)
วิธีนี้เป็นวิธีที่คลีนและไวที่สุด เพราะระบบจะไม่โหลดหน้าใหม่เลยแม้แต่น้อย
- ขั้นตอน
ในหน้าตารางผลลัพธ์ของ Custom Query ให้นำเมาส์ไปดับเบิ้ลคลิกตรงช่องข้อมูล (Cell) ที่ต้องการแก้ไขโดยตรง จากนั้นพิมพ์ข้อมูลใหม่แล้วกดEnter(หรือคลิกพื้นที่ว่างภายนอก) - ผลลัพธ์
phpMyAdmin จะส่งคำขอแบบ AJAX ไปอัปเดตข้อมูลเบื้องหลัง ช่องข้อมูลจะขึ้นไฮไลต์สีเขียวชั่วขณะเพื่อยืนยันการบันทึก และรายการ Custom Query ทั้งหมดยังคงอยู่ครบถ้วนในตำแหน่งเดิม
ข้อจำกัด: เหมาะกับข้อมูลชนิดสั้น เช่น ตัวเลข สตริง หรือฟิลด์ที่ไม่ได้เป็น TEXT ยาว ๆ หรือไฟล์ไบนารี
ใช้เทคนิคเปิด Edit ในแท็บใหม่ (Open in New Tab)
หากจำเป็นต้องแก้ไขหลายคอลัมน์พร้อมกัน หรือแก้ไขฟิลด์ขนาดยาวที่ต้องใช้หน้าฟอร์มเต็ม (Full Row Edit) ให้เลี่ยงการกดปุ่ม Edit ปกติบนแท็บเดิม
- ขั้นตอน
กดปุ่มCtrl(หรือCmdบน Mac) ค้างไว้แล้วคลิกปุ่ม Edit (หรือคลิกขวาที่ Edit แล้วเลือก Open link in new tab) - การทำงาน
หน้าแก้ไขจะแยกไปอยู่อีกแท็บหนึ่ง ให้กรอกข้อมูลและกดปุ่ม Go ตามปกติ เมื่อบันทึกเสร็จแล้วให้ปิดแท็บนั้นทิ้ง - ผลลัพธ์
แท็บผลลัพธ์ Custom Query เดิมจะยังคงเปิดค้างอยู่ ไม่ถูกแทรกแซงหรือเด้งกลับไปหน้า Default หากต้องการดูข้อมูลล่าสุด เพียงกดปุ่ม Query ซ้ำ หรือรีเฟรชเฉพาะส่วน
การตั้งค่า Redirect และการดึง State คืน
หากเผลอกด Edit บนหน้าเดิมไปแล้ว สามารถจัดการได้ผ่าน 2 ตัวช่วย
- ตั้งค่า “and then”
ที่ด้านล่างสุดของหน้าฟอร์มแก้ไข (ข้างปุ่ม Go) ให้ตรวจสอบดรอปดาวน์ “and then” แล้วเลือกเป็น “Go back to this page” เพื่อไม่ให้ระบบพาข้ามไปยังหน้าอื่น แต่ถ้าเป็น Custom Query ที่มีคำสั่งข้ามตาราง (JOIN) phpMyAdmin อาจไม่สามารถจดจำ state เดิมได้ - กู้คืนผ่าน Console History
หากหน้าเด้งหลุดไปหน้าSELECT *แล้ว ให้มองไปที่แถบ Console ด้านล่างสุดของจอ phpMyAdmin คลิกเปิดขึ้นมาแล้วเลือกแท็บ History คุณจะเห็นคำสั่ง Custom Query ล่าสุดที่เพิ่งรันไป สามารถคลิกเพื่อดึงคำสั่งเดิมกลับมารันใหม่ได้ทันทีโดยไม่ต้องพิมพ์ใหม่ทั้งหมด
การปรับมาใช้ Inline Edit สำหรับงานแก้ฟิลด์เดี่ยว และใช้การ เปิดแท็บใหม่ เมื่อต้องการแก้ทั้งแถว เป็นแนวทางปฏิบัติที่ดีที่สุดในการจัดการฐานข้อมูลผ่าน phpMyAdmin ช่วยลดขั้นตอนซ้ำซ้อน และประหยัดเวลาการทำงานได้อย่างชัดเจน