IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

transfert de variables d'une table vers une autre - mise en historique [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut transfert de variables d'une table vers une autre - mise en historique
    Bonjour,

    je souhaite transférer les données d'une table vers une autre.
    Je fais cette manipulation pour mettre en historique les données relatives à des commandes. J'ai donc initialement 2 tables : 1 pour les entetes de la commande et 1 autre pour les lignes de la commande (à une entete de commande peut correspondre plusieurs lignes) liées par une clé étrangère qui est le code de la commande.
    Lorsque je transfert les variables entetes vers une table entetes_historiques_commandes : tout ce passe bien. Par contre le transfert des lignes de la commande vers une table lignes_historiques_commandes échoue.

    Voici mon code :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    // Récupération des valeurs à transférer de la table entetes_commandes vers la table entetes_historiques_commandes
                    $requete_sql="SELECT * FROM entetes_commandes WHERE code_ent_cmde='$code_ent_cmde'";
                    $resultat_sql=mysql_query($requete_sql);
                    $row =mysql_fetch_object($resultat_sql);                       
     
                    // Préparation des valeurs à transférer
                    $code_ent_histo=$row->code_ent_cmde;
                    $code_cli_ent_histo=$row->code_cli_ent_cmde;
                    $date_ent_histo=$row->date_ent_cmde;
                    $qte_totale_ent_histo=$row->qte_totale_ent_cmde;
                    $poids_total_ent_histo=$row->poids_total_ent_cmde;
                    $total1_ttc_ent_histo=$row->total1_ttc_ent_cmde;
                    $mtt_promo_ent_histo=$row->mtt_promo_ent_cmde;
                    $total2_ttc_ent_histo=$row->total2_ttc_ent_cmde;
                    $tva_ent_histo=$row->tva_ent_cmde;
     
                    // Insertion des valeurs dans la table entetes_historiques_commandes
                    $requete_sql="INSERT INTO entetes_historiques_commandes (code_ent_histo, code_cli_ent_histo, date_ent_histo, qte_totale_ent_histo, poids_total_ent_histo, total1_ttc_ent_histo, mtt_promo_ent_histo, total2_ttc_ent_histo, tva_ent_histo, num_colissimo_ent_histo) VALUES ('$code_ent_histo', '$code_cli_ent_histo', '$date_ent_histo', '$qte_totale_ent_histo', '$poids_total_ent_histo', '$total1_ttc_ent_histo', '$mtt_promo_ent_histo', '$total2_ttc_ent_histo', '$tva_ent_histo', '$num_colissimo_ent_histo')";
                    $resultat_sql=mysql_query($requete_sql);
                    if ($resultat_sql)
                    {
                        // print "Insertion réussie";
     
                        // Récupération des valeurs à transférer de la table lignes_commandes vers la table lignes_historiques_commandes
                        $requete_sql="SELECT * FROM lignes_commandes WHERE code_ent_cmde='$code_ent_cmde' ORDER BY code_li_cmde";
                        $resultat_sql= mysql_query($requete_sql);
                        $nombre_enregistrements = mysql_numrows($resultat_sql);
     
                        // Parcours séquentiel de l'extraction
                        for ($k=0;$k<$nombre_enregistrements;$k++)
                        {
                            // Préparation des valeurs à transférer
                            $ligne_produit=@mysql_fetch_object($resultat_sql);
                            $code_li_histo=$ligne_produit->code_li_cmde;
                            $code_prod_li_histo=$ligne_produit->code_prod_li_cmde;
                            $qte_li_histo=$ligne_produit->qte_li_cmde;
                            $poids_prod_li_histo=$ligne_produit->poids_prod_li_cmde;
                            $prix_prod_li_histo=$ligne_produit->prix_prod_li_cmde;
                            $prix_total_li_histo=$ligne_produit->prix_total_li_cmde;
                            $code_ent_histo=$ligne_produit->code_ent_cmde;
     
                            // Insertion des valeurs dans la table lignes_historiques_commandes
                            $requete_sql_2="INSERT INTO lignes_historiques_commandes (code_li_histo, code_prod_li_histo, qte_li_histo, poids_prod_li_histo, prix_prod_li_histo, prix_total_li_histo, code_ent_histo) VALUES ('$code_li_histo', '$code_prod_li_histo', '$qte_li_histo', '$poids_prod_li_histo', '$prix_prod_li_histo', '$prix_total_li_histo', '$code_ent_histo')";
                            $resultat_sql_2=mysql_query($requete_sql_2);
                            if ($resultat_sql_2)
                            {
                                // print "Insertion réussie $code_li_histo";
                            }
                            else
                            {
                                print "<P>Echec d'insertion des valeurs dans la table lignes_historiques_commandes<P><BR>";
                                print "<INPUT TYPE='Button' onclick='javascript:history.go(-1)' VALUE='Retour'>";
                            }
                        }
                    }
                    else
                    {
                        print "<P>Echec d'insertion dans la table entetes_historiques_commandes<P><BR>";
                        print "<INPUT TYPE='Button' onclick='javascript:history.go(-1)' VALUE='Retour'>";
                    }
    Si vous avez une idée...

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    faut que tu réactualises ta page.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    tu peux directement faire une requete sql gu genre

    INSERT INTO lignes_historiques_commandes (code_li_histo, code_prod_li_histo, qte_li_histo, poids_prod_li_histo, prix_prod_li_histo, prix_total_li_histo, code_ent_histo) SELECT code_li_com, code_prod_li_com, qte_li_com, poids_prod_li_com, prix_prod_li_com, prix_total_li_com, code_ent_com FROM lignes_commandes

    il me semble

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    j'ai trouvé mon erreur : il ne faut pas mettre de clé primaire pour la table lignes_historiques_commandes puisque à une même commande (code_ent_histo) correspond plusieurs lignes de commandes. Il faut donc permettre à la BDD d'accepter les doublons.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. [VB.Net] Comment copier une DataRow d'une table vers une autre ?
    Par YLF dans le forum Accès aux données
    Réponses: 7
    Dernier message: 05/09/2012, 23h23
  3. Réponses: 1
    Dernier message: 19/10/2011, 12h13
  4. Copier les enregistrements d'une table vers une table d'une autre DB
    Par karinette21 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/11/2008, 21h50
  5. [VB.NET] Copie d'une table d'une DB vers une autre
    Par SergeF dans le forum Windows Forms
    Réponses: 9
    Dernier message: 20/11/2004, 09h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo