From fb75702a2a1383602b719deb51172d80615e6004 Mon Sep 17 00:00:00 2001
From: vautrin33u <vautrin33u@etu.univ-lorraine.fr>
Date: Tue, 21 Dec 2021 19:42:11 +0100
Subject: [PATCH] ajout page panier

---
 GestionUtilisateur.php |  2 +-
 Requete.php            |  9 +++---
 Service.php            | 65 +++++++++++++++++++++++++++++++-----------
 panier.php             | 35 ++++++++++++++++++-----
 recettes.js            |  6 ++--
 5 files changed, 84 insertions(+), 33 deletions(-)

diff --git a/GestionUtilisateur.php b/GestionUtilisateur.php
index cc6cd3b..7699705 100644
--- a/GestionUtilisateur.php
+++ b/GestionUtilisateur.php
@@ -43,7 +43,7 @@ function realiseConnexion ($json){
 
         $favs = $mysqli->query("SELECT p.recette_id FROM utilisateurs u, panier p WHERE u.user_id = p.user_id AND u.user_id = {$resultat['user_id']}");
         while($col = mysqli_fetch_assoc($favs)) {
-            $resultats[] = $col;
+            $resultats[] = $col['recette_id'];
         }
         $_SESSION['panier'] = $resultats;
 
diff --git a/Requete.php b/Requete.php
index c4002a5..b6371f2 100644
--- a/Requete.php
+++ b/Requete.php
@@ -1,9 +1,7 @@
 <?php
     session_start();
     echo $_SESSION['id'];
-    echo '<pre>';
-    var_dump($_SESSION['panier']);
-    echo '</pre>';
+
 
 ?>
 
@@ -14,6 +12,7 @@
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
         <script type="text/javascript" src="suggestion.js"> </script>
         <script type="text/javascript" src="recettes.js"> </script>
+        <link href="recettes.css" rel="stylesheet">
 
     </head>
 
@@ -53,7 +52,7 @@
                 echo "<input type='submit' name='connexion' value='Connexion'/>";
                 echo "<input type='submit' name='inscription' value='Inscription'/>";
             }
-            echo "<input type='submit' name='panier' value='Votre panier'/> </p>";
+            echo "<input type='submit' name='panier' id='panier' value='Votre panier'/>";
 
         ?>
             </form>
@@ -67,7 +66,7 @@
             
             Sélectionner :
 
-            <label for='categorie'></label><select name='categorie' id='categorie' onclick="optionsCategorie()" >
+            <label for='categorie'></label><select name='categorie' id='categorie' onchange="optionsCategorie()" >
                 <option value='Aliment'></option>
                 <option value='Aliment'>Aliment</option>
             </select>
diff --git a/Service.php b/Service.php
index 2138162..2099124 100644
--- a/Service.php
+++ b/Service.php
@@ -50,33 +50,57 @@ function loadImage (string $nom){
 		}
 	}
 }
