diff --git a/AdvancedSearch.php b/AdvancedSearch.php
index 40811b238975453119682a74396109b8c934ce3a..1e7df18063283c6d48a257316dac6ff43fc77abe 100644
--- a/AdvancedSearch.php
+++ b/AdvancedSearch.php
@@ -13,7 +13,7 @@
     <?php 
         include 'scripts/Functions.php';
         $ingredientsList = getAllIngredients();
-        ?>
+    ?>
 
     <div id="content">
         <div id="elementInput" class="autocomplete">
@@ -49,12 +49,31 @@
         <div id="searchDiv">
             <button onclick="performSearch();">Rechercher</button>
         </div>
-        <div id="chosenItemsOverview">
+        <div id="parametersDiv">
+            <h2>Autoriser des éléments manquants </h2>
+            <input id="AllowMissingCheckbox" type="checkbox" onclick="allowMissingClicked(this.checked);">
+            <h2>Autoriser des éléments non desirés </h2>
+            <input id="AllowUnwaentedCheckbox" type="checkbox" onclick="allowUnwantedClicked(this.checked);">
+            <h2>Nombre maximum de conditions non-satisfiées : </h2>
+            <input type="number" id="maxUnsatifiedInput" min="0" max="20" oninput="maxUnsatisfiedChanged(this.value);" value="0">
+        </div>
+        <div class="chosenItemsOverview">
             
         </div>
+        <div style="display: none;">
+            <div id="CI_Clone" class="chosenItem">
+                <img class="chosenItemImage" src="images/check.png" >
+                <h2 class="chosenItemName">Example</h2>
+                <button value="Clone" onclick="chosenItemCrossClicked(this)" class="chosenItemCross">X</button>
+            </div>
+        </div>
     </div>
 
     <script>
+        let ingredientsOverview = document.getElementsByClassName("chosenItemsOverview")[0];
+        let ingredientViewOriginal = document.getElementById('CI_Clone');
+        let inputField = document.getElementById('myInput');
+
         let chosenIngredients = new Map();
         let allIngredients = [<?php $first = true; foreach($ingredientsList as $ingredient) { if(!$first) echo ','; else $first = false; echo '"' . $ingredient . '"'; } ?>];
 
@@ -62,6 +81,21 @@
         var allowMissing = false;
         var maxUnsatisfied = 0;
 
+        function allowMissingClicked(status)
+        {
+            allowMissing = (status == 'checked');
+        }
+
+        function allowUnwantedClicked(status)
+        {
+            allowUnwanted = (status == 'checked');
+        }
+
+        function maxUnsatisfiedChanged(value)
+        {
+            maxUnsatisfied = value;
+        }
+
         function elementInputChange(val)
         {
             var toggleSwitch = document.getElementById('toggleWanted');
@@ -80,9 +114,6 @@
                     document.getElementById('na').checked = "";
                     document.getElementById('off').checked = "checked";
                 }
-                else{
-
-                }
             }
             else
             {
@@ -96,19 +127,40 @@
         function setElementWanted()
         {
             var element = document.getElementById('myInput').value;
-            chosenIngredients.set(element, 'wanted');
+            setElementWantedByName(element);
+        }
+
+        function setElementWantedByName(name)
+        {
+            chosenIngredients.set(name, 'wanted');
+            appendIngredient(name, 'wanted');
+            if(inputField.value == name) elementInputChange(name);
         }
 
         function setElementNone()
         {
             var element = document.getElementById('myInput').value;
-            chosenIngredients.delete(element);
+            setElementNoneByName(element);
+        }
+
+        function setElementNoneByName(name)
+        {
+            chosenIngredients.delete(name);
+            removeIngredient(name);
+            if(inputField.value == name) elementInputChange(name);
         }
 
         function setElementUnwanted()
         {
             var element = document.getElementById('myInput').value;
-            chosenIngredients.set(element, 'unwanted');
+            setElementUnwantedByName(element);
+        }
+
+        function setElementUnwantedByName(name)
+        {
+            chosenIngredients.set(name, 'unwanted');
+            appendIngredient(name, 'unwanted');
+            if(inputField.value == name) elementInputChange(name);
         }
 
         function performSearch()
@@ -133,6 +185,36 @@
             window.top.postMessage(data, [data.event, data.value]);
         }
 
