ข้ามไปยังเนื้อหาหลัก
ProgrammerThailand

ไอเดีย (Idea) idea php form beginner

ไอเดีย #8: ระบบแบบสอบถามออนไลน์ (Form Builder)

หน่วยงานราชการ โรงเรียน หรือแม้แต่ร้านค้าเล็ก ๆ ต่างก็ต้องทำแบบสอบถามกันอยู่เรื่อย ๆ ทั้งประเมินความพึงพอใจ สำรวจความต้องการ หรือรับสมัครอาสาสมัคร หลายที่ใช้เครื่องมือฟรีจากต่างประเทศ แต่ก็กังวลว่าข้อมูลไปเก็บอยู่ที่ไหน บางที่อยากได้รายงานสรุปตามแบบฟอร์มของหน่วยงาน ซึ่งเครื่องมือสำเร็จรูปทำให้ไม่ได้ ระบบ Form Builder ของเราเองจึงเป็นทั้งโจทย์ฝึกที่สนุกและเป็นงานที่มีลูกค้าอยากจ้างจริง

ใครจะใช้

  • ผู้สร้างแบบสอบถาม — เจ้าหน้าที่หรือครูที่ออกแบบคำถาม เปิด-ปิดการรับคำตอบ และดูผล
  • ผู้ตอบ — ประชาชน นักเรียน หรือลูกค้า ที่เปิดลิงก์แล้วตอบได้ทันทีบนมือถือ
  • ผู้ดูแลระบบ — จัดการบัญชีผู้ใช้และดูภาพรวมของทุกแบบสอบถาม

ฟีเจอร์ขั้นต่ำ (MVP)

  • สร้างแบบสอบถาม ตั้งชื่อ คำอธิบาย วันเปิด-ปิด และเลือกได้ว่าต้องล็อกอินก่อนตอบหรือไม่
  • เพิ่มคำถามได้หลายประเภท ข้อความสั้น ข้อความยาว ตัวเลือกเดียว หลายตัวเลือก มาตราส่วน 1–5 และวันที่
  • สลับลำดับคำถาม และกำหนดว่าข้อไหนบังคับตอบ
  • หน้าตอบแบบสอบถามที่ใช้งานบนมือถือได้ดี และตรวจความถูกต้องก่อนส่ง
  • หน้าสรุปผล นับจำนวนผู้ตอบ แสดงกราฟแท่งหรือกราฟวงกลมต่อข้อ และค่าเฉลี่ยของข้อมาตราส่วน
  • Export คำตอบทั้งหมดเป็น CSV หรือ Excel โดยหนึ่งแถวต่อผู้ตอบหนึ่งคน

ต่อยอดได้อีก

  • เงื่อนไขข้ามคำถาม เช่น ตอบว่า "ไม่เคยใช้บริการ" ให้ข้ามไปส่วนท้ายเลย
  • เทมเพลตแบบประเมินที่ใช้บ่อย สร้างแบบสอบถามใหม่ได้ในไม่กี่คลิก
  • สร้าง QR Code ของลิงก์แบบสอบถาม ไว้แปะหน้าเคาน์เตอร์
  • แจ้งเตือนผ่าน LINE ทุกครั้งที่มีคำตอบใหม่ หรือสรุปรายวัน

โครงข้อมูลตั้งต้น

  • forms — id, owner_id, title, description, require_login, open_at, close_at, status
  • questions — id, form_id, type, label, options (JSON), is_required, sort_order
  • responses — id, form_id, user_id, submitted_at, ip_hash
  • answers — id, response_id, question_id, value_text, value_number

ระดับความยาก และสิ่งที่จะได้เรียนรู้

ระดับ มือใหม่ ค่อนไปทางปานกลางนิดหน่อยตรงส่วนหน้าจอสร้างฟอร์ม ใช้ Yii2 หรือ Laravel กับ PostgreSQL หรือ MySQL และวาดกราฟด้วย Chart.js สิ่งที่จะได้เรียนรู้

  • การออกแบบข้อมูลที่โครงสร้างไม่ตายตัว และข้อดีข้อเสียของการเก็บเป็น JSON เทียบกับแยกตาราง
  • การ render ฟอร์มแบบ dynamic จากข้อมูลในฐานข้อมูล
  • การเขียน query สรุปผลรายข้อ และ export ข้อมูลขนาดใหญ่โดยไม่กินหน่วยความจำ
  • การจัดการฟอร์มฝั่ง JavaScript เพิ่ม ลบ สลับลำดับคำถาม

ข้อควรระวัง

  • ถ้าแก้หรือลบคำถามหลังมีคนตอบแล้ว ข้อมูลเก่าอาจไม่ตรงกับคำถามใหม่ ควรล็อกการแก้ไขหรือทำ version ของแบบสอบถาม
  • แบบสอบถามที่ถามชื่อ เบอร์โทร หรือข้อมูลสุขภาพ ต้องคำนึงถึง PDPA แจ้งวัตถุประสงค์ให้ชัด และจำกัดคนที่เห็นคำตอบ
  • Export เป็น CSV ระวัง formula injection ถ้าคำตอบขึ้นต้นด้วยเครื่องหมายเท่ากับหรือบวก ควร escape ก่อนเขียนไฟล์

ใครเคยทำ Form Builder ให้หน่วยงานหรือลูกค้าบ้าง เก็บคำตอบแบบไหน ตารางแยกหรือ JSON แล้วเจอปัญหาอะไรตอนข้อมูลเยอะขึ้น ถ้าเป็นคุณจะเพิ่มคำถามประเภทไหนเป็นอันดับแรก มาเล่าและโพสต์ผลงานกันในกระทู้นี้ได้เลยครับ

0 คะแนน

0 คำตอบ

ยังไม่มีคำตอบ

รู้คำตอบ? ช่วยแบ่งปันได้เลย

ตอบคำถามนี้

เข้าสู่ระบบเพื่อตอบคำถามและโหวต

เข้าสู่ระบบ สมัครสมาชิก