diff --git a/MyAccount.php b/MyAccount.php
index e7423ff971f48a12277adcf4f114b34e13333683..93307b639eaba9d61a9a742b64864264434e6500 100644
--- a/MyAccount.php
+++ b/MyAccount.php
@@ -8,6 +8,16 @@
 
 <body>
     <h1>My Account</h1>
+    <?php 
+
+    include "scripts/SQL.php";
+
+    echo connect('ivanalglave@outlook.fr', '123');
+    echo '<br>';
+    echo get_email();
+    echo '<br>';
+    echo get_favourites();
+    ?>
 </body>
 
 </html>
\ No newline at end of file
diff --git a/MyFavouriteRecipes.php b/MyFavouriteRecipes.php
index 247eebc82e2f7d9f50cc0b80bea6cc6f4569fdfd..7a2728e4dc22118a1e8e20915886211937efe59e 100644
--- a/MyFavouriteRecipes.php
+++ b/MyFavouriteRecipes.php
@@ -3,18 +3,22 @@
 <head>
     <title>Drinkpedia</title>
     <meta charset="UTF-8">
+    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
 </head>
 
 <body>
+    <script src="scripts/DataQuery.js"></script>
     <script>
-            var data = {
-                event: 'recipelist',
-                value: sessionStorage.getItem('favourites'),
-                showScore: 'false',
-                title: 'Favoris :'
-            };
-            window.top.postMessage(data, [data.event, data.value, data.showScore, data.title]);
-
+            getFavourites(function(e)
+            {
+                var data = {
+                    event: 'recipelist',
+                    value: e,
+                    showScore: 'false',
+                    title: 'Favoris :'
+                };
+                window.top.postMessage(data, [data.event, data.value, data.showScore, data.title]);
+            })
     </script>
 </body>
 
diff --git a/RecipeList.php b/RecipeList.php
index ecb63105fe7106f112486ed1ba6783c7e1775392..bd2e359bccb810a05f544a1e3e612907d22bcd2c 100644
--- a/RecipeList.php
+++ b/RecipeList.php
@@ -4,6 +4,7 @@
     <title>Drinkpedia</title>
     <meta charset="UTF-8">
     <link rel="stylesheet" type="text/css" href="css/RecipeList.css">
+    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
 </head>
 
 <body>
@@ -58,6 +59,7 @@
 
     </ul>
     
+    <script src="scripts/DataQuery.js"></script>
     <script>
         document.addEventListener('keyup', function (e)
             {
@@ -82,24 +84,27 @@
 
             function switchFavourite(img)
             {
-                let new_src = "images/favourite_off.png";
+                //let new_src = "images/favourite_off.png";
                 if(!img.classList.contains('favouriteOn')) 
                 {
                     new_src = "images/favourite_on.png";
                     img.classList.add('favouriteOn');
                     img.classList.remove('favouriteOff');
                     
-                    let f = sessionStorage.getItem('favourites');
+                    /*let f = sessionStorage.getItem('favourites');
                     if(f != '') f += '|';
                     f += img.alt;
-                    sessionStorage.setItem('favourites', f);
+                    sessionStorage.setItem('favourites', f);*/
+                    addFavourite(img.alt, function(e) {
+                        refreshFavourites();
+                    });
                 }
                 else
                 {
                     img.classList.remove('favouriteOn');
                     img.classList.add('favouriteOff');
 
-                    let f = sessionStorage.getItem('favourites').split('|');
+                    /*let f = sessionStorage.getItem('favourites').split('|');
                     let nf = '';
                     for(let i = 0; i < f.length; i++)
                     {
@@ -108,17 +113,20 @@
                             if(i != 0) nf += '|';
                             nf += f[i];
                         }
-                    }
-                    sessionStorage.setItem('favourites', nf);
+                    }*/
+                    
+                    removeFavourite(img.alt, function(e){
+                        refreshFavourites();
+                    });
                 }
                 
-                img.src= new_src;
+                //img.src= new_src;
             }
             
             function refreshFavourites()
             {
                 let collection = document.getElementsByClassName('toggleFavourite');
-                let favourites = sessionStorage.getItem('favourites').split('|');
+                /*let favourites = sessionStorage.getItem('favourites').split('|');
                 for(let i = 0; i < collection.length; i++)
                 {
                     let node = collection[i];
@@ -135,7 +143,28 @@
                         node.classList.remove('favouriteOn');
                         node.src = "images/favourite_off.png";
                     }
-                }
+                }*/
+
+                getFavourites(function(e) {
+                    let favourites = e;
+                    for(let i = 0; i < collection.length; i++)
+                    {
+                        let node = collection[i];
+                        let r_id = node.value;
+                        if(favourites.findIndex(val => val == node.alt) >= 0)
+                        {
+                            node.classList.add('favouriteOn');
+                            node.classList.remove('favouriteOff');
+                            node.src = "images/favourite_on.png";
+                        }
+                        else
+                        {
+                            node.classList.add('favouriteOff');
+                            node.classList.remove('favouriteOn');
+                            node.src = "images/favourite_off.png";
+                        }
+                    }
+                })
             }
 
 
diff --git a/css/MyAccount.css b/css/MyAccount.css
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/scripts/DataQuery.js b/scripts/DataQuery.js
index 8122cb25a42bfa8ae03026159151c9aea2c5e3c8..86f63e64405937ae988848fb396020f3360176f8 100644
--- a/scripts/DataQuery.js
+++ b/scripts/DataQuery.js
@@ -23,4 +23,126 @@ function getRecipeImage(id, callback)
 function getAllIngredients(callback)
 {
     query('getAllIngredients', [], callback);
+}
+
+function create_user(u_email, u_pwd, callback)
+{
+    query('create_user', [u_email, u_pwd], callback);
+}
+
+function connect(u_email, u_pwd, callback)
+{
+    query('connect', [u_email, u_pwd], callback);
+}
+
+function is_connected(callback)
+{
+    query('is_connected', [], callback);
+}
+
+function get_email(callback)
+{
+    query('get_email', [], callback);
+}
+
+function get_favourites(callback)
+{
+    query('get_favourites', [], callback);
+}
+
+function set_favourites(favourites, callback)
+{
+    query('set_favourites', [favourites], callback);
+}
+
+function set_password(u_newpwd, callback)
+{
+    query('set_password', [u_newpwd], callback);
+}
+
+function getFavourites(callback)
+{
+    is_connected(function(e)
+    {
+        alert('Connected : ' + (e ? 'true' : 'false'));
+        
+        get_favourites(function(f)
+        {
+            let localFavourites = sessionStorage.getItem('favourites').split('|');
+            let dbFavourites = f.split('|');
+            let res = joinCheckDuplicates(localFavourites, dbFavourites);
+            callback(res);
+        });
+    })
+}
+
+function joinCheckDuplicates(e1, e2)
+{
+    let e3 = e1;
+    for(let i = 0; i < e2.length; i++)
+    {
+        if(e3.indexOf(e2[i]) < 0) e3.push(e2[i]);
+    }
+    return e3;
+}
+
+function addFavourite(id, callback)
+{
+    get_favourites(function(f)
+    {
+        let localFavourites = sessionStorage.getItem('favourites').split('|');
+        let dbFavourites = f.split('|');
+        let res = joinCheckDuplicates(localFavourites, dbFavourites);
+        let indexOfTest = res.indexOf(id);
+        if(indexOfTest < 0) res.push(id);
+
+        let resultStr = '';
+        let first = true;
+
+        for(let i = 0; i < res.length; i++)
+        {
+            if(res[i] != '')
+            {
+                if(!first) resultStr += '|';
+                else first = false;
+                resultStr += res[i];
+            }
+        }
+
+        sessionStorage.setItem('favourites', resultStr);
+
+        set_favourites(function(g) {
+            callback(resultStr);
+        })
+    });
+}
+
+function removeFavourite(id, callback)
+{
+    get_favourites(function(f)
+    {
+        let localFavourites = sessionStorage.getItem('favourites').split('|');
+        let dbFavourites = f.split('|');
+        let res = joinCheckDuplicates(localFavourites, dbFavourites);
+        let indexOfToRemove = res.indexOf(id);
+        if(indexOfToRemove >= 0) res.splice(indexOfToRemove, 1);
+
+        let resultStr = '';
+        let first = true;
+
+        for(let i = 0; i < res.length; i++)
+        {
+            if(res[i] != '')
+            {
+                if(!first) resultStr += '|';
+                resultStr += res[i];
+            }
+        }
+
+        sessionStorage.setItem('favourites', resultStr);
+
+        set_favourites(function(g) {
+            callback(resultStr);
+        })
+    });
 }
\ No newline at end of file
diff --git a/scripts/DataQuery.php b/scripts/DataQuery.php
index 6e024dd80fde62eb86b8180f57603d63aa9998be..1ae0401152e0411f0a1a4b549cc57db80cbf9a94 100644
--- a/scripts/DataQuery.php
+++ b/scripts/DataQuery.php
@@ -1,6 +1,7 @@
 <?php
 
     include "Functions.php";
+    include "SQL.php";
 
     $funcName = $_POST['functionname'];
 
@@ -26,9 +27,36 @@
     {
         echo implode('|', getAllIngredients());
     }
+    else if($funcName == 'create_user')
+    {
+        echo create_user($_POST['arguments'][0], $_POST['arguments'][1]);
+    }
+    else if($funcName == 'connect')
+    {
+        echo connect($_POST['arguments'][0], $_POST['arguments'][1]);
+    }
+    else if($funcName == 'is_connected')
+    {
+        echo is_connected();
+    }
+    else if($funcName == 'get_email')
+    {
+        echo get_email();
+    }
+    else if($funcName == 'get_favourites')
+    {
+        echo get_favourites();
+    }
+    else if($funcName == 'set_favourites')
+    {
+        echo set_favourites($_POST['arguments'][0]);
+    }
+    else if($funcName == 'set_password')
+    {
+        echo set_password($_POST['arguments'][0]);
+    }
     else
     {
         echo 'error - unknown func';
     }
-
 ?>
\ No newline at end of file
diff --git a/scripts/SQL.php b/scripts/SQL.php
new file mode 100644
index 0000000000000000000000000000000000000000..a8376c5e0a8b7b0077a6fe1953a5a2745cdd5f83
--- /dev/null
+++ b/scripts/SQL.php
@@ -0,0 +1,75 @@
+<?php
+
+$bdd = new PDO('mysql:host=localhost;dbname=drinkpedia;charset=utf8', 'root', '', array(
+    PDO::ATTR_PERSISTENT => true
+));
+$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+$email = '';
+
+function create_user($u_email, $u_pwd)
+{
+    global $bdd;
+    $bdd->query('INSERT INTO user (email, pwdhash, favourites) VALUES (\'' . $u_email . '\', \'' . $u_pwd . '\', \'1|2|4\')');
+}
+
+function connect($u_email, $u_pwd)
+{
+    global $bdd, $email;
+    $res = $bdd->query('SELECT pwdhash FROM user WHERE email LIKE \'' . $u_email . '\'');
+    if($res)
+    {
+        $res = $res->fetch();
+        if(count($res) > 0)
+        {
+            $fetched_pwd = $res[0];
+            if($fetched_pwd == $u_pwd)
+            {
+                $email = $u_email;
+                return true;
+            }
+        }
+    }
+    return false;
+}
+
+function is_connected()
+{
+    global $email;
+    return $email == '' ? false : true;
+}
+
+function get_email()
+{
+    global $email;
+    return $email;
+}
+
+function get_favourites()
+{
+    global $bdd, $email;
+    if($email != '')
+    {
+        return $bdd->query('SELECT favourites FROM user WHERE email LIKE \'' . $email . '\'')->fetch()[0];
+    }
+    return '';
+}
+
+function set_favourites($favourites)
+{
+    global $bdd, $email;
+    if($email != '')
+    {
+        $bdd->query('UPDATE user SET favourites=\'' . $favourites . '\' WHERE email like \'' . $email . '\'');
+    }
+}
+
+function set_password($u_newpwd)
+{
+    global $bdd, $email;
+    if($email != '')
+    {
+        $bdd->query('UPDATE user SET pwdhash=\'' . $u_newpwd . '\' WHERE email like \'' . $email . '\'');
+    }
+}
+
+?>
\ No newline at end of file