[php] Transferer les données d'1 table

lonewolf -  
 lonewolf -
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

5 réponses

  1. lonewolf
     
    La solution adoptée et qui fonctionne :

    <?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
    1
  2. lonewolf
     
    J'ai essayé cela :
    <?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'] . ")");
     
    								}
    ?>


    Mais meme si cela ne me renvoi pas d'erreur, rien ne s'inscrit dans ma table.

    Ou ais je peché ?

    Merci pour votre aide
    0
  3. vordano Messages postés 1981 Statut Membre 316
     
    hum, t'as pas l'impression de parler tout seul ?
    le dédoublement de personnalité est grave tu sais ^^'

    pour ton problème tu as juste à faire 3 insert par ligne de ta première table (ce que tu as visiblement fait)
    et pense aux contraintes de type pour les quotes (mettre des ' pour les string et ne pas en mettre pour les integer)
    0
    1. lonewolf
       
      En fait, non j'ai bien une personne qui m'a suggéré que les normes de ma table n'etait pas bonnes mais entretemps il a du effacer son message. lol
      0
    2. vordano Messages postés 1981 Statut Membre 316
       
      ben c'est sur que si tu voulais bien faire, tu aurais dû éclater un peu plus les champs de ta table.
      là il n'y as aucun rapport entre le lieu du magasin et la personne qui as acheté le produit ni avec la date
      tu sais faire un mcd ? (ou un schéma simplifié d'une base de donnée ?)
      0
  4. lonewolf
     
    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
    -1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lonewolf
     
    Désolé, mais je ne comprend ta suggestion.
    Les normes (pour moi) sont respectées.

    Amicalement
    -2