+        function appendIngredient(ing, status)
+        {
+            let new_id = 'CI_' + ing;
+            if(document.getElementById(new_id)) removeIngredient(ing);
+
+            let clone = ingredientViewOriginal.cloneNode(true);
+            clone.id = 'CI_' + ing;
+            let cross = clone.getElementsByClassName('chosenItemCross')[0];
+            let name = clone.getElementsByClassName('chosenItemName')[0];
+            let image = clone.getElementsByClassName('chosenItemImage')[0];
+
+            cross.value = ing;
+            name.innerHTML = ing;
+
+            if(status == 'unwanted') image.src = 'images/uncheck.png';
+
+            ingredientsOverview.appendChild(clone);
+        }
+
+        function removeIngredient(ing)
+        {
+            ingredientsOverview.removeChild(document.getElementById('CI_' + ing));
+            if(inputField.value == ing) document.getElementById('na').click();
+        }
+
+        function chosenItemCrossClicked(node)
+        {
+            removeIngredient(node.value);
+        }
+
     </script>
 </body>
 
diff --git a/RecipeList.php b/RecipeList.php
index 6d69ad2bbfd8709530d8cabeeeef126525685b5a..0e7a5ec3e936b57402be8eaf37bb49d98a366e2d 100644
--- a/RecipeList.php
+++ b/RecipeList.php
@@ -30,7 +30,11 @@
     
                 echo '<li><div class="container">';
 
+                echo '<div class="extra">';
                 echo '<img class="toggleFavourite" src="images/favourite.png" >';
+                echo '<p class="unsatisfied">Non satisfiés : ' . $re[1] . '</p>';
+                echo '</div>';
+
                 echo '<div class="listElement" onclick="showRecipe(' . intval($re[0]) . ');">';
     
                 $recipe = $Recettes[intval($re[0])];
diff --git a/css/AdvancedSearch.css b/css/AdvancedSearch.css
index c6bcfa80f995752f25ba164867ed561ca465df48..8fcb98ffdba002ead1aeeb41475f48d70a53a093 100644
--- a/css/AdvancedSearch.css
+++ b/css/AdvancedSearch.css
@@ -11,6 +11,7 @@ body {
   display: flex;
   flex-direction: column;
   justify-content: center;
+  align-items: center;
   background-color: rgba(255, 255, 255, 0.75);
   width: 80vw;
   border-radius: 25px;
@@ -53,4 +54,66 @@ body {
 
 #searchDiv button:hover {
   background-color: grey;
+}
+
+.chosenItemsOverview {
+  border-style: solid;
+  border-width: 2px;
+  border-color: black;
+  border-radius: 10px;
+  background-color: rgba(180, 180, 180, 0.50);
+  display: flex;
+  flex-wrap: wrap;
+  width: 60vw;
+  min-height: 10vh;
+  justify-content: center;
+  align-items: center;
+  margin: 50px;
+}
+
+.chosenItem {
+  height: 48px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  border-style: solid;
+  border-radius: 10px;
+  border-width: 1px;
+  border-color: black;
+  margin: 10px;
+}
+
+.chosenItemImage {
+  width: 32px;
+  height: 32px;
+  margin: 10px;
+}
+
+.chosenItemName {
+  font-size: 20px;
+  font-weight: bold;
+}
+
+.chosenItemCross {
+  font-size: 20px;
+  font-weight: bold;
+  border-style: none;
+  background-color: transparent;
+  color: red; 
+}
+
+#parametersDiv {
+  font-size: x-small;
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: center;
+  align-items: center;
+  margin: 0px;
+}
+
+#parametersDiv input {
+  text-align: center;
+  width: 64px;
+  margin: 2px;
+  padding: 2px;
 }
\ No newline at end of file
diff --git a/css/RecipeList.css b/css/RecipeList.css
index fc6cf32a0545efa25737d05d26e9c16c07680065..1c4a75ed81ff0938b144d826d872701d5dc288c8 100644
--- a/css/RecipeList.css
+++ b/css/RecipeList.css
@@ -54,9 +54,15 @@ ul li:last-child {
     object-fit: contain;
 }
 
-.toggleFavourite {
+.extra {
     float: right;
-    vertical-align: middle;
+    display: flex;
+    flex-direction: column;
+    justify-content: right;
+    align-items: flex-end;
+}
+
+.toggleFavourite {
     width: 32px;
     height: auto;
-  }
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/images/check.png b/images/check.png
new file mode 100644
index 0000000000000000000000000000000000000000..3e7a0a7f676091a599ee779e82295ac210cce112
Binary files /dev/null and b/images/check.png differ
diff --git a/images/uncheck.png b/images/uncheck.png
new file mode 100644
index 0000000000000000000000000000000000000000..610c64cc6e5b3ee7d2b77855d6abfbdbbe80519c
Binary files /dev/null and b/images/uncheck.png differ