Partage
  • Partager sur Facebook
  • Partager sur Twitter

UPDATE bdd avec foreach

    25 mai 2018 à 21:23:13

    ouai je trouvais ca bizarre aussi...je bloque sur le where...
    • Partager sur Facebook
    • Partager sur Twitter
      25 mai 2018 à 21:29:24

      Ben ce n'est pas du tout celle que je te proposais il y a 7 h.
      • Partager sur Facebook
      • Partager sur Twitter
        25 mai 2018 à 21:51:52

        Oui j'ai remis celle que tu m'avais proposé :

        $sql="UPDATE commande_produits SET
                id_prod = :id_prod,
                nom = :nom_prod,
                options = :options,
                quantite = :quantite,
                prix = :prix,
                total = :total,
                fraisdeport = :fraisdeport,
                grandtotal = :grandtotal
                WHERE  id_client = :id_client";

        Je pense que le probleme vient de mon controller...Je pense que dans les 2 cas il fait appel à la fonction ajoutProduit. Je me permets de le poster :

        $app->post('/panier', function (Request $request) use ($app){
        	$user = $app['session']->get('user');
        	$id_client = $user['userid'];
        
         	$produitsModel = new produitsModels();
            $MVe_liquides = $produitsModel -> getMVe_liquides($app);
            $MVe_cigs = $produitsModel -> getMVe_cigs($app);
            $MVaccessoires = $produitsModel -> getMVaccessoires($app);
            $MVdiy = $produitsModel -> getMVdiy($app);
            $MVexpert = $produitsModel -> getMVexpert($app);
            $nouveautes = $produitsModel -> getNouveautes($app);
            $user = $app['session']->get('user');
            
            if ($user) {
        
            	$champs = array("id_prod", "nom_prod","options","quantite","prix","total","fraisdeport","grandtotal");	 		
        
                if(isset($_POST , $champs)) {
                	$id_prod = $_POST['id_prod'];          
                    $nom = $_POST['nom_prod'];
                    $options = $_POST['options'];
                    $quantite = $_POST['quantite'];
                    $prix = $_POST['prix'];
                    $total = $_POST['total'];
                    $fraisdeport = $_POST['fraisdeport'];
                    $grandtotal = $_POST['grandtotal'];
                    // $id_client = $user['userid'];
                    $userModel = new usersModels();
            		$panier = $userModel->recupCommandeProduits($app, $id_client);
                  	
                    if (empty($panier)) { 
        
                        $userModel = new usersModels();
                        $userModel->ajoutCommandeProduits($user, $app, $_POST);
         
                    } else {
                    	
                    	$userModel = new usersModels();
                        $userModel->updateCommandeProduits($user, $app, $_POST);   
         
                    }
                }
            } else {
         
            }
            // return $app['twig']->render('commande.html.twig', array('userSession' => $user));
            return $app['twig']->render('commande.html.twig', array('userSession' => $app['session']->get('user'),'panier' => $panier, 'MVe_liquides'=> $MVe_liquides, 'MVe_cigs'=> $MVe_cigs, 'MVaccessoires'=> $MVaccessoires, 'MVdiy'=> $MVdiy, 'MVexpert'=> $MVexpert, 'nouveautes'=> $nouveautes));
         
        })
            ->bind('panier_check')
        ;

        En fait j'ai crée une variable panier avec une fonction recupCommandes :

           public function recupCommandeProduits($app , $id_client){
          
                $query= $app['db'] -> prepare("SELECT * FROM commande_produits WHERE id_client = :id_client");
        
                $query -> bindValue(':id_client', $id_client, PDO::PARAM_STR);
                $query -> execute();
                // $query ->fetchAll();
         
            }

        Et j'essaie de dire à mon controller , si le panier est vide lancer la fonction ajoutProduits et si il n'est pas vide lancer la fonction updateProduits. Je pense que mon probleme vient maintenant d'ici. Je suis conscient que vu mon niveau c'était un peu ambitieux de faire un site e-commerce mais ca me permet d'apprendre bcp de choses meme si je me fais un peu violence...lol


        • Partager sur Facebook
        • Partager sur Twitter
          25 mai 2018 à 21:59:11

          recupCommandeProduits retourne NULL (à cause de l'absence du return) donc tu rentreras toujours dans if (nouvelle insertion)
          • Partager sur Facebook
          • Partager sur Twitter
          le bienfait n'est jamais perdu
            25 mai 2018 à 23:21:01

            J'ai modifié la fonction recupCommandeProduits:

            public function recupCommandeProduits($app , $id_client){
              
                    $query = $app['db'] -> prepare("SELECT * FROM commande_produits WHERE id_client = :id_client");
            
                    $query -> bindValue(':id_client', $id_client, PDO::PARAM_STR);
                    $query -> execute();
                    $panier = $query -> fetchAll();
              
                    return $panier;
             
                }

            J'sais pas ca me refait le meme bug avec la fonction update, ca m'ajoute le dernier produit du panier plusieurs fois...

            • Partager sur Facebook
            • Partager sur Twitter
              26 mai 2018 à 10:09:53

              Je ne comprends pas, tu fais une MàJ ou une insertion ?
              • Partager sur Facebook
              • Partager sur Twitter
              le bienfait n'est jamais perdu
                26 mai 2018 à 11:09:50

                C'est la fonction update qui bugue
                • Partager sur Facebook
                • Partager sur Twitter
                  26 mai 2018 à 11:11:25

                  Remontre là , je suppose que tu as apporté les modifs de Philodick
                  • Partager sur Facebook
                  • Partager sur Twitter
                  le bienfait n'est jamais perdu
                    26 mai 2018 à 11:12:40

                    public function updateCommandeProduits($id_client ,$app ,$saisie){
                            $user = $app['session']->get('user');
                            $id_client = $user['userid'];
                                  
                            $sql="UPDATE commande_produits SET
                            id_prod = :id_prod,
                            nom = :nom_prod,
                            options = :options,
                            quantite = :quantite,
                            prix = :prix,
                            total = :total,
                            fraisdeport = :fraisdeport,
                            grandtotal = :grandtotal
                            WHERE  id_client = :id_client";
                    
                             $query = $app['db']->prepare($sql);
                    
                            $query->bindParam(':id_prod', $id_prod, PDO::PARAM_STR);
                            $query->bindParam(':nom_prod', $nom, PDO::PARAM_STR);
                            $query->bindParam(':options', $options, PDO::PARAM_STR);
                            $query->bindParam(':quantite', $quantite, PDO::PARAM_STR);
                            $query->bindParam(':prix', $prix, PDO::PARAM_STR);
                            $query->bindParam(':total', $total, PDO::PARAM_STR);
                            $query->bindParam(':fraisdeport', $fraisdeport, PDO::PARAM_STR);
                            $query->bindParam(':grandtotal', $grandtotal, PDO::PARAM_STR);
                            $query->bindParam(':id_client', $id_client, PDO::PARAM_STR);
                    
                             $length = count($saisie['nom_prod']);
                            
                            // $id_client = $saisie['id_client'];
                            $fraisdeport = $saisie['fraisdeport'];
                            $grandtotal = $saisie['grandtotal'];
                             for($i=0;$i<$length;$i++) {
                           $id_prod = $saisie['id_prod'][$i];
                           $nom = $saisie['nom_prod'][$i];
                           $options = $saisie['options'][$i];
                           $quantite = $saisie['quantite'][$i];
                           $prix = $saisie['prix'][$i];
                           $total = $saisie['total'][$i];
                           $query->execute();
                           }
                             
                        }
                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 mai 2018 à 11:26:56

                      Le id_client seul ne suffit pas, comme l'a dit Philodick dans un message il faut ajouter id_produit, Parce qu'avec ton code la màj suivante écrase la précédente jusqu'au dernier tour. 

                      Je serais curieux de voir la structure de ta base de données, ça semble rendre les trucs compliqués.

                      Edit: Je viens de voir ton code d'insertion , pas d'id_client.

                      -
                      Edité par WillyKouassi 26 mai 2018 à 11:31:07

                      • Partager sur Facebook
                      • Partager sur Twitter
                      le bienfait n'est jamais perdu
                        26 mai 2018 à 11:30:23

                        -
                        Edité par JulienProd 26 mai 2018 à 11:31:23

                        • Partager sur Facebook
                        • Partager sur Twitter
                          26 mai 2018 à 11:32:25

                          Sinon tu as vu j'ai expliqué pourquoi tu prends toujours le dernier produit.. Il faut corriger ta  requête UPDATE
                          • Partager sur Facebook
                          • Partager sur Twitter
                          le bienfait n'est jamais perdu
                            26 mai 2018 à 11:35:05

                            Pour la fonction update j'ajoute l'id_prod dans le WHERE ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              26 mai 2018 à 11:39:12

                              Oui. Et puis de tout façon si un client commande le même produit plus tard , ça va tout "casser" dans ta table.

                              Enfin bon dans ce genre de cas on une table commande (c'est dans cette table que l'id du client se trouve) et une table ligne_commande (avec les produits de la commande) maintenant si le client doit modifier sa commande on le fait par l'id de la commande ou sa référence. Voilà le plus simple.

                              • Partager sur Facebook
                              • Partager sur Twitter
                              le bienfait n'est jamais perdu
                                26 mai 2018 à 11:50:54

                                Oui j'avais vu ca pour la table commande. Du coup je ne mets pas d'id_client dans la table commande_produits mais dans la table commande? Je le remplace donc par un id_commande comme tu me le conseilles?

                                J'ai rajouté l'id_prod dans le WHERE de la fonction update mais la fonction n'agit pas , je n'ai pourtant pas d'erreur php

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  26 mai 2018 à 12:13:58

                                  Si elle n'update pas alors la combinaison id_produit + id_client n'existe pas. TU n'as pas d'erreur PHP, les as-tu activé ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  le bienfait n'est jamais perdu
                                    26 mai 2018 à 13:13:49

                                    Je pense qu'elles sont activées. D'habitude en ajoutant index_dev.php à la barre d'adresse ca me les affiche.

                                    J'ai pas de variables $id_prod à ajouter en paramètre de la fonction ou du controller du coup?

                                    -
                                    Edité par JulienProd 26 mai 2018 à 13:34:18

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      26 mai 2018 à 18:51:07

                                      Au lieu de tourner en rond, il faudra recommencer et partir sur des bases saines. Ton affaire tu l'as rendu compliqué.

                                      Sinon dans ton for, tu as bien $id_prod non ?

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      le bienfait n'est jamais perdu
                                        26 mai 2018 à 19:37:22

                                        oui j'ai $id_prod dans mon for
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          26 mai 2018 à 19:42:40

                                          Si tu ne veux pas faire d'effort ça va être compliqué, il ne suffit pas de répondre oui mais de tester.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          le bienfait n'est jamais perdu
                                            26 mai 2018 à 19:54:05

                                            Je me suis rendu compte que j'avais pas mal d'erreur dans le return de mon controller , j'ai rectifié tout ca normalement ça devrait marcher beaucoup mieux :honte:.

                                            Sur vos conseils j'ai remanié un peu mes tables. J'ai maintenant une table commande avec un id_commande et  un id_client , et j'ai modifié la table commande_produits où j'ai remplacé l'id_client par un id_comm(en clé étrangère avec l'id_commande de la table commande).

                                            Je repars donc sur ma fonction ajoutProduits où je bloque sur une erreur php, voici la fonction :

                                             public function ajoutCommandeProduits($id_client ,$app ,$saisie){
                                                    
                                                    $sql="INSERT INTO commande_produits (`id_prod`,`nom`,`options`,`quantite`,`prix`,`total`,`fraisdeport`,`grandtotal`, `id_comm`) VALUES (:id_prod, :nom_prod, :options, :quantite, :prix, :total, :fraisdeport, :grandtotal, :id_comm)";
                                              
                                                    $query = $app['db']->prepare($sql);
                                            
                                                    $query->bindParam(':id_prod', $id_prod, PDO::PARAM_INT);
                                                    $query->bindParam(':nom_prod', $nom, PDO::PARAM_STR);
                                                    $query->bindParam(':options', $options, PDO::PARAM_STR);
                                                    $query->bindParam(':quantite', $quantite, PDO::PARAM_STR);
                                                    $query->bindParam(':prix', $prix, PDO::PARAM_STR);
                                                    $query->bindParam(':total', $total, PDO::PARAM_STR);
                                                    $query->bindParam(':fraisdeport', $fraisdeport, PDO::PARAM_STR);
                                                    $query->bindParam(':grandtotal', $grandtotal, PDO::PARAM_STR);
                                                    // $query->bindParam(':id_client', $id_client, PDO::PARAM_INT);
                                                    $query->bindParam(':id_comm', $_POST['id_commande'], PDO::PARAM_INT);
                                            
                                                    $length = count($saisie['nom_prod']);
                                            
                                                    $id_comm = $_POST['id_commande'];
                                                    $fraisdeport = $saisie['fraisdeport'];
                                                    $grandtotal = $saisie['grandtotal'];
                                                    for($i=0;$i<$length;$i++) {
                                                        $id_prod = $saisie['id_prod'][$i];
                                                        $nom = $saisie['nom_prod'][$i];
                                                        $options = $saisie['options'][$i];
                                                        $quantite = $saisie['quantite'][$i];
                                                        $prix = $saisie['prix'][$i];
                                                        $total = $saisie['total'][$i];
                                                        return $query->execute();
                                                   }
                                            
                                                }

                                            J'ai l'erreur php suivante :

                                            An exception occurred while executing 'INSERT INTO commande_produits (`id_prod`,`nom`,`options`,`quantite`,`prix`,`total`,`fraisdeport`,`grandtotal`, `id_comm`) VALUES (:id_prod, :nom_prod, :options, :quantite, :prix, :total, :fraisdeport, :grandtotal, :id_comm)' with params [null, null, null, null, null, null, null, null, null]:

                                            SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'id_comm' cannot be null

                                            Je pense que je m'y prend mal pour insérer l'id_commande.commande dans id_comm.commande_produits
                                            Est ce que l'erreur viendrait du fait que l'id_commande n'existe pas encore au moment où la fonction se lance?

                                            -
                                            Edité par JulienProd 26 mai 2018 à 23:03:44

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              27 mai 2018 à 1:11:57

                                              Mouais le return n'a pas sa place dans le for. Puisque tu peux obtenir le total par produit dans la requête, tu peux la retirer de ta table.

                                              On crée la commande et on ajoute les produits à cette commande.

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              le bienfait n'est jamais perdu
                                                27 mai 2018 à 10:32:39

                                                C'est surtout que id_comm doit être en auto-incrément (si c'est la clé primaire), donc elle ne devrait même pas figurer dans la requête.
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  27 mai 2018 à 11:39:09

                                                  @philodick, l'id_comm de la table commande_produits n'est pas la clé primaire,  par contre l'id_commande de la table commande est bien en la clé primaire en auto-incrément.

                                                  @WillyKouassi J'avais oublié de préciser que j'avais créé une fonction ajoutCommande :

                                                  public function ajoutCommande($id_client, $app){
                                                          $user = $app['session']->get('user');
                                                          $id_client = $user['userid'];
                                                  
                                                         $sql = "INSERT INTO commande (`id_client`) VALUES (:id_client)";
                                                         
                                                         $query = $app['db']->prepare($sql);
                                                        
                                                         $query->bindValue(':id_client', $id_client, PDO::PARAM_INT);
                                                  
                                                         $query->execute();
                                                  
                                                      }

                                                  Mais je ne savais pas trop à quel moment la lancer dans mon controller(bon sachant qu'il faut que je la lance avec la fonction ajoutCommandeProduits j'imagine) :

                                                  $app->post('/panier', function (Request $request) use ($app){
                                                  	$user = $app['session']->get('user');
                                                  	$id_client = $user['userid'];
                                                  
                                                   	$produitsModel = new produitsModels();
                                                      $MVe_liquides = $produitsModel -> getMVe_liquides($app);
                                                      $MVe_cigs = $produitsModel -> getMVe_cigs($app);
                                                      $MVaccessoires = $produitsModel -> getMVaccessoires($app);
                                                      $MVdiy = $produitsModel -> getMVdiy($app);
                                                      $MVexpert = $produitsModel -> getMVexpert($app);
                                                      $nouveautes = $produitsModel -> getNouveautes($app);
                                                  
                                                      $user = $app['session']->get('user');
                                                      
                                                      if ($user) {
                                                  
                                                      	$champs = array("id_prod", "nom_prod","options","quantite","prix","total","fraisdeport","grandtotal");	 		
                                                  
                                                          if(isset($_POST , $champs)) {
                                                          	$id_prod = $_POST['id_prod'];          
                                                              $nom = $_POST['nom_prod'];
                                                              $options = $_POST['options'];
                                                              $quantite = $_POST['quantite'];
                                                              $prix = $_POST['prix'];
                                                              $total = $_POST['total'];
                                                              $fraisdeport = $_POST['fraisdeport'];
                                                              $grandtotal = $_POST['grandtotal'];
                                                              // $id_client = $user['userid'];
                                                              $userModel = new usersModels();
                                                      		$panier = $userModel->recupCommandeProduits($app, $id_client);
                                                            	
                                                              if (empty($panier)) { 
                                                  
                                                                  
                                                                  $userModel = new usersModels();
                                                                  $commande = $userModel->ajoutCommande($user, $app);
                                                                  $commprods = $userModel->ajoutCommandeProduits($user, $app, $_POST);
                                                   
                                                              } else {
                                                              	
                                                              	$userModel = new usersModels();
                                                                  $updateprods = $userModel->updateCommandeProduits($user, $app, $_POST);   
                                                   
                                                              }
                                                          }
                                                      } else {
                                                   
                                                      }
                                                      // return $app['twig']->render('commande.html.twig', array('userSession' => $user));
                                                      return $app['twig']->render('commande.html.twig', array('userSession' => $app['session']->get('user'),'panier' => $panier, 'MVe_liquides'=> $MVe_liquides, 'MVe_cigs'=> $MVe_cigs, 'MVaccessoires'=> $MVaccessoires, 'MVdiy'=> $MVdiy, 'MVexpert'=> $MVexpert, 'nouveautes'=> $nouveautes, 'commprods' => $commprods, 'commande' => $commande , 'updateprods' => $updateprods));
                                                   
                                                  })
                                                      ->bind('panier_check')
                                                  ;




                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    27 mai 2018 à 12:57:55

                                                    Une commande ce n'est pas qu'un id_client et id_commande.

                                                    Comme je l'ai dit, on crée une commande et on y a ajoute des produits, ça se fait systématiquement. Ta méthode ajoutCommande devrait renvoyer $app['db']->lastInsertId(); et ce id doit être passé dans ta méthode ajoutCommandeProduits.

                                                    Et puisque tu as des insertions multiples, tu devrais voir du côté des transactions avec PDO

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    le bienfait n'est jamais perdu
                                                      27 mai 2018 à 13:26:12

                                                      Ah d'accord. Bon je sais pas trop comment mettre tout ca en place(c'est une première pour moi)...

                                                      Modifier ma fonction ajoutCommande ainsi ?

                                                      public function ajoutCommande($id_client, $app){
                                                              $user = $app['session']->get('user');
                                                              $id_client = $user['userid'];
                                                      
                                                              $sql = "INSERT INTO commande (`id_client`) VALUES (:id_client)";
                                                              // $query = $app['db']->prepare($sql);  
                                                              $recupId = $query = $app['db']->lastInsertId($sql);
                                                             // $query->bindParam(':id_client', $id_client, PDO::PARAM_INT);
                                                              return $recupId;
                                                             // $query->execute();
                                                          }

                                                      et mettre $recupId en paramètre de la fonction ajoutCommandeProduits ainsi?

                                                       public function ajoutCommandeProduits($recupId ,$app ,$saisie){
                                                              
                                                              $sql="INSERT INTO commande_produits (`id_prod`,`nom`,`options`,`quantite`,`prix`,`total`,`fraisdeport`,`grandtotal`, `id_comm`) VALUES (:id_prod, :nom_prod, :options, :quantite, :prix, :total, :fraisdeport, :grandtotal, :id_comm)";
                                                        
                                                              $query = $app['db']->prepare($sql);
                                                      
                                                              $query->bindParam(':id_prod', $id_prod, PDO::PARAM_INT);
                                                              $query->bindParam(':nom_prod', $nom, PDO::PARAM_STR);
                                                              $query->bindParam(':options', $options, PDO::PARAM_STR);
                                                              $query->bindParam(':quantite', $quantite, PDO::PARAM_STR);
                                                              $query->bindParam(':prix', $prix, PDO::PARAM_STR);
                                                              $query->bindParam(':total', $total, PDO::PARAM_STR);
                                                              $query->bindParam(':fraisdeport', $fraisdeport, PDO::PARAM_STR);
                                                              $query->bindParam(':grandtotal', $grandtotal, PDO::PARAM_STR);
                                                              // $query->bindParam(':id_client', $id_client, PDO::PARAM_INT);
                                                              $query->bindParam(':id_comm', $_POST['id_commande'], PDO::PARAM_INT);
                                                      
                                                              $length = count($saisie['nom_prod']);
                                                      
                                                              $id_comm = $_POST['id_commande'];
                                                              $fraisdeport = $saisie['fraisdeport'];
                                                              $grandtotal = $saisie['grandtotal'];
                                                              for($i=0;$i<$length;$i++) {
                                                                  $id_prod = $saisie['id_prod'][$i];
                                                                  $nom = $saisie['nom_prod'][$i];
                                                                  $options = $saisie['options'][$i];
                                                                  $quantite = $saisie['quantite'][$i];
                                                                  $prix = $saisie['prix'][$i];
                                                                  $total = $saisie['total'][$i];
                                                                  $query->execute();
                                                             }
                                                      
                                                          }




                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        27 mai 2018 à 13:57:43

                                                        J'ai simplement dit que ta fonction devait retourner donc il suffisait de l'ajouter tout simplement.

                                                        Peut être dans l'ordre ajoutCommandeProduit($app, $id_commande, $saisie) et utiliser $id_commande au lieu de $_POST['id_commande'] qui semble venir de nulle part.

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        le bienfait n'est jamais perdu
                                                          8 juin 2018 à 13:20:50

                                                          J'ai du laisser le code pour qques jours, je saturais un peu...

                                                          J'ai toujours ma fonction updateCommandeProduits qui doitmettre à jour la table commande_produits mais qui ne marche pas :

                                                               public function updateCommandeProduits($app ,$id_comm ,$post, $id_prod){
                                                                  $id_comm = $app['db']->lastInsertId('id_commande');
                                                                  $id_prod = array($_POST['id_prod']);
                                                                        
                                                                  $sql="UPDATE commande_produits SET
                                                                  id_prod = :id_prod,
                                                                  nom = :nom_prod,
                                                                  options = :options,
                                                                  quantite = :quantite,
                                                                  prix = :prix,
                                                                  total = :total,
                                                                  fraisdeport = :fraisdeport,
                                                                  grandtotal = :grandtotal
                                                                  WHERE  id_comm = :id_comm AND id_prod = :id_prod";
                                                          
                                                                   $query = $app['db']->prepare($sql);
                                                          
                                                                  $query->bindParam(':id_prod', $id_prod, PDO::PARAM_INT);
                                                                  $query->bindParam(':nom_prod', $nom, PDO::PARAM_STR);
                                                                  $query->bindParam(':options', $options, PDO::PARAM_STR);
                                                                  $query->bindParam(':quantite', $quantite, PDO::PARAM_STR);
                                                                  $query->bindParam(':prix', $prix, PDO::PARAM_STR);
                                                                  $query->bindParam(':total', $total, PDO::PARAM_STR);
                                                                  $query->bindParam(':fraisdeport', $fraisdeport, PDO::PARAM_STR);
                                                                  $query->bindParam(':grandtotal', $grandtotal, PDO::PARAM_STR);
                                                                  $query->bindParam(':id_comm', $id_comm, PDO::PARAM_INT);
                                                          
                                                                   $length = count($_POST['nom_prod']);
                                                                  
                                                                  $id_comm = $app['db']->lastInsertId('id_commande');
                                                                  $fraisdeport = $_POST['fraisdeport'];
                                                                  $grandtotal = $_POST['grandtotal'];
                                                                   for($i=0;$i<$length;$i++) {
                                                                 $id_prod = $_POST['id_prod'][$i];
                                                                 $nom = $_POST['nom_prod'][$i];
                                                                 $options = $_POST['options'][$i];
                                                                 $quantite = $_POST['quantite'][$i];
                                                                 $prix = $_POST['prix'][$i];
                                                                 $total = $_POST['total'][$i];
                                                                 $query->execute();
                                                               
                                                                 }
                                                                   return true;
                                                              }

                                                          Je laisse mon controller au cas ou :

                                                          $app->post('/panier', function (Request $request) use ($app){
                                                          	$user = $app['session']->get('user');
                                                                  	$id_client = $user['userid'];
                                                          	
                                                              $id_comm = $app['db']->lastInsertId('id_commande');
                                                              $userModel = new usersModels();           
                                                              $panier = $userModel-> recupCommandeProduits($app, $id_comm);
                                                          	$recupcomm = $userModel-> recupCommande($app, $id_client);
                                                          	
                                                           	$produitsModel = new produitsModels();
                                                              $MVe_liquides = $produitsModel -> getMVe_liquides($app);
                                                              $MVe_cigs = $produitsModel -> getMVe_cigs($app);
                                                              $MVaccessoires = $produitsModel -> getMVaccessoires($app);
                                                              $MVdiy = $produitsModel -> getMVdiy($app);
                                                              $MVexpert = $produitsModel -> getMVexpert($app);
                                                              $nouveautes = $produitsModel -> getNouveautes($app);
                                                          
                                                          	 
                                                              $user = $app['session']->get('user');   			
                                                                         
                                                           	// Si les formulaires POST existent
                                                                  if (isset($_POST)) {
                                                                    
                                                                      $nom = $_POST['nom_prod'];
                                                                      $options = $_POST['options'];
                                                                      $quantite = $_POST['quantite'];
                                                                      $prix = $_POST['prix'];
                                                                      $total = $_POST['total'];
                                                                      $fraisdeport = $_POST['fraisdeport'];
                                                                      $grandtotal = $_POST['grandtotal'];
                                                          
                                                                  //Si l'utilisateur n'a pas de commande
                                                                      if(empty($recupcomm)){
                                                                      	$user = $app['session']->get('user');
                                                                  		$id_client = $user['userid'];
                                                                      	$userModel = new usersModels();
                                                                      	$ajoutcomm = $userModel->ajoutCommande($app, $id_client);
                                                          
                                                                     
                                                                      	if (empty($panier)) { 
                                                                      		$id_comm = $app['db']->lastInsertId('id_commande');
                                                                          	$userModel = new usersModels();
                                                                          	$ajoutcommprods = $userModel->ajoutCommandeProduits($app, $id_comm, $_POST);
                                                          
                                                                          	
                                                                  	// Si l'utilisateur a déja un panier	
                                                                      	} else {
                                                                      	$id_comm = $app['db']->lastInsertId('id_commande');
                                                           				$id_prod = $_POST['id_prod'];
                                                          
                                                                          $userModel = new usersModels();
                                                                          $userModel->updateCommandeProduits($app, $id_comm, $_POST, $id_prod);
                                                           
                                                                      			}
                                                                  	//Si l'utilisateur a déja un commande
                                                                      }else{
                                                                      	$id_commande = $app['db']->lastInsertId('id_commande');
                                                                      	$userModel = new usersModels();
                                                                      	$updatecomm = $userModel->updateCommande($app, $id_commande);
                                                          
                                                                      }
                                                           
                                                                  }else{
                                                          
                                                                  }
                                                           
                                                              return $app['twig']->render('commande.html.twig', array('userSession' => $app['session']->get('user'),'panier' => $panier, 'MVe_liquides'=> $MVe_liquides, 'MVe_cigs'=> $MVe_cigs, 'MVaccessoires'=> $MVaccessoires, 'MVdiy'=> $MVdiy, 'MVexpert'=> $MVexpert, 'nouveautes'=> $nouveautes));
                                                           
                                                          })
                                                              ->bind('panier_check')
                                                          ;




                                                          -
                                                          Edité par JulienProd 15 juin 2018 à 13:25:47

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter

                                                          UPDATE bdd avec foreach

                                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                          • Editeur
                                                          • Markdown