แบบทดสอบ แต่ละข้อมีคะแนนต่างกัน ไม่รู้จะเริ่มจากอะไรดี เคยทำแต่แบบธรรมดา ???
เอองงตรงไหนหรอครับ ก็เพิ่มฟิลด์คะแนนให้แต่ละตัวเลือกนะครับ
Date :
2011-06-15 12:10:57
By :
PlaKriM
แล้วเวลาเรา Select ล่ะค่ะ
นู๋ลองแล้ว แต่ไม่ได้อะค่ะ
Date :
2011-06-15 12:15:20
By :
Baitong_ch
ออกแบบ db ยังไงครับ
Date :
2011-06-15 12:18:51
By :
PlaKriM
--
-- โครงสร้างตาราง `question`
--
CREATE TABLE `question` (
`qid` int(11) NOT NULL,
`question` varchar(500) NOT NULL,
`c1` varchar(500) NOT NULL,
`c2` varchar(500) NOT NULL,
`c3` varchar(500) NOT NULL,
`c4` varchar(500) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- โครงสร้างตาราง `answer`
--
CREATE TABLE `answer` (
`qid` int(11) NOT NULL,
`c1` int(11) NOT NULL,
`c2` int(11) NOT NULL,
`c3` int(11) NOT NULL,
`c4` int(11) NOT NULL,
PRIMARY KEY (`qid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Date :
2011-06-15 12:21:49
By :
Baitong_ch
แยกเป็นตารางคำถาม กับตารางคะแนนแยกกันอะค่ะ
ผิดยังไงช่วยแนะนำด้วยนะค่ะ '^'
Date :
2011-06-15 12:23:27
By :
Baitong_ch
--
-- Table structure for table `answer`
--
CREATE TABLE IF NOT EXISTS `answer` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`studentid` char(8) DEFAULT NULL,
`qid` int(8) unsigned DEFAULT NULL,
`choice` char(2) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `studentid_2` (`studentid`,`qid`,`choice`),
KEY `studentid` (`studentid`),
KEY `qid` (`qid`),
KEY `choice` (`choice`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Table structure for table `choice_score`
--
CREATE TABLE IF NOT EXISTS `choice_score` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`qid` int(8) unsigned DEFAULT NULL,
`choice` char(2) DEFAULT NULL,
`choiceText` char(200) DEFAULT NULL,
`score` double DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `qid_2` (`qid`,`choice`),
KEY `qid` (`qid`),
KEY `choice` (`choice`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Table structure for table `questionaire`
--
CREATE TABLE IF NOT EXISTS `questionaire` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`qid` int(8) DEFAULT NULL,
`question` varchar(250) DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX (qid),
KEY `question` (`question`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
ประวัติการแก้ไข 2011-06-15 12:39:21 2011-06-15 12:51:25 2011-06-15 12:53:36
Date :
2011-06-15 12:38:22
By :
Unidentifier
ระวังเรื่องการใช้ varchar ด้วยน่ะครับ
0 to 255 before MySQL 5.0.3, and 0 to 65,535 in MySQL 5.0.3 and later.
Date :
2011-06-15 12:45:03
By :
Unidentifier
แล้วจะ Select ตอนเช็คคะแนน อย่างไรดี???
Date :
2011-06-15 13:35:08
By :
Baitong_ch
--
-- Dumping data for table `answer`
--
INSERT INTO `answer` (`id`, `studentid`, `qid`, `choice`) VALUES
(1, '540001', 1, 'a'),
(2, '540001', 1, 'c'),
(3, '540001', 1, 'd'),
(4, '540001', 2, 'a'),
(5, '540001', 2, 'd');
--
-- Dumping data for table `choice_score`
--
INSERT INTO `choice_score` (`id`, `qid`, `choice`, `choiceText`, `score`) VALUES
(1, 1, 'a', 'แตงเมล่อน(ญี่ปุ่น)', 10),
(2, 1, 'b', 'ฮโวคาโด', 8),
(3, 1, 'c', 'ทุเรียน', 6),
(4, 1, 'd', 'มะขามป้อม', 12),
(5, 2, 'a', 'Green Hornet', 7),
(6, 2, 'b', 'Green Lantern', 5),
(7, 2, 'c', 'Super 8', 9),
(8, 2, 'd', 'Superman Return', 10);
--
-- Dumping data for table `questionaire`
--
INSERT INTO `questionaire` (`id`, `qid`, `question`) VALUES
(1, 1, 'คุณชอบทานผลไม้อะไรมากที่สุด?'),
(2, 2, 'คุณชอบภาพยนตร์เรื่องอะไรมากที่สุด?');
อันนี้โค้ด SQL ครับ
SELECT studentid, t1.qid, question, sum( score )
FROM answer t1, questionaire t2, choice_score t3
WHERE t1.qid = t2.qid
AND t1.choice = t3.choice
AND t1.qid = t3.qid
GROUP BY studentid, t1.qid
ORDER BY studentid, t1.qid
อันนี้คือผลลัพธ์ครับ
studentid qid question sum(score)
540001 1 คุณชอบทานผลไม้อะไรมากที่สุด? 28
540001 2 คุณชอบภาพยนตร์เรื่องอะไรมากที่สุด? 17
Date :
2011-06-15 13:38:18
By :
Unidentifier
ขอบคุณค่ะ จะลองทำดูน่ะค่ะ
ถ้าไม่ได้ยังไงก็ต้องขอรบกวนอีกรอบ ขอบคุณค่ะ
Date :
2011-06-15 13:46:35
By :
Baitong_ch
ถ้าต้องการหาคะแนนรวมของนักเรียนแต่ละคนก็ตามนี้เลยครับ
SELECT studentid,sum(score) as total FROM answer t1,questionaire t2,choice_score t3
WHERE t1.qid=t2.qid and t1.choice=t3.choice and t1.qid=t3.qid
group by studentid
order by studentid
และผลลัพธ์ครับ
studentid total
540001 45
Date :
2011-06-15 13:47:36
By :
Unidentifier
ขอโทดน่ะค่ะ
คือพอเราเอาไปประยุกต์ใช้ในการเขียน PHP เขียนอย่างไรดีค่ะ
คือไม่ค่อยจะเข้าใจวิธีการเขียน PHP อะค่ะ
Date :
2011-06-15 14:06:45
By :
Baitong_ch
1.)งั้นต้องอธิบายโจทก์ทั้งหมดมาให้ผมฟังก่อน
2.)และโครงสร้างตารางทั้งหมดที่ทำไว้แล้ว
3.)บอกความต้องการ หรืออธิบายคร่าวๆถึงแนวคิดของตัวเอง
Date :
2011-06-15 14:21:04
By :
Unidentifier
เมื่อคนทำการกรอกข้อมูลเข้ามา เพื่อทำการทดสอบ
โดยการทดสอบแบ่งออกเป็น 2 ประเภท คือ อัตนัย กับ ปรนัย
ในส่วนของปรนัยเมื่อเข้ามาคลิกเพื่อทำการทดสอบ
ก็จะแสดงข้อสอบทั้งหมด พร้อมตัวเลือก
โดยหลักการให้คะแนนคือ เมื่อคนทำแบบทดสอบปรนัยเสร็จก็จะแสดงคะแนนที่คนนั้นได้ทำ
ซึ่งคะแนนแต่ละข้อก็มีหลักเกณฑ์การให้ไม่เท่ากัน
ตรงส่วนอื่นไม่ติดอะไรติดแต่ตรงปรนัยนี้แหละค่ะ
โครงสร้างข้อมูลที่เกี่ยวข้องกับปรนัยมีแต่ตาราง member อะค่ะ เพราะมีการดึง mid มาใช้
--
-- โครงสร้างตาราง `member`
--
CREATE TABLE `member` (
`mid` int(11) NOT NULL auto_increment,
`mname` varchar(50) NOT NULL,
`mlastname` varchar(50) NOT NULL,
`mposition` varchar(50) NOT NULL,
`date` date NOT NULL,
PRIMARY KEY (`mid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=79 ;
--
-- dump ตาราง `member`
--
ยังไงก็ช่วยด้วยน่ะค่ะ ขอบคุณค่ะ
Date :
2011-06-15 14:34:07
By :
Baitong_ch
อยากให้ช่วยระดับไหนครับ(โค้ดทั้งหมด php+mysql ??) คือที่ผมเขียนไปก่อนหน้านี้น่าจะพอทำต่อได้น่ะครับ
คือตั้งแต่
1.)หน้าอินพุทโจทก์ข้อสอบและคำตอบปรนัย
2.)หน้าแสดงข้อสอบ เพื่อรอการเลือกคำตอบจากผู้ใช้
3.)หน้าแสดงชื่อผู้ทดสอบ, คำตอบและคะแนนที่ได้
3.1 แสดงคำถามและคำตอบและคะแนนของผู้ทดสอบทีละข้อจนครบ
3.2 แสดงคะแนนรวมเพียงอย่างเดียว
Date :
2011-06-15 15:12:31
By :
Unidentifier
ช่วยโค้ดทั้งหมด php+mysql ตรงส่วนปรนัยที่ติดอยู่นี้แหละค่ะ พี่จะว่าอะไรไหม
เพราะส่วนนี้นู๋ติดจิงๆๆ
1.)หน้าอินพุทโจทก์ข้อสอบและคำตอบปรนัย
2.)หน้าแสดงข้อสอบ เพื่อรอการเลือกคำตอบจากผู้ใช้
3.)หน้าแสดงชื่อผู้ทดสอบ, คำตอบและคะแนนที่ได้
3.2 แสดงคะแนนรวมเพียงอย่างเดียว
แสดงคะแนนรวมอย่างเดียวก็พอ ขอบคุณค่ะ
Date :
2011-06-15 15:18:39
By :
Baitong_ch
คืนนี้ค่อยมาดูน่ะครับ จะเขียนให้ตอนดึกๆ หลังเที่ยงคืนค่อยแวะมา
โปรเจคส่งอาจารย์หรอครับงานนี้
Date :
2011-06-15 15:24:15
By :
Unidentifier
ใช่ค่ะ โดนเปลี่ยนแล้วเปลี่ยนอีก ขอบคุนพี่มากน่ะค่ะ
งั้นขอไปทำส่วนอื่นๆๆต่อ
ขอบคุณค่ะ^^
ประวัติการแก้ไข 2011-06-15 15:26:36
Date :
2011-06-15 15:26:08
By :
Baitong_ch
เรียนอยู่ที่ไหนครับ??
Date :
2011-06-15 16:19:17
By :
Unidentifier
เรียนแถวๆๆนี้แหลพี่ ^^
ขอบคุณล่วงหน้าน่ะค่ะ ตอนนี้ทำส่วนอัตนัยเสร็จแล้ว เดี๋ยวทำส่วนลงคะแนนต่อ.
Date :
2011-06-15 16:32:35
By :
Baitong_ch
มันเยอะอยู่นาาา ทำเท่าที่มีเวลาน่ะครับ
Date :
2011-06-15 17:01:27
By :
๊Unidentifier
ค่ะ ขอบคุณค่ะ นู๋ก็จะทำให้เต็มที่เหมือนกัน
ประวัติการแก้ไข 2011-06-15 17:14:14
Date :
2011-06-15 17:13:40
By :
Baitong_ch
ก็ว่ากันไปครับ นั่งให้กำลังใจละกัน
Date :
2011-06-16 01:47:50
By :
PlaKriM
Date :
2011-06-16 12:26:34
By :
sakuraei
ยังไงค่ะพี่ O_o?
Date :
2011-06-16 13:12:02
By :
Baitong_ch
เพิ่งเริ่ม ยังไม่เสร็จครับ
Date :
2011-06-16 13:41:00
By :
sakuraei
พี่่หายไปเลย
พอดีลองทำอีกแบบนึงผลลัพท์ได้ตามต้องการ แต่ก็ไม่ผ่าน
เพราะทำเป็นแบบโชว์คำถามทั้งหมดมาก่อน แล้วค่อยคลิกเลือกทำทีละข้อ คลิกส่งคำตอทีละข้อ
แต่ก็ไม่ผ่าน
เพราะว่าต้องการแบบโชว์คำถามคำตอบในหน้าเดียว พอกดส่งก็รู้ผลเลยว่าได้คะแนนเท่าไหร่ '^'
Date :
2011-06-16 18:02:49
By :
Baitong_ch
ถ้าทำเสร็จจะเอาโค้ดมาวางให้น่ะครับ
Date :
2011-06-17 02:27:31
By :
sakuraei
Load balance : Server 02