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

ออกแบบโครงสร้างฐานข้อมูล 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...

การดึงข้อมูล MySQL มาแสดงในปฏิทิน Fullcalendar ด้วย PHP

หลักการทำงาน เรียกข้อมูลจากตาราง tb_event ด้วยฟังก์ชั่นของ MySQLi ข้อมูลจากฐานข้อมูลจะถูกวนลูปเก็บไว้ใน $data และจะถูกส่งไปที่ Fullcalendar ด้วยการแปลงข้อมูลจาก PHP ให้อยู่ในรูปแบบ JSON อาร์เรย์ด้วยฟังก์ชั่น json_encode() PHP Code <?php //Database $data = array(); $link = mysqli_connect("127.0.0.1", "tobedev", "1234", "tobedev_example"); mysqli_set_charset($link, 'utf8'); if (!$link) {     echo "Error: Unable to connect to MySQL." . PHP_EOL;     echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;     echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;     exit; } $query = "SELECT * FROM tb_event"; if ($result = $link->query($query)) {     /* fetch object array */     while ($obj = $result->fetch_object()) {        $data[] = array(                 ...