Welcome, Guest
Username: Password: Remember me

TOPIC: QCM d'évaluation

QCM d'évaluation 3 years 1 month ago #57781

Bonjour,

Je cherche à faire un questionnaire d'évaluation sous forme de QCM avec un système de notation par groupe de question.
Le but est de pouvoir avoir une note.
J'ai vu qu'il était possible de faire des évaluations sur ce tutoriel cependant, dans mon cas je cherche du binaire (1 ou plusieurs réponses justes, le reste c'est 0 point).
Y a t'il possibilité de répondre à ce besoin.

Par avance merci,

Aurélien
The administrator has disabled public write access.

Re: QCM d'évaluation 3 years 1 month ago #57784

  • DenisChenu
  • DenisChenu's Avatar
  • OFFLINE
  • Moderator Lime
  • Posts: 5845
  • Thank you received: 715
  • Karma: 222
Réponse multiple ?

Certaines réponses sont bonnes et d'autres fausse ?

Dans ce cas, le changement de base de la version 1.90 à entrainer une dégradation. Tu peux utiliser la version 1.87 qui permettais cette possibilité :)
The administrator has disabled public write access.

Re: QCM d'évaluation 3 years 1 month ago #57795

C'est ça :
- Réponses multiples
- Des réponses justes et des réponses fausses
- Avoir un cumul des "points" "marqués" par groupe de questions.
The administrator has disabled public write access.

Re: QCM d'évaluation 3 years 1 month ago #57801

  • DenisChenu
  • DenisChenu's Avatar
  • OFFLINE
  • Moderator Lime
  • Posts: 5845
  • Thank you received: 715
  • Karma: 222
Aurelienazerty wrote:
C'est ça :
- Réponses multiples
- Des réponses justes et des réponses fausses
- Avoir un cumul des "points" "marqués" par groupe de questions.
OK,

Il faut donc utiliser la version 1.87 : sourceforge.net/projects/limesurvey/file...rvey_stable/1.87%2B/
The administrator has disabled public write access.
The following user(s) said Thank You: Aurelienazerty

Re: QCM d'évaluation 3 years 1 month ago #57816

Oui en effet, ça a l'air d'être bon. Merci !
Je n'ai pas encore trouvé le moyen de voir le cumul des points marqués par le candidat (et par groupe de question) mais je cherche en attendant que la documentation soit de nouveau en ligne.
The administrator has disabled public write access.

Re: QCM d'évaluation 3 years 1 month ago #57830

J'ai beau fouiller, je ne trouve pas cette fonctionnalité.
Existe-t-elle oui faut il le faire à la main en tapant dans la Bdd ?
The administrator has disabled public write access.

Re: QCM d'évaluation 3 years 1 month ago #57832

  • Nickko
  • Nickko's Avatar
  • NOW ONLINE
  • LimeSurvey Team
  • Posts: 1929
  • Thank you received: 218
  • Karma: 44
En effet, il ne doit y avoir que l'utilisateur qui voit ces points.
Nickko
Ergonome / Usability expert
Last Edit: 3 years 1 month ago by Nickko.
The administrator has disabled public write access.
The following user(s) said Thank You: Aurelienazerty

Re: QCM d'évaluation 3 years 1 month ago #57843

Ok merci, je vais donc faire une page à part. En espérant que le modèle de données ne soit pas trop complexe à comprendre.
The administrator has disabled public write access.

Re: QCM d'évaluation 3 years 1 month ago #57907

Voilà si ça intéresse QQ1, voilà le script que j'ai fais pour avoir le résultat. C'est sale et fais sans utiliser le framework, mais le principe y est :
<?php 
//Code à la sale
//Param : id_questionnaire, id_candidat
if (isset($_POST['id_questionnaire'])) {
	$id_questionnaire = $_POST['id_questionnaire'];
} else {
	$id_questionnaire = -1;
}
if (isset($_POST['id_candidat'])) {
	$id_candidat = $_POST['id_candidat'];
} else {
	$id_candidat = -1;
}
 
$db = mysql_connect('localhost', 'root', ''); 
mysql_select_db('limesurvey',$db); 
 
 
$sql = "SELECT * from lime_surveys_languagesettings"; 
$req = mysql_query($sql, $db) or die('Erreur SQL !<br>' . $sql . '<br>'.mysql_error()); 
 
$options_questionnaires = '';
while($data = mysql_fetch_array($req))  {
	if ($data['surveyls_survey_id'] == $id_questionnaire) {
		$selected = ' selected="selected" ';
	} else {
		$selected = '';
	}
	$options_questionnaires .= '<option value="' . $data['surveyls_survey_id'] . '" ' . $selected . '>' . $data['surveyls_title'] . '</option>';
}
 
if ($id_questionnaire != -1) {
	$sql = "SELECT * from lime_tokens_" . $id_questionnaire; 
	$req = mysql_query($sql) or die('Erreur SQL !<br>' . $sql . '<br>'.mysql_error()); 
 
	$options_candidat = '';
	while($data = mysql_fetch_array($req))  {
		if ($data['tid'] == $id_candidat) {
			$selected = ' selected="selected" ';
		} else {
			$selected = '';
		}
		$options_candidat .= '<option value="' . $data['tid'] . '" ' . $selected . '>' . $data['firstname'] . ' ' . $data['lastname'] . '</option>';
	}
}
 
