Development:Matching question type: Difference between revisions
No edit summary |
|||
Line 41: | Line 41: | ||
==Question options object== | ==Question options object== | ||
The $questions->options | The $questions->options object has a single property ''''subquestions'''' which holds an array of all the records from the quiz_match_sub table for this question, i.e., all the question-answer pairs, indexed by the ids. | ||
==State options object== | |||
The $state->options object has a single property ''''subquestions'''' which holds an array of objects representing the question-answer pairs, indexed by the ids. Each entry from the table is an object with the following properties: | |||
;id | |||
;question | |||
;questiontext | |||
;answertext | |||
;options | |||
The '''options''' property in turn is an object with a single property '''answers''' which is an array indexed by .... Oh, who made this so complicated? | |||
[[Category:Developer]] | [[Category:Developer]] | ||
[[Category:Quiz]] | [[Category:Quiz]] |
Revision as of 17:47, 5 February 2006
Template:Questiontype developer docs
Database tables
quiz_match
This table is only used in the code for saving matching questions and can therefore be considered redundant.
- id
- int(10) unsigned NOT NULL auto_increment,
Primary key
- question
- int(10) unsigned NOT NULL default '0',
- Foreign key to the id field in the quiz_questions table
- subquestions
- varchar(255) NOT NULL default ,
quiz_match_sub
The quiz_match_sub extends the quiz_questions table. It stores the pairs of questions and answers (as strings) that need to be matched for a correct solution.
- id
- int(10) unsigned NOT NULL auto_increment,
- question
- int(10) unsigned NOT NULL default '0',
- Foreign key to the id field in the quiz_questions table
- questiontext
- text NOT NULL,
- answertext
- varchar(255) NOT NULL default ,
Response storage
The matching questiontype needs to store information about the order of its subquestions and the selected responses. Because each subquestion is identified by one record in the quiz_match_sub table, the ids of this table are used to identify both the question and the response part. For each subquestion a '-'-separated pair is created, giving first the id of the record that provided the subquestion and then the id of the record that provided the selected response. E.g. 1-3 means that the answer of the third question was selected for the first subquestion. Correct responses are always pairs of identical ids, e.g 2-2. If no response is selected, the second id in the pair is set to '0'. These pairs are then put into a comma separated list to allow each subquestion to store a response.
Question options object
The $questions->options object has a single property 'subquestions' which holds an array of all the records from the quiz_match_sub table for this question, i.e., all the question-answer pairs, indexed by the ids.
State options object
The $state->options object has a single property 'subquestions' which holds an array of objects representing the question-answer pairs, indexed by the ids. Each entry from the table is an object with the following properties:
- id
- question
- questiontext
- answertext
- options
The options property in turn is an object with a single property answers which is an array indexed by .... Oh, who made this so complicated?