Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/02/2012, 08h50   #1
Nouveau Membre du Club
 
Inscription : février 2009
Messages : 123
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 123
Points : 29
Points : 29
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
steph70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 09h36   #2
Membre éclairé
 
Avatar de Nowwis
 
Homme
Développeur Web
Inscription : juin 2009
Messages : 363
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 363
Points : 365
Points : 365
Bonjour,

un simple select :

Code :
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 :
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é
Nowwis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 09h44   #3
Nouveau Membre du Club
 
Inscription : février 2009
Messages : 123
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 123
Points : 29
Points : 29
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
steph70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 09h51   #4
Membre éclairé
 
Avatar de Nowwis
 
Homme
Développeur Web
Inscription : juin 2009
Messages : 363
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 21
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2009
Messages : 363
Points : 365
Points : 365
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 ?
__________________
Si ton message est résolu, il y a un bouton qui est fait pour ça :
Il se trouve tout en bas de la conversation !

N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant
Nowwis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 10h03   #5
Nouveau Membre du Club
 
Inscription : février 2009
Messages : 123
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 123
Points : 29
Points : 29
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
steph70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 11h05   #6
Membre éclairé
 
Avatar de humitake
 
Homme Olivier
Étudiant
Inscription : novembre 2010
Messages : 303
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2010
Messages : 303
Points : 384
Points : 384
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 :
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'] . ")");
 
}
humitake est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 13h59   #7
Nouveau Membre du Club
 
Inscription : février 2009
Messages : 123
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 123
Points : 29
Points : 29
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
steph70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 14h28   #8
Nouveau Membre du Club
 
Inscription : février 2009
Messages : 123
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 123
Points : 29
Points : 29
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 :
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
steph70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 16h38   #9
Nouveau Membre du Club
 
Inscription : février 2009
Messages : 123
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 123
Points : 29
Points : 29
La solution adoptée et qui fonctionne :

Code :
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
steph70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h38.


 
 
 
 
Partenaires

Hébergement Web