//mysql_close();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<title>Résultats aux questionnaires</title>
		<meta http-equiv="content-Type" content="text/html;CHARSET=UTF-8" />
		<meta http-equiv="content-language" content="fr" />
	</head>
	<body>
		<form method="post">
			Selectionnez le questionnaire :
			<select name='id_questionnaire'>
				<option value='-1'></option>
				<?php echo $options_questionnaires; ?>
			</select>
			<br />
			<?php if ($id_questionnaire != -1) : ?>
			Selectionnez le candidat :
			<select name='id_candidat'>
				<option value='-1'></option>
				<?php echo $options_candidat; ?>
			</select>
			<br />
			<?php endif; ?>
			<input type="submit" value="Voir">
		</form>
		<br />
		<?php 
		if ($id_questionnaire != -1 && $id_candidat != -1) {
			$sql = 'SELECT * FROM `lime_groups` where sid = ' . $id_questionnaire;
			$req = mysql_query($sql, $db) or die('Erreur SQL !<br>' . $sql . '<br>'.mysql_error());
 
			$totalGeneral = 0;
			$totalGeneralCandidat = 0;
 
			while($data = mysql_fetch_array($req))  {
				$id_group = $data['gid'];
 
				$sql = '
					SELECT sum(assessment_value) pointquestion
					FROM lime_questions q
					JOIN lime_answers a
						ON a.qid = q.qid
					WHERE q.sid = ' . $id_questionnaire . ' 
					AND q.gid = ' . $id_group . '
				';
				$req2 = mysql_query($sql, $db) or die('Erreur SQL !<br>' . $sql . '<br>'.mysql_error());
				$total = 0;
				while($data2 = mysql_fetch_array($req2))  {
					$total += $data2['pointquestion'];
				}
				//Les résultats de la personne Sont stock dans une table à part
				//dans des colonnes de type n°QuestionnaireXn°GroupeXn°questionXn°code_question
				//Pour faire court, on filtre qu'avec les "bonnes réponses"
				$sql = '
					SELECT q.qid, a.code, a.assessment_value
					FROM lime_questions q
					JOIN lime_answers a
						ON a.qid = q.qid
					WHERE q.sid = ' . $id_questionnaire . ' 
					AND q.gid = ' . $id_group . ' 
					AND a.assessment_value <> 0 
				';
				$req2 = mysql_query($sql, $db) or die('Erreur SQL !<br>' . $sql . '<br>'.mysql_error());
				$totalCandidat = 0;
				while($data2 = mysql_fetch_array($req2))  {
					$id_question = $data2['qid'];
					$code_reponse = $data2['code'];
					$coef = $data2['assessment_value'];
					$totalGeneral += $coef;
					$code = $id_questionnaire . 'X' . $id_group . 'X' . $id_question . $code_reponse;
					$sql = '
						SELECT ' . $code . '
						FROM lime_survey_' . $id_questionnaire . ' s
						INNER JOIN lime_tokens_' . $id_questionnaire . ' t
							ON t.token = s.token 
						WHERE tid = ' . $id_candidat . ' 
						AND  ' . $code . ' LIKE "Y"
					';
					//die($sql);
					$req3 = mysql_query($sql, $db) or die('Erreur SQL !<br>' . $sql . '<br>'.mysql_error());
					while($data3 = mysql_fetch_array($req3))  {
						$totalCandidat += $coef;
						$totalGeneralCandidat += $coef;
					}
				}
 
				echo '<b>' .  $data['group_name'] . '</b> : ' . $totalCandidat . ' / ' . $total . '<br />';
			}
			echo '<br /><b>Total</b> : ' . $totalGeneralCandidat . ' / ' . $totalGeneral . '<br />';
		}
		?>
	</body>
</html>
The administrator has disabled public write access.

Re: QCM d'évaluation 3 years 1 month ago #57908

  • DenisChenu
  • DenisChenu's Avatar
  • OFFLINE
  • Moderator Lime
  • Posts: 5845
  • Thank you received: 715
  • Karma: 222
Salut,

Un grand merci pour le retour , :)

Juste une remarque importante, il faut que tu filtre tes identifiants, sinon il y a un sacré risque de sécurité.
<?php
if (isset($_POST['id_questionnaire'])) {
	$id_questionnaire = intval($_POST['id_questionnaire']);
} else {
	$id_questionnaire = -1;
}
if (isset($_POST['id_candidat'])) {
	$id_candidat = intval($_POST['id_candidat']);
} else {
	$id_candidat = -1;
}

Comme les identifiant sont obligatoirement des integer, on les force directement :)
The administrator has disabled public write access.
The following user(s) said Thank You: Aurelienazerty
Moderators: Nickko
Time to create page: 0.254 seconds
Donation Image