ข้ามไปที่เนื้อหาหลัก

ออกแบบโครงสร้างฐานข้อมูล MySQL ของแบบสอบถาม

 การออกแบบโครงสร้างฐานข้อมูลของแบบสอบถามที่จะกล่าวถึงนี้ สำหรับรูปร่างหน้าตาของแบบสอบถามนั้นจะแตกต่างจากที่พบเจอในงานวิจัย หรือการทำโพลต่างๆ แต่หลักการยังคงเหมือนกัน

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



สำหรับเนื้อหาในบทความนี้มาเริ่มกันที่การออกแบบฐานข้อมูล ซึ่งในมุมมองของผมนั้น ก็คิดว่าไม่ได้มีอะไรมากไปกว่าการเก็บข้อมูลลงฐานข้อมูล MySQL แล้วนำมาแสดงผลให้ผู้เรียกข้อมูลได้ทราบบนหน้าเว็บไซต์

โดยหลักการทั่วไป สิ่งที่จะปรากฏอยู่ในแบบฟอร์มสำหรับเก็บข้อมูลนั้นจะมีคร่าวๆ ดังนี้
1. ชื่อแบบฟอร์ม ข้อมูลส่วนหัวของแบบฟอร์ม
2. รายการคำถาม


ข้อมูลส่วนที่ 1 นั้นจะเป็นส่วนหัว นั่นก็คือข้อมูลหลัก ดังนั้นผมจะนับเป็น
1) ตารางสำหรับเก็บข้อมูลหัวข้อส่วนหัวของแบบสอบถาม


ข้อมูลส่วนที่ 2 นั้น เป็นรายการคำถาม นั่นแสดงว่าต้องมีหลายข้อดังนั้นผมก็จะแยกไปเป็นอีก 1 ตาราง
2) ตารางเก็บรายละเอียดคำถามแต่ละข้อ


สำหรับการตอบคำถามผ่านโปรแกรมนั้น จะแตกต่างจากการตอบบนกระดาษ ที่เก็บผลลัพธ์ไว้บนนั้นเลย ดังนั้นในการเขียนโปรแกรม PHP เราก็จะต้องมีส่วนของการเก็บคำตอบไว้ในฐานข้อมูลด้วย


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


เราก็จะต้องสร้างตารางเพิ่มในฐานข้อมูลของเราอีก 1 ตาราง
3) ตารางสำหรับเก็บคำตอบของคำถามแต่ละข้อที่ผู้ใช้เลือกตอบ


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


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

