Partage
  • Partager sur Facebook
  • Partager sur Twitter

Dupliquer une ligne d'une table par le PHP

Sujet résolu
    20 novembre 2019 à 10:19:13

    Bonjour,

    Je souhaiterais apprendre ou avoir une aide pour pouvoir dupliquer une ligne de table
    par le PHP (en cliquant sur un bouton comme Ajouter/Modifier/Supprimer). 

    Le but étant que mon client quand il a besoin de publier un produit, il n'a pas besoin de remplir tous les champs, 

    il aura juste à dupliquer la publication (création d'un id automatiquement) puis modifier ce qu'il souhaite. 

    Merci de votre aide.

    • Partager sur Facebook
    • Partager sur Twitter
      20 novembre 2019 à 10:37:51

      Salut

      Que veux tu dire par "dupliquer une ligne de table"? 

      J'avoue que j'ai un peu de mal à comprendre ton besoin. L'utilisateur peut créer plusieurs fois le même produit? 

      • Partager sur Facebook
      • Partager sur Twitter
        20 novembre 2019 à 10:48:35

        Salut, 

        Merci pour ta disponibilité !! 

        Alors je t'explique j'ai client, il commercialise des scooters et des accessoires. 

        J'ai crée un backoffice pour qu'il puisse ajouter/modifier/supprimer ces produits avec plusieurs champs (reference, photos, prix, descriptif, etc...). 

        Mais plusieurs produits se ressemblent alors au lieu d'ajouter une nouvelle publication en remplissant touuuuuuus(^^) les champs, il souhaiterait 

        simplement cliquer sur dupliquer ce produit( ça créera un nouvel id + il récupère les résultats des données de la table que l'on a dupliqué)

        puis une fois qu'il a dupliqué il pourra modifier (ex: la couleur du scooter, référence etc..). 

        • Partager sur Facebook
        • Partager sur Twitter
          20 novembre 2019 à 11:00:11

          ah..

          Heu alors c'est une solution comme une autre, je pense que d'autres auront plus simple

          -> L'utilisateur clique sur dupliquer

          -> récupération de l'id du produit

          -> recherche des informations sur ledit produit en base grâce à l'id

          -> affichage des infos dans les champs

          -> l'utilisateur modifie ce dont il a besoin

          -> Submit du form

          -> traitement classique d'un formulaire

          -> requête sql de type insert avec les données reçues. Si tes id sont en auto_incrément tu n'auras même pas à gérer ça. Normalement.

          • Partager sur Facebook
          • Partager sur Twitter
            20 novembre 2019 à 11:05:42

            Salut

            sinon tu as:

            INSERT INTO maTable (
            SELECT <tous les champs sauf l'id> FROM maTable WHERE id = <idSelectionneParLeBouton>
            )

            et tu change les données dans un formulaire supplémentaire

            -
            Edité par christouphe 20 novembre 2019 à 11:07:47

            • Partager sur Facebook
            • Partager sur Twitter
              20 novembre 2019 à 11:09:12

              Tu vois quand je dis que d'autres auront plus simple xD
              • Partager sur Facebook
              • Partager sur Twitter
                20 novembre 2019 à 11:17:18

                Vous êtes au top, j'essayes ça puis je vous fait un feedback ^^
                • Partager sur Facebook
                • Partager sur Twitter
                  20 novembre 2019 à 11:23:32

                  Par contre si tu as setté des champs UNIQUE ça va planter ;)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 novembre 2019 à 11:34:03

                    Ça ne fonctionne pas ... Je ne vois pas où est l'erreur ?
                            if($mode_edition == 0) {
                            $ins = $bdd->prepare('INSERT INTO '.$link_gs.'_products ("SELECT reference, marque, modele, cylindree, type, motorisation, prix, acquisition, descriptif, categories, 
                              stock, etat, garantie, moteur, puissance, batterie, nombre_batterie, autonomie, recharge, nombre_cycle, consommation, dimension, poids_batterie, poids_scooter_vide, 
                              poids_maximum_embarque, nombre_place_assise, frein_avant, frein_arriere, roue_avant, roue_arriere, phare, dimension_longueur, dimension_epaisseur, dimension_hauteur, 
                              serie, options, coloris, image1, image2, image3, image4, image5, image6, image7, image8, affichage_page_accueil, publication FROM '.$link_gs.'_products WHERE id = ?") VALUES 
                              (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())');
                              $ins->execute(array($reference, $marque, $modele, $cylindree, $type, $motorisation, $prix, $acquisition, $descriptif, $categories, $stock, $etat, $garantie, $moteur, $puissance, 
                              $batterie, $nombre_batterie, $autonomie, $recharge, $nombre_cycle, $consommation, $dimension, $poids_batterie, $poids_scooter_vide, $poids_maximum_embarque, $nombre_place_assise, 
                              $frein_avant, $frein_arriere, $roue_avant, $roue_arriere, $phare, $dimension_longueur, $dimension_epaisseur, $dimension_hauteur, $serie, $options, $coloris, $image1, $image2, 
                              $image3, $image4, $image5, $image6, $image7, $image8, $affichage_page_accueil, $publication));
                            } else { 
                                $update = $bdd->prepare('UPDATE '.$link_gs.'_products SET reference = ?, marque = ?, modele = ?, cylindree = ?, type = ?, motorisation = ?, prix = ?, acquisition = ?, descriptif = ?,
                                gories = ?, stock = ?,etat = ?,garantie = ?, moteur = ?, puissance = ?, batterie = ?, nombre_batterie = ?, autonomie = ?, recharge = ?, nombre_cycle = ?, consommation = ?, dimension = ?,
                                 poids_batterie = ?, poids_scooter_vide = ?, poids_maximum_embarque = ?, nombre_place_assise = ?, frein_avant = ?, frein_arriere = ?, roue_avant = ?, roue_arriere = ?, phare = ?,
                                  dimension_longueur = ?, dimension_epaisseur = ?, dimension_hauteur = ?, serie = ?, options = ?, coloris = ?, image1 = ?, image2 = ?, image3 = ?, image4 = ?, image5 = ?, image6 = ?,
                                   image7 = ?, image8 = ?, affichage_page_accueil = ?, publication = ?, date_publication = NOW() WHERE id = ?');
                    
                                $update->execute(array($reference, $marque, $modele, $cylindree, $type, $motorisation, $prix, $acquisition, $descriptif, $categories, $stock, $etat, $garantie, $moteur, $puissance,
                                 $batterie, $nombre_batterie, $autonomie, $recharge, $nombre_cycle, $consommation, $dimension, $poids_batterie, $poids_scooter_vide, $poids_maximum_embarque, $nombre_place_assise,
                                  $frein_avant, $frein_arriere, $roue_avant, $roue_arriere, $phare, $dimension_longueur, $dimension_epaisseur, $dimension_hauteur, $serie, $options, $coloris, $image1, $image2, $image3,
                                   $image4, $image5, $image6, $image7, $image8, $affichage_page_accueil, $publication, $duplicate));
                                header('Location: g_products.php?id='.$duplicate);
                                $message = 'Votre produit a bien été mis à jour !';
                            }

                    -
                    Edité par tmSOLUTIONS 20 novembre 2019 à 11:36:03

                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 novembre 2019 à 11:37:41

                      Active les exceptions PDO  + activation erreurs PHP

                      Est ce fait ? => si oui, et que tu n'as pas de données en base, c'est bizarre ;)

                      -
                      Edité par christouphe 20 novembre 2019 à 13:12:43

                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 novembre 2019 à 13:00:06

                        Oui j'utilises PDO, il n'y a pas d'erreur affiché ? 

                        Quand je cliques sur dupliquer, il ne reprend pas les données ? Voici mon code: 

                        Je ne vous ai pas mis le formulaire puisque tout va bien, c'est juste le côté developpement PHP, 

                        j'ai cherché entre les lignes et rien ne me choque ?

                           if(isset($_GET['duplicate']) AND !empty($_GET['duplicate'])) {
                                $mode_duplicate = 1;
                                $duplicate_id = htmlspecialchars($_GET['duplicate']);
                                $duplicate_product = $bdd->prepare('SELECT * FROM '.$link_gs.'_products WHERE id = ?');
                                $duplicate_product->execute(array($duplicate_id));
                                if($duplicate_product->rowCount() == 1) {
                                    $duplicate_product = $duplicate_product->fetch();
                                } else {
                                    die('Erreur : le produit n\'a pas été dupliqué...');
                                }
                            }



                                      if($mode_duplicate == 0) {
                                          $ins = $bdd->prepare('INSERT INTO '.$link_gs.'_products ("SELECT reference, marque, modele, cylindree, type, motorisation, prix, acquisition, descriptif, categories, 
                                          stock, etat, garantie, moteur, puissance, batterie, nombre_batterie, autonomie, recharge, nombre_cycle, consommation, dimension, poids_batterie, poids_scooter_vide, 
                                          poids_maximum_embarque, nombre_place_assise, frein_avant, frein_arriere, roue_avant, roue_arriere, phare, dimension_longueur, dimension_epaisseur, dimension_hauteur, 
                                          serie, options, coloris, image1, image2, image3, image4, image5, image6, image7, image8, affichage_page_accueil, publication FROM '.$link_gs.'_products WHERE id = ? ")');
                                          $ins->execute(array($reference, $marque, $modele, $cylindree, $type, $motorisation, $prix, $acquisition, $descriptif, $categories, $stock, $etat, $garantie, $moteur, $puissance, 
                                          $batterie, $nombre_batterie, $autonomie, $recharge, $nombre_cycle, $consommation, $dimension, $poids_batterie, $poids_scooter_vide, $poids_maximum_embarque, $nombre_place_assise, 
                                          $frein_avant, $frein_arriere, $roue_avant, $roue_arriere, $phare, $dimension_longueur, $dimension_epaisseur, $dimension_hauteur, $serie, $options, $coloris, $image1, $image2, 
                                          $image3, $image4, $image5, $image6, $image7, $image8, $affichage_page_accueil, $publication));
                                      }
                        • Partager sur Facebook
                        • Partager sur Twitter
                          20 novembre 2019 à 13:14:23

                          christouphe a écrit:

                          Active les exceptions PDO  + activation erreurs PHP

                          Est ce fait ? => si oui, et que tu n'as pas de données en base, c'est bizarre ;)

                          -
                          Edité par christouphe il y a moins de 5s


                          pfff je me suis trompé, édition au lieu d'ajouter un post :D

                          Sinon mets un debug (echo 1 echo 2 etc) dans la partie o tu es sensé passer, tu sauras si tu y passes vraiment. => je penche pour que tu n'entres même pas dans le if

                          -
                          Edité par christouphe 20 novembre 2019 à 13:16:12

                          • Partager sur Facebook
                          • Partager sur Twitter
                            20 novembre 2019 à 13:30:16

                            Non j'ai réussi, ça fonctionne ^^ alors ça duplique bien le post sayez ! 

                            Vous assurez merci ;-) 

                            • Partager sur Facebook
                            • Partager sur Twitter
                              20 novembre 2019 à 13:34:33

                              N'oublie pas le marqueur Résolu alors ;)
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Dupliquer une ligne d'une table par le PHP

                              × 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