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

Fermé
lonewolf - 1 févr. 2012 à 08:48
 lonewolf - 1 févr. 2012 à 16:38
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
A voir également:

5 réponses

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
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
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
1 févr. 2012 à 15:05
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
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
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
Modifié par vordano le 1/02/2012 à 15:17
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

Amicalement
-2