diff --git a/admin/insert.php b/admin/insert.php
index 3a22ca4..5a50a8f 100644
--- a/admin/insert.php
+++ b/admin/insert.php
@@ -13,16 +13,46 @@
 	// Read from CSV
 	$inscrits = array_map('str_getcsv', file($csvname));
 	array_shift($inscrits); // remove header
+
+	foreach ($inscrits as $key => &$inscrit) {
+		$inscrit["key"] = $key;
+	}
+
 	shuffle($inscrits); // shuffle randomly
-	
+
+	$forceposraw = $_POST['forcepos'] ?? "[]";
+	$forcepos = json_decode($forceposraw, true);
+	foreach ($forcepos as $pos) {
+		if (!isset($pos["id"]) || !isset($pos["pos"])) continue;
+
+		// Switch entry with key |$pos["id"]| to position |$pos["pos"]|.
+		$key = -1;
+		foreach ($inscrits as $itKey => &$inscrit) {
+			if ($inscrit["key"] == $pos["id"]) {
+				$key = $itKey;
+				break;
+			}
+		}
+		if ($key === -1) continue;
+
+		// Switch places
+		$tmp = $inscrits[$pos["pos"]];
+		$inscrits[$pos["pos"]] = $inscrits[$key];
+		$inscrits[$key] = $tmp;
+	}
+
 	$start = 1;
 	$i = $start;
 	foreach ($inscrits as $user) {
 		$i = ($i + 1) % ($start + count($inscrits));
 		if ($i == 0) $i = $i + 1;
+		$nom = mysqli_real_escape_string($conn, $user[0]);
+		$curs = mysqli_real_escape_string($conn, $user[1]);
+		$grau = mysqli_real_escape_string($conn, $user[2]);
+		$password = mysqli_real_escape_string($conn, password_hash($user[3], PASSWORD_DEFAULT));
 		// Input values into SQL values
 		$template = "INSERT INTO `$dbname` (`id`, `nom`, `curs`, `grau`, `quimata`, `requested`, `mort`, `password`, `bits`)" .
-					" VALUES (NULL, '$user[0]', '$user[1]', '$user[2]', $i, 0, 0, '', ".(int)rand(1,512).")";
+					" VALUES (NULL, '$nom', '$curs', '$grau', $i, 0, 0, '$password', ".(int)rand(1,512).")";
 
 		if (!query($template)) die("An error ocurred." . $template);
 	}