วิธีนี้ดูเหมือนจะไม่เข้าท่าสักเท่าไหร่ แต่ถ้ามองไปที่ระบบบางทีเราก็ไม่ได้มีข้อมูลครบ (อีกอย่างก็ขี้เกียจหาข้อมูลด้วยแหละ ^^") ดังนั้นถ้าเสียเวลามาคิดออกแบบอย่างเดียว คงจะไม่ได้เริ่มทำสักที

ตอนนี้ก็ประมาณไว้ว่าระบบแบบสอบถามสำหรับรวบรวมข้อมูลด้วย PHP + MySQL นี้น่าจะเสร็จก่อนธันวาคมปีหน้า 555+ ลองคิดดูเอาเองเถอะครับ แต่ละบทความที่อัพเดตห่างกันขนาดไหน คนในสายงานโปรแกรมเมอร์ถ้าไม่ขยันมีหวังได้อดตายเป็นแน่แท้
 
เจอกันอีกทีปีหน้า ครับผม สวัสดีครับ ^O^


-------------------------------------------------------------------------------------

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

ดาวน์โหลดซอร์สโค๊ดได้ที่ http://www.thaicreate.com/php/forum/099342.html
มีข้อสงสัยสอบถามทางเจ้าของกระทู้ได้โดยตรงเลยครับ
ปล. ส่วนบทความและตัวอย่างของผมคงจะเป็นซีรีย์ยาวที่ค้างไว้ก่อน พอจะต้องเขียนยาวๆแล้วใจมันไม่มีเรี่ยวมีแรงซะงั้นครับ ^^"






"PHP ไม่ได้สร้างสุดยอดโปรแกรม
แต่ PHP ช่วยให้งานคุณง่ายขึ้นต่างหาก"

PHP CI MANIA PHP Code Generator 
โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม

สนใจสั่งซื้อเพียง 3,990 บาท



PHP CI MANIA PHP Code Generator 

โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"
ราคาสุดคุ้มเพียง 3,990 บาท 
http://www.phpcodemania.com

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

แจกฟรี!! ระบบต่างๆที่พัฒนาด้วย PHP สำหรับนำไปใช้ในงานต่างๆ

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

สอนเขียน PHP แสดงการจองห้องประชุมแบบไฮไลท์ตามช่วงเวลา (แบบเชื่อมต่อฐานข้อมูล MySQL)

ตัวอย่าง ผลลัพธ์ที่ได้จากการจองในฐานข้อมูล ตาราง tb_room สร้างตารางรายชื่อห้องประชุม สำหรับ id นั้นเป็น Primarykey จะกำหนดให้สร้างอัตโนมัติ ทุกครั้งที่เราเพิ่มชื่อห้องประชุมใหม่ -- -- Database: `tobedev_example` -- -- -------------------------------------------------------- -- -- Table structure for table `tb_room` -- CREATE TABLE IF NOT EXISTS `tb_room` (   `id` int(11) NOT NULL,   `name` varchar(30) NOT NULL ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- -- Dumping data for table `tb_room` -- INSERT INTO `tb_room` (`id`, `name`) VALUES (1, 'ห้องประชุม 1'), (2, 'ห้องประชุม 2'), (3, 'ห้องประชุม 3'), (4, 'ห้องประชุม 4'), (5, 'ห้องประชุม 5'); -- -- Indexes for dumped tables -- -- -- Indexes for table `tb_room` -- ALTER TABLE `tb_room`   ADD PRIMARY KEY (`id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `tb_room` -- ALTER TABLE `tb_room`   MODIFY `i...

การนำไอคอน มาแสดงบน Fullcalendar

เนื่องจากมีน้องคนหนึ่งให้ช่วยดูโค้ดเกี่ยวกับ Fullcalendar ให้หน่อย แล้วพอดีช่วงนี้ผมก็กำลังสนใจปฏิทิน Fullcalendar อยู่พอดี จึงลองหาสาเหตุที่ไม่สามารถแสดงข้อมูลจาก MySQL และไม่สามารถแทรก icon เข้าไปใน Fullcalendar ได้ จากที่สังเกตุได้ครั้งแรกคือ Error ที่ Console ของ Firefox เกี่ยวกับฟังก์ชั่นที่เขียนผิด และก็มีการ echo ค้างไว้ในส่วนของไฟล์ getCalendar.php ก็เลยจัดการทดสอบแล้วลบ echo ออกให้เหลือแค่ echo json_encode($event_array); ที่ได้ใช้งานจริงเท่านั้น ขั้นตอนการตรวจสอบความถูกต้องของโค้ด PHP 1) ต้องแน่ใจว่าคำสั่งที่เขียนไว้ สามารถดึงข้อมูลมาแสดงผลได้ด้วยการ echo $sql; 2) นำคำสั่งที่ได้ไปรันในโปรแกรมจัดการฐานข้อมูล ในที่นี้คือ phpMyAdmin 3) เมื่อตรวจสอบดูผลลัพธ์ที่ได้ หากถูกต้องมีข้อมูลก็แสดงว่าการ Query ทำงานได้ 4) มาดูการทำงานของ JavaScript ในส่วนของ jQuery มีการแจ้งเตือนที่ฟังก์ชั่น .on() ซึ่งจะใช้กับ jQuery เวอร์ชั่นใหม่เท่านั้น นั่นหมายถึงเวอร์ชั่น jQuery ที่มากับ Fullcalendar เป็นเวอร์ชั่นเก่า ก็ให้เปลี่ยนไปใช้ .live() แทน ก็จะทำงานได้ปกติ 5) ม...