diff --git a/competency_iena_competency_students_2.php b/competency_iena_competency_students_2.php
index 506ea17a5628d3592aa4c5d3d2434a537b47c094..726151e0448d0b8f1b1fddf0be2e28183940f5a1 100644
--- a/competency_iena_competency_students_2.php
+++ b/competency_iena_competency_students_2.php
@@ -176,10 +176,10 @@ if (count($course_cpts) === 0) {
 	/* ===== FILTERS ===== */
 	/* There is 2 forms witch use data from each other while submitting. */
 
-	echo "<div class='alert alert-secondary row' id='stud_filters'>"; /* Début filtres. */
+	echo "<div class='alert alert-secondary row'>"; /* Début filtres. */
 	echo "<div class='col-12'>";
 
-	echo "<form action='{$CFG->wwwroot}/blocks/competency_iena/competency_iena_competency_students_2.php#stud_filters' class='form-inline'>";
+	echo "<form action='{$CFG->wwwroot}/blocks/competency_iena/competency_iena_competency_students_2.php' class='form-inline'>";
 	echo "<input type='text' hidden name='courseid' value='{$COURSE->id}'>";
 	echo "<input type='text' hidden name='competencyid' value='{$current_cpt->id}'>";
 
@@ -214,11 +214,11 @@ if (count($course_cpts) === 0) {
 	echo "<label>Évaluation demandée</label><select name='review' class='custom-select mr-3'><option value='all'";
 	if ( $form_review == 'all' ) { echo 'selected'; }
 	echo ">Tous</option>
-	<option value='0'";
-	if ( $form_review == '0' ) { echo 'selected'; }
+	<option value='no'";
+	if ( $form_review == 'no' ) { echo 'selected'; }
 	echo ">Non</option>
-	<option value='1'";
-	if ( $form_review == '1' ) { echo 'selected'; }
+	<option value='yes'";
+	if ( $form_review == 'yes' ) { echo 'selected'; }
 	echo ">Oui</option>
 	</select>";
 	
@@ -230,126 +230,98 @@ if (count($course_cpts) === 0) {
 
 	/* ===== STUDENT LIST ===== */
 
-	/* NB : un étudiant n'existe pas en base competency_usercompcourse tant que personne n'a accédé à une page de compétence le concernant. Donc pour afficher des données, il faut boucler sur les utilisateurs et pour chaque utilisateur sur les données en base : si correspondance, on peut afficher de "vraies" données (p.ex. "Compétent"), sinon, afficher des données vides car de toutes façon elles n'existent pas (p.ex. "Non évalué"). */
+	/* NB : un étudiant n'existe pas en base competency_usercompcourse tant que personne n'a accédé à une page de compétence le concernant. */
 
 	/* IF all params are NULL => do not search students, just display dashboard. */
 	if ( isset($_GET['grade']) || isset($_GET['proficiency']) || isset($_GET['review']) ) {
 
-		if ( !isset($_GET['grade']) || $_GET['grade'] == 'all' ) {
-			$sql_grade = "";
-		} elseif ( $_GET['grade'] == 'no' ) {
-			$sql_grade = " AND grade IS NULL";
-		} else {
-			$sql_grade = " AND grade = ?";
-		}
-		if ( !isset($_GET['proficiency']) || $_GET['proficiency'] == 'all' ) {
-			$sql_proficiency = "";
-		} elseif ($_GET['proficiency'] == 'no') {
-			/* not proficient is "= 0" => "NULL && 0" */
-			$sql_proficiency = " AND (proficiency = ? OR proficiency IS NULL)";
-		} else {
-			$sql_proficiency = " AND proficiency = ?";
-		}
-
 		echo "<div class='row'>"; /* Début student list. */
 		echo "<div class='col-12'>";
 
-		/* $course_cpts_ids IN sql (idem pour studs) */
-		$course_cpts_ids = array();
-		foreach ($course_cpts as $key => $cpt) {
-			$course_cpts_ids[] = intval($cpt->get('id'));
-		}
-		/* $in_sql => string "IN (?, ?, etc.) // $params array(1, 2, etc.) */
-		/* already defined list($in_sql_stud_ids, $params_stud_ids) = $DB->get_in_or_equal($student_ids);*/
-		list($in_sql_cpts_ids, $params_cpts_ids) = $DB->get_in_or_equal($course_cpts_ids);
-		$sql = "SELECT * FROM {competency_usercompcourse} 
+		$sql = "SELECT id, userid, proficiency, grade FROM {competency_usercompcourse} 
 		WHERE courseid = ?
-		AND userid {$in_sql_stud_ids} AND competencyid = ?{$sql_grade}{$sql_proficiency}";
+		AND userid {$in_sql_stud_ids} AND competencyid = ?";
 		$params = array();
 		$params[] = $courseid;
 		$params = array_merge($params, $params_stud_ids);
 		$params[] = $current_cpt->id;
-		if ( isset($_GET['grade']) && $_GET['grade'] !== 'all' && $_GET['grade'] !== 'no' ) {
-			$params[] = $_GET['grade'];
-		}
-		if ( isset($_GET['proficiency']) && $_GET['proficiency'] !== 'all' ) {
-			$params[] = $_GET['proficiency'] == 'no' ? 0 : 1;
-		}
 		$course_cpts = $DB->get_records_sql($sql, $params);
 
-		/* LIST PRINT */
-
-		$include_all_studs = false;
-		if ( isset($_GET['grade']) && isset($_GET['proficiency']) ) {
-			if ( $_GET['grade'] == 'all' && $_GET['proficiency'] == 'all' ) {
-				$include_all_studs = true;
-			}
-			if ( $_GET['grade'] == 'all' && $_GET['proficiency'] == 'no' ) {
-				$include_all_studs = true;
-			}
-			if ( $_GET['grade'] == 'no' && $_GET['proficiency'] == 'all' ) {
-				$include_all_studs = true;
-			}
-			if ( $_GET['grade'] == 'no' && $_GET['proficiency'] == 'no' ) {
-				$include_all_studs = true;
-			}
-		}
-
-		$list_count = 0;
+		$cpt_studs = array();
 		foreach ($students as $student) {
-			$grade_d = "-";
-			$proficiency_d = "Non";
-			$display = false;
+			$cpt_stud = new stdClass();
+			$cpt_stud->id = $student->id;
+			$cpt_stud->firstname = $student->firstname;
+			$cpt_stud->lastname = $student->lastname;
+			$cpt_stud->proficiency = NULL;
+			$cpt_stud->grade = NULL;
+			$cpt_stud->review = NULL;
 			foreach ($course_cpts as $course_cpt) {
 				if ( $course_cpt->userid == $student->id ) {
-					$display = true;
-					$grade_d = $course_cpt->grade == NULL ? "-" : $current_cpt->scale[$course_cpt->grade - 1];
-					$proficiency_d = $course_cpt->proficiency == 1 ? "Oui" : "Non";
-					echo "<p>$grade_d</p>";
-					echo "<p>$proficiency_d</p>";
+					$cpt_stud->proficiency = $course_cpt->proficiency;
+					$cpt_stud->grade = $course_cpt->grade;
+					foreach ($reviews_data as $review) {
+						if ( $review->userid == $student->id ) {
+							$cpt_stud->review = $review->status;
+							break;
+						}
+					}
 					break;
 				}
 			}
-			if ( $display || $include_all_studs ) {
-				$list_count++;
-				$color = $proficiency_d == "Oui" ? "success" : "secondary";
-				echo "<div class='alert alert-{$color}'>";
-				echo "<h4>{$student->firstname} {$student->lastname} ({$student->id})</h4>";
-				echo "<p>Évaluation : {$grade_d}</p>";
-				echo "<p>Acquis : {$proficiency_d}</p>";
-				echo "<p>Demande d'évaluation : {OUI/NON}</p>";
-				echo "</div>";
-			}
+			array_push($cpt_studs, $cpt_stud);
 		}
-		echo "$list_count";
-
-		echo "<pre>";
-
-		// echo "<h1>review data</h1>";
-		// var_dump($reviews_data);
-
-		// echo "<h1>course user comp list</h1>";
-		// foreach ($course_cpts as $key => $course_cpt) {
-		// 	var_dump($course_cpt);
-		// 	echo "<hr>";
-		// }
-
-		// echo "<h1>students</h1>";
-		// var_dump($students);
-
-		echo "</pre>";
 
-		/* AFFICHER */
-		/* Pour chaque étudiant du cours */
-		/* Pour chaque étudiant résultat de la requête */
-		/* Si l'étudiant correspond */
-		/* Afficher données */
-		/* Sinon */
-		/* Afficher ligne standard vide car étu pas en base car jamais accédé à la page cpt */
+		if ( isset($_GET['review']) && $_GET['review'] == 'yes' ) {
+			$cpt_studs = array_filter($cpt_studs, function ($stud) {
+				return $stud->review == 1;
+			});
+		} elseif ( isset($_GET['review']) && $_GET['review'] == 'no' ) {
+			$cpt_studs = array_filter($cpt_studs, function ($stud) {
+				return $stud->review != 1;
+			});
+		}
 
+		if ( isset($_GET['proficiency']) && $_GET['proficiency'] == 'yes' ) {
+			$cpt_studs = array_filter($cpt_studs, function ($stud) {
+				return $stud->proficiency == 1;
+			});
+		} elseif ( isset($_GET['proficiency']) && $_GET['proficiency'] == 'no' ) {
+			$cpt_studs = array_filter($cpt_studs, function ($stud) {
+				return $stud->proficiency != 1;
+			});
+		}
 
-		
+		if ( isset($_GET['grade']) && $_GET['grade'] == 'no' ) {
+			$cpt_studs = array_filter($cpt_studs, function ($stud) {
+				return $stud->grade == NULL;
+			});
+		} elseif ( isset($_GET['grade']) && $_GET['grade'] != 'all' ) {
+			$cpt_studs = array_filter($cpt_studs, function ($stud) {
+				return $stud->grade == $_GET['grade'];
+			});
+		}
 
+		if ( count($cpt_studs) == 0 ) {
+			echo "<div class='alert alert-warning'>Aucun étudiant ne correspond à la sélection. </div>";
+		} else {
+			foreach ($cpt_studs as $cpt_stud) {
+				$proficient_class = $cpt_stud->proficiency == 1 ? " list-group-item-success" : "";
+				$grade_d = $cpt_stud->grade == NULL ? "-" : $current_cpt->scale[$cpt_stud->grade - 1];
+				$proficiency_d = $cpt_stud->proficiency == 1 ? "Oui" : "Non";
+				echo "
+				<a href='#?courseid={$courseid}&studentid={$cpt_stud->id}&competencyid={$current_cpt->id}' class='list-group-item list-group-item-action{$proficient_class}'>
+				<div class='d-flex w-100 justify-content-between'>
+				<h3 class='mb-1 iena-cpt-action-title'>{$cpt_stud->firstname} {$cpt_stud->lastname}</h3>";
+				if ($cpt_stud->review == 1) {
+					echo "<small class=''>Évaluation demandée</small>";
+				}
+				echo "</div>
+				<p class='' style='margin-bottom: 0;'>Évaluation : <em>{$grade_d}</em></p>
+				<small class=''>Acquis : {$proficiency_d}</small>
+				</a>";
+			}
+		}
 
 		echo "</div>";
 		echo "</div>"; /* Fin student list. */