Bonjour à tous,
Je viens vous faire part d'un problème un peu compliqué qui me bloque depuis maintenant 2 jours, je vous avoue que je suis à court de solution (et de patience). Je vais essayer de vous expliquer ça de la manière la plus simple possible.
J'ai une page de liste de produit que l'utilisateur peut ajouter dans un panier (avec sa quantité). Je récupère les données de l'utilisateur dans un tableau que je sérialize afin d'envoyer de les envoyer dans ma base de données. Le problème, c'est que je ne m'en sort pas pour récupérer ses ****** de données.
Ma table panier comporte 2 champs : users_id et products (en TEXT). Quand je poste un produit, j'obtiens l'id de l'utilisateur qui l'a posté, et ça c'est parfait, mais rien dans mon champ produit. Voici le code que j'ai produit jusqu'alors :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 // Si products est vide, j'initialize un tableau vide $panier = ($ordersModel->getUserPanier($user->id) && $ordersModel->getUserPanier($user->id)->products) ? unserialize($ordersModel->getUserPanier($user->id)->products) : array(); // Je récupère la liste de mes produits en base de données $products_list = $productModel->findAll(); // Je vérifie si mon post existe et n'est pas vide, je push dedans un tableau avec l'id du produit et la quantité if (isset($_POST) && !empty($_POST)) { $tab = [$_POST["product_id"] . "a" => ["qt" => $_POST["qt"]]]; $post = $_POST; if (existPanier($post, $panier)) { $index = $_POST["product_id"] . "a"; unset($panier[$index]); $tab2 = array_merge($panier, $tab); } else { $tab2 = array_merge($panier, $tab); } } function existPanier($post, $panier) { return isset($post["product_id"]) && array_key_exists($post["product_id"] . "a1", $panier); } //$test = existPanier($post, $panier).$ordersModel->addPanier($user->id,[$_POST["product_id"]]); $test = existPanier($panier,$post).$ordersModel->addPanier($user->id,[$_POST["product_id"] . "a" => ["qt" => $_POST["qt"]]]);
J'essaie sur le $test de passer ma requête en utilisant ma fonction "existPanier" ainsi que ma fonction qui contient ma requête. Je vous poste ci dessous les deux requêtes dont je me sert :
Je bloque complètement sur l'envois de mes données dans ma table panier, il ne me manque pas grand chose pour y arriver, ça commence à me rendre fou ! Je vous remercie d'avance pour aide qui sera précieuse ! Hésitez pas si vous avez besoin de précisions supplémentaire, j'ai conscience que mes explications peuvent paraître assez brouillonne !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 // Ajouter un produit dans un panier public function addPanier($users_id, $products){ $req = $this->pdo->prepare("INSERT INTO panier(users_id, products) VALUES (?, ?)"); $req->execute([$users_id, $products]); } // Afficher le panier d'un utilisateur public function getUserPanier($users_id){ $req = $this->pdo->prepare("SELECT * FROM panier WHERE users_id = ?"); $req->execute([$users_id]); $data = $req->fetch(); if(!empty($data)){ return $data; }else{ $data = []; return $data; } }
Partager