Moodle plugins directory: Questionnaire | Moodle.org
Questionnaire
Activities ::: mod_questionnaire
Maintained by Mike Churchward
Custom Survey Creation
Latest release:
15254 sites
3k downloads
230 fans
Current versions available: 19
Create your own surveys using this tool.
SUPPORT DISCUSSION: http://moodle.org/mod/forum/view.php?id=2642
DEVELOPERS NOTE - Questionnaire is tracked in Github at https://github.com/remotelearner/moodle-mod_questionnaire. Contact Mike Churchward if you want "push" access.
(originally based on phpESP)
/plugins/mod
Contributors
Mike Churchward (Lead maintainer)
Joseph Rézeau: Former co-maintainer
Please login to view contributors details and/or to contact them
It is a tab when you are looking at the results.
There's a bug with this plugin in that it doesn't work with MySQL 8.0.12... Given that MySQL 8.0.x is now GA, any chance you can get this fixed? I'm using this on a live server now, the semester has started and we've only just picked up on this issue.
One problem I found is that "rank" is now a reserved word, but got around that using backticks, however couldn't get the rest of it to work.
Here's the debugging info...
Debug info: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'rank
FROM wsu_moodle_cybersec_questionnaire_response qr
' at line 3
SELECT CONCAT_WS('_', qr.id, 'checkboxes', qrm.id) AS id,
qr.submitted, qr.complete, qr.grade, qr.userid, u.firstnamephonetic, u.lastnamephonetic, u.middlename, u.alternatename, u.firstname, u.lastname, u.username, u.department, u.institution, u.id as usrid, qr.id AS rid, qrm.question_id,
qrm.choice_id, qro.response AS response, 0 AS rank
FROM wsu_moodle_cybersec_questionnaire_response qr
JOIN wsu_moodle_cybersec_questionnaire_resp_multiple qrm ON qrm.response_id = qr.id
AND qr.survey_id = ? AND qr.complete = ?
LEFT JOIN wsu_moodle_cybersec_questionnaire_response_other qro ON qro.response_id = qr.id AND qro.choice_id = qrm.choice_id
LEFT JOIN wsu_moodle_cybersec_user u ON u.id = qr.userid
WHERE qr.id = ? UNION ALL
SELECT CONCAT_WS('_', qr.id, 'textbox', qrt.id) AS id,
qr.submitted, qr.complete, qr.grade, qr.userid, u.firstnamephonetic, u.lastnamephonetic, u.middlename, u.alternatename, u.firstname, u.lastname, u.username, u.department, u.institution, u.id as usrid, qr.id AS rid, qrt.question_id,
0 AS choice_id, qrt.response AS response, 0 AS rank
FROM wsu_moodle_cybersec_questionnaire_response qr
JOIN wsu_moodle_cybersec_questionnaire_response_text qrt
ON qrt.response_id = qr.id
AND qr.survey_id = ? AND qr.complete = ?
LEFT JOIN wsu_moodle_cybersec_user u ON u.id = qr.userid
WHERE qr.id = ? ORDER BY usrid, id
[array (
0 => '2',
1 => 'y',
2 => 3,
3 => '2',
4 => 'y',
5 => 3,
)]
Error code: dmlreadexception
Stack trace:
line 486 of /lib/dml/moodle_database.php: dml_read_exception thrown
line 1184 of /lib/dml/mysqli_native_moodle_database.php: call to moodle_database->query_end()
line 2597 of /mod/questionnaire/questionnaire.class.php: call to mysqli_native_moodle_database->get_recordset_sql()
line 2782 of /mod/questionnaire/questionnaire.class.php: call to questionnaire->get_survey_all_responses()
line 1902 of /mod/questionnaire/questionnaire.class.php: call to questionnaire->generate_csv()
line 1599 of /mod/questionnaire/questionnaire.class.php: call to questionnaire->response_send_email()
line 277 of /mod/questionnaire/questionnaire.class.php: call to questionnaire->submission_notify()
line 75 of /mod/questionnaire/complete.php: call to questionnaire->view()
This server is
Moodle 3.5.1+ (Build: 20180720)
MySQL 8.0.12
PHP 7.2.8.1.16.04.1.1
Much appreciated!
Cheers,
Ray
Cheers,
Ray
Debug info: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'rank
FROM mdl_questionnaire_response qr
JOIN mdl_que' at line 3
SELECT CONCAT_WS('_', qr.id, 'checkboxes', qrm.id) AS id,
qr.submitted, qr.complete, qr.grade, qr.userid, u.firstnamephonetic, u.lastnamephonetic, u.middlename, u.alternatename, u.firstname, u.lastname, u.username, u.department, u.institution, u.id as usrid, qr.id AS rid, qrm.question_id,
qrm.choice_id, qro.response AS response, 0 AS rank
FROM mdl_questionnaire_response qr
JOIN mdl_questionnaire_resp_multiple qrm ON qrm.response_id = qr.id
AND qr.survey_id = ? AND qr.complete = ?
LEFT JOIN mdl_questionnaire_response_other qro ON qro.response_id = qr.id AND qro.choice_id = qrm.choice_id
LEFT JOIN mdl_user u ON u.id = qr.userid
ORDER BY usrid, id
[array (
0 => '18034',
1 => 'y',
)]
Error code: dmlreadexception
Cheers
The latest versions in the MOODLE_35_STABLE and MOODLE_34_STABLE branches have fix for this. You can get them from Github.
https://github.com/PoetOS/moodle-mod_questionnaire/tree/MOODLE_35_STABLE
https://github.com/PoetOS/moodle-mod_questionnaire/tree/MOODLE_34_STABLE
I made a questionnaire (Two sorts of questions : text and single response) which is deployed on a lot of courses (approximately 100). I must download every results on csv files. Is it possible to use an SQL request to recover all results ? If yes, have you a model ?
Thanks,
Alain
Thank you for this very useful plugin !
I have noticed the possibility to save a draft and resume answering to the questionnaire, though I wonder if it would be possible to add a functionnality that would allow users who have already saved a draft to make a whole new submission (while keeping their previous answers as a separate draft). As of now, the only choice that is left when one has already saved a draft is to "resume participation" (and it is impossible to start a new one).
However, the questionnaire model I have created will be filled by student advisors who will gather information from various students willing to apply for a program in our school. It may well happen that some students won't be able to provide full information to complete the questionnaire in one shot. Thus, I would like advisors to be able to start filling the information for student A (submission 1), save it as a draft, then fill in the full form for student B (submission 2) before resuming and completing the submission for student A (submission 1). I know this might sound quite challenging but nothing ventured, nothing gained !
Thanks for helping anyway !
Best,
Yannick
I also wonder if it would be possible to add an "upload file" question type / field within questionnaires ? As a matter of fact, I would like users to be able to send a few PDF attachments while answering the questionnaire.
Thanks for reading and helping !
Best,
Yannick
Moodle 3.4.2 Version - noted an issue on submitting forms in a LAMP setup.
The UNION ALL in the query Fails on MYSQL.
The error in DEBUG is: Illegal mix of collations for operation UNION
Line 2597 in /mod/questionnaire/questionnaire.class.php
The Query Built results in: "qrb.choise_id AS response" (This is an Integer field)
and in the union calls in different field: "qrt.response AS response" (This is a text field)
All tables are in the same collation, however comparing an integer to a text field results in this issue.
The solution we ended up using was a FIX my MYSQL databases only:
Adding this line above the $DB-.get_recordset_sql function: (line 2600)
$allresponsessql = str_ireplace('qrb.choice_id AS response',
'qrb.choice_id COLLATE utf8_unicode_ci AS response', $allresponsessql);
This resolved the issue for us, but perhaps the SQL needs to be built differently so that integer fields are not unioned against text fields.
Cheers
I have created a questionnaire model in the hope that its contents would automatically synchronize within the questionnaires using it as their source of contents.
However, I wonder why the "content options" field only appears once in the settings (when adding a new questionnaire) and then disappears : would it be possible to be able to keep changing the content options of a questionnaire even after it was first added in the course ?
Thanks for helping,
Best,
Yannick Vrolant
I have created a questionnaire model in the hope that its contents would automatically synchronize within the questionnaires using it as their source of contents.
However, I wonder why the "content options" field only appears once in the settings (when adding a new questionnaire) and then disappears : would it be possible to be able to keep changing the content options of a questionnaire even after it was first added in the course ?
Thanks for helping,
Best,
Yannick Vrolant
Content options are only present to initially populate the new questionnaire with existing content (or not). It wouldn't make sense to have it available after creation. What would the use case be for that? Please, discuss this in the questionnaire forum so others can be involved.