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 :

Transferer les données d'1 table a une autre [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 68
    Points
    68
    Par défaut Transferer les données d'1 table a une autre
    Bonjour,

    je cherche a faire un transfert en php d'une table a l'autre en changeant la structure et en vidant la première table au fur et a mesure. Je m'explique, j'ai une table sous cette forme :

    id Dateentree Nom Numero Code Quantite Code1 Quantite1 Code2 Quantite2 Magasin
    1 2012-01-12 Bid 123 234 12 235 10 243 5 Paris
    2 2012-01-13 Mac 345 235 43 234 45 237 6 Lyon

    et je voudrais pouvoir transferer dans une table sous cette forme :

    id Dateentree Nom Numero Code Quantite Magasin
    1 2012-0112 Bid 123 234 12 Paris
    2 2012-0112 Bid 123 235 10 Paris
    3 2012-0112 Bid 123 243 5 Paris
    4 2012-0113 Mac 345 235 43 Lyon
    5 2012-0113 Mac 345 234 45 Lyon
    6 2012-0113 Mac 345 237 6 Lyon

    Et que la première table soit vidé.

    Comment faire ? Pouvez vous m'aider svp ?

    Merci d'avance pour votre aide

    Amicalement

  2. #2
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Bonjour,

    un simple select :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mysql_query("SELECT * FROM MATABLE");
    OU si tu utilises PDO :
    $requete = $bdd->query("SELECT * FROM MATABLE")
    Puis tu balayes le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while($data = mysql_fetch_array())
    {
    $requete2 = mysql_query("INSERT INTO MATABLE2(id, Dateentree, Nom, Numero, Code, Quantite, Magasin) VALUES(".$data['id'].", '".$data['Dateentree']."', '".$data['Nom']."', '".$data['Numero']."', '".$data['Code']."', '".$data['Quantite']."', '".$data['Magasin']."')");
    }
    OU en PDO 
    while($data = $requete->fetch())
    {
    $requete2 = $bdd->exec("INSERT INTO MATABLE2(id, Dateentree, Nom, Numero, Code, Quantite, Magasin) VALUES(".$data['id'].", '".$data['Dateentree']."', '".$data['Nom']."', '".$data['Numero']."', '".$data['Code']."', '".$data['Quantite']."', '".$data['Magasin']."')");
    }
    Après il ne reste reste plus qu'à vider ta table si vous c'est bien passé

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 68
    Points
    68
    Par défaut
    Ok et merci,

    je comprend l'idée mais... dans ce cas j'ai juste l'integration du code et quantité mais pas code1 et code2 et quantité1 et quantité2 non ?

    Merci pour ton aide

  4. #4
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    D'accord j'avais pas bien compris...

    Pourrais-tu me faire un exemple de ce que tu veux ?

    En gros je pense que tu cherches à faire un GROUP BY... Mais sur quel champ ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 68
    Points
    68
    Par défaut
    En fait, dans ma premiere table j'ai plusieurs champs code (code, code1, code2) et plusieurs champs quantité (quantite, quantite1, quantite2) et je voudrais pouvoir regrouper les codes et les quantités en conservant le champs nom et le champs numero devant.

    En gros, si dans ma premiere table, j'ai :

    id Dateentree Nom Numero Code Quantite Code1 Quantite1 Code2 Quantite2 Magasin
    1 2012-01-12 Bid 123 234 12 235 10 243 5 Paris
    2 2012-01-13 Mac 345 235 43 234 45 237 6 Lyon

    Comme tu le vois j'ai deux personnes (Bid et Mac) qui ont passées 3 commandes chacun

    Pour Bid, 12 quantités du code 234, 10 quantité du code 235 et 5 quantité du code 243

    Et je voudrais que dans la table finale, par exemple pour Bid, j'ai une ligne qui reprend son nom (Bid) son numéro (123) (donc sur trois lignes puisque 3 commandes) avec sur la ligne 1 son premier code (234), sa première quantité (12) et son magasin, sur la ligne 2 la meme chose avec le deuxième code(235), sa deuxième quantité (10), et son magasin, etc...

    Merci encore pour ton aide

    Amicalement

  6. #6
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Bonjour,

    Il te suffit de récupérer une ligne de ta première table, de vérifier que les champs code et quantité ne soit pas vide et d’effectuer un insert dans ta nouvelle table.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $result = $pdo->query("SELECT * FROM table1");
    while($row = $result->fetch()){
        if(!empty($row['code']) && !empty($row['quantite']))
            $pdo->exec("INSERT INTO table2(id, dateentree, nom, numero, code, quantite, magasin), VALUES(" . $row['id'] . ", " . $row['dateentree'] . ", " . $row['numero'] . ", " . $row['code'] . ", " . $row['quantite'] . ", " . $row['magasin'] . ")");
        if(!empty($row['code1']) && !empty($row['quantite1']))
            $pdo->exec("INSERT INTO table2(id, dateentree, nom, numero, code, quantite, magasin), VALUES(" . $row['id'] . ", " . $row['dateentree'] . ", " . $row['numero'] . ", " . $row['code1'] . ", " . $row['quantite1'] . ", " . $row['magasin'] . ")");
        if(!empty($row['code2']) && !empty($row['quantite2']))
            $pdo->exec("INSERT INTO table2(id, dateentree, nom, numero, code, quantite, magasin), VALUES(" . $row['id'] . ", " . $row['dateentree'] . ", " . $row['numero'] . ", " . $row['code2'] . ", " . $row['quantite2'] . ", " . $row['magasin'] . ")");
     
    }

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 68
    Points
    68
    Par défaut
    Tout d'abord merci.

    Je viens de tester et il n'y a pas d'erreur visible. Par contre, il ne se fait pas de transfert non plus

    Amicalement

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 68
    Points
    68
    Par défaut
    Je te donne mon code (complétement inspiré du tien)
    je n'ai pas de message d'erreur mais ca ne renvoi rien dans la table.
    Ou me suis je planté ?

    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
    <?php
    $PARAM_hote='localhost'; // le chemin vers le serveur
    $PARAM_nom_bd='bidule'; // le Nom de votre base de données
    $PARAM_utilisateur='root'; // Nom d'utilisateur pour se connecter
    $PARAM_mot_passe=''; // mot de passe de l'utilisateur pour se connecter
    $pdo = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
     
    $result = $pdo->query("SELECT * FROM `commandejarvalide1`");
    while($row = $result->fetch()){
        if(!empty($row['Code']) && !empty($row['Quantite']))
            $pdo->exec("INSERT INTO commandejarvalide(id, dateentree, Nom, Numero, Code, Quantite, Magasin), VALUES(" . $row['id'] . ", " . $row['dateentree'] . "," . $row['Nom'] . ", " . $row['Numero'] . ", " . $row['Code'] . ", " . $row['Quantite'] . ", " . $row['Magasin'] . ")");
        if(!empty($row['Code1']) && !empty($row['Quantite1']))
            $pdo->exec("INSERT INTO commandejarvalide(id, dateentree, Nom, Numero, Code, Quantite, Magasin), VALUES(" . $row['id'] . ", " . $row['dateentree'] . "," . $row['Nom'] . ", " . $row['Numero'] . ", " . $row['Code1'] . ", " . $row['Quantite1'] . ", " . $row['Magasin'] . ")");
        if(!empty($row['Code2']) && !empty($row['Quantite2']))
            $pdo->exec("INSERT INTO commandejarvalide(id, dateentree, Nom, Numero, Code, Quantite, Magasin), VALUES(" . $row['id'] . ", " . $row['dateentree'] . "," . $row['Nom'] . ", " . $row['Numero'] . ", " . $row['Code2'] . ", " . $row['Quantite2'] . ", " . $row['Magasin'] . ")");
     
    								}
    ?>
    il te faut savoir que lorsque directement depuis mon phpymyadmin je teste le code j'ai une erreur sur la premiere ligne de code donc du select.

    Merci encore pour ton aide

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 68
    Points
    68
    Par défaut
    La solution adoptée et qui fonctionne :

    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
    <?php
     
    	//Connexion à la base. 
    	mysql_connect("localhost","root","")or die("Problème avec la base de données");
    	mysql_select_db("*****")or die ("pas de connection");
     
    //recup des variables
    $reponse = mysql_query("SELECT * FROM commandejarvalide1"); // Requête SQL
    if ($reponse)
    {
    while ($row = mysql_fetch_assoc($reponse))
    {
    	if(!empty($row['Code']) && !empty($row['Quantite']))
            mysql_query("INSERT INTO commandejarvalide(`id`, `dateentree`, `Nom`, `Numero`, `Code`, `Quantite`, `Magasin`) VALUES('', '".$row['dateentree']."','".$row['Nom']."','".$row['Numero']."','".$row['Code']."','".$row['Quantite']."','".$row['Magasin']."')");
        if(!empty($row['Code1']) && !empty($row['Quantite1']))
            mysql_query("INSERT INTO commandejarvalide(`id`, `dateentree`, `Nom`, `Numero`, `Code`, `Quantite`, `Magasin`) VALUES('', '".$row['dateentree']."','".$row['Nom']."','".$row['Numero']."','".$row['Code1']."','".$row['Quantite1']."','".$row['Magasin']."')");
        if(!empty($row['Code2']) && !empty($row['Quantite2']))
            mysql_query("INSERT INTO commandejarvalide(`id`, `dateentree`, `Nom`, `Numero`, `Code`, `Quantite`, `Magasin`) VALUES('', '".$row['dateentree']."','".$row['Nom']."','".$row['Numero']."','".$row['Code2']."','".$row['Quantite2']."','".$row['Magasin']."')");
     
    }
    }
    else
    {
    echo 'Pas de champs!!!';
    }	
    ?>
    Merci a tous

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

Discussions similaires

  1. [WD12E] Afficher les données dans la table d'une requête
    Par melchi dans le forum WinDev
    Réponses: 2
    Dernier message: 12/08/2009, 09h07
  2. [VB6]Grouper les données des deux tables dans une troisième
    Par Abed_H dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 29/04/2009, 11h29
  3. Transferer des données d'un table vers une autre
    Par pooi1 dans le forum VBA Access
    Réponses: 4
    Dernier message: 31/05/2007, 01h05
  4. [PostGreSQL] Transfert de données d'un table vers une autre
    Par psychomatt dans le forum Langage SQL
    Réponses: 5
    Dernier message: 16/03/2006, 16h57

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