-
-// A MODIFIER
-function getPanier (string $req){
-	$requete = "SELECT DISTINCT  FROM recettes r, ingredientsderecettes ing WHERE ing.idBoisson = r.id AND ing.nomIngredient LIKE '{$req}'";
-	echo queryDBB($requete);
+/**
+ * Récupère le contenu du panier d'un utilisateur
+ */
+function getPanier (){
+	if (isset($_SESSION['id'])){ // si connecté
+		$requete = "select r.id, r.titre, r.preparation, r.ingredients from recettes r, panier p where p.recette_id = r.id AND p.user_id = {$_SESSION['id']}";
+		echo queryDBB($requete);
+	}else{
+		$requete = "select id, titre, preparation, ingredients from recettes where ";
+		for ($i = 0; $i < count($_SESSION['panier']); $i++) {
+			if ($i < count($_SESSION['panier']) -1){
+				$requete .= "id = ". $_SESSION['panier'][$i]." OR ";
+			}else{
+				$requete .= "id = ". $_SESSION['panier'][$i];
+			}
+		}
+		echo queryDBB($requete);
+	}
 }
 
 function addToCart ($req){
-	$mysqli= new mysqli('127.0.0.1', 'root', '', 'Boissons') or die("Erreur : tables inaccessibles");
-	$recette_id = mysqli_real_escape_string ($mysqli, $req);
-	$user_id = mysqli_real_escape_string($mysqli, $_SESSION['id']);
-	$requete = "INSERT INTO panier(user_id, recette_id)  VALUES ({$user_id}, {$recette_id})";
-	$mysqli->query($requete);
-	$mysqli->close();
+	if (isset($_SESSION['id'])){ // Si un utilisateur est identifié
+
+		$mysqli= new mysqli('127.0.0.1', 'root', '', 'Boissons') or die("Erreur : tables inaccessibles");
+		$recette_id = mysqli_real_escape_string ($mysqli, $req);
+		$user_id = mysqli_real_escape_string($mysqli, $_SESSION['id']);
+		$requete = "INSERT INTO panier(user_id, recette_id)  VALUES ({$user_id}, {$recette_id})";
+		$mysqli->query($requete);
+		$mysqli->close();
+	}
+	$_SESSION['panier'][] = $req;
 }
 
 function removeFromCart ($req){
-	$mysqli= new mysqli('127.0.0.1', 'root', '', 'Boissons') or die("Erreur : tables inaccessibles");
-	$recette_id = mysqli_real_escape_string ($mysqli, $req);
-	$user_id = mysqli_real_escape_string($mysqli, $_SESSION['id']);
-	$requete = "DELETE FROM panier WHERE user_id = {$user_id} AND recette_id = {$recette_id}";
-	$mysqli->query($requete);
-	$mysqli->close();
+	if (isset($_SESSION['id'])){ // Si un utilisateur est identifié
+
+		$mysqli= new mysqli('127.0.0.1', 'root', '', 'Boissons') or die("Erreur : tables inaccessibles");
+		$recette_id = mysqli_real_escape_string ($mysqli, $req);
+		$user_id = mysqli_real_escape_string($mysqli, $_SESSION['id']);
+		$requete = "DELETE FROM panier WHERE user_id = {$user_id} AND recette_id = {$recette_id}";
+		$mysqli->query($requete);
+		$mysqli->close();
+	}
+	$delete = array($req);
+	$temp = array_values(array_diff($_SESSION['panier'], $delete));
+	$_SESSION['panier'] = $temp;
 }
 
 
 
+// Gestion des requetes json
 $in = file_get_contents('php://input');
 $decoded = json_decode($in, true);
 
@@ -98,6 +122,7 @@ if (isset($decoded['images'])){
 	loadImage($decoded['images']);
 	unset($decoded['images']);
 }
+// Requêtes concernant le panier
 if (isset($decoded['panier'])){
 	if (isset($decoded['panier'])){
 		if ($decoded['panier'] == 'ajouter'){
@@ -106,7 +131,13 @@ if (isset($decoded['panier'])){
 		if ($decoded['panier'] == 'retirer'){
 			removeFromCart($decoded['recette_id']);
 		}
+		if ($decoded['panier'] == 'get'){
+			getPanier();
+		}
+		
 	}
 }
 
+
+
 ?>
\ No newline at end of file
diff --git a/panier.php b/panier.php
index 5e370c6..444a5c9 100644
--- a/panier.php
+++ b/panier.php
@@ -1,5 +1,25 @@
 <?php
     session_start();
+    
+    echo '<pre>';
+    var_dump($_SESSION['panier']);
+    $temp = $_SESSION['panier'];
+
+    for ($i = 0; $i < count($temp); $i++) {
+        echo $temp[$i];
+    }
+
+    $requete = "select id, titre, preparation, ingredients from recettes where ";
+    for ($i = 0; $i < count($_SESSION['panier']); $i++) {
+        if ($i < count($_SESSION['panier']) -1){
+            $requete .= "id = ". $_SESSION['panier'][$i]." OR ";
+        }else{
+            $requete .= "id = ". $_SESSION['panier'][$i];
+        }
+    }
+    echo $requete;
+    echo '</pre>';
+    
 ?>
 
 
@@ -8,6 +28,8 @@
     <head>
         <title>Votre panier</title>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <script type="text/javascript" src="panier.js"> </script>
+
 
     </head>
 
@@ -28,8 +50,6 @@
             }
 
             if (isset($_POST['home'])){
-                $_SESSION = array();
-                session_destroy();
                 header("location:Requete.php");
             }
 
@@ -47,9 +67,9 @@
             <?php
             if (isset($_SESSION['pseudo'])){
                 $pseudonyme = ucfirst(strtolower($_SESSION['pseudo']));
-                echo "<p id='bienvenue'> Bienvenue ".$pseudonyme." ";
-                echo "<input type='submit' name='deconnecter' value='Déconnexion'/> </p>";
-                echo "<input type='submit' name='panier' value='Votre panier'/> </p>";
+                echo "<p id='bienvenue'> Bienvenue ".$pseudonyme."</p>";
+                echo "<input type='submit' name='deconnecter' value='Déconnexion'/> ";
+                //echo "<input type='submit' name='panier' value='Votre panier'/> ";
 
             }else{
                 echo "<input type='submit' name='connexion' value='Connexion'/>";
@@ -61,8 +81,9 @@
             </form>
         </div>
 
-        <div id='panier'>
-            <p1> Votre panier </p1>
+        <h1> Votre panier </h1>
+        <div id='panierClient'>
+            
 
         </div>
 
diff --git a/recettes.js b/recettes.js
index 11eeb96..fe11ef9 100644
--- a/recettes.js
+++ b/recettes.js
@@ -30,8 +30,8 @@ function ajoutFormulaire(parent, recette){
         // Vérification des résultats
         xhr.onreadystatechange = function(){
             if (xhr.readyState === 4 && xhr.status === 200){
-                //let resultat = xhr.response;
-                //console.log(resultat);
+                let resultat = xhr.response;
+                console.log(resultat);
                 cancel.disabled = false;
                 add.disabled = true;
             }
@@ -60,7 +60,7 @@ function ajoutFormulaire(parent, recette){
         // Vérification des résultats
         xhr.onreadystatechange = function(){
             if (xhr.readyState === 4 && xhr.status === 200){
-                //let resultat = JSON.parse(xhr.response);
+                let resultat = JSON.parse(xhr.response);
                 cancel.disabled = true;
                 add.disabled = false;
         
-- 
GitLab