[RESOLU] Update entre 2 tables de 2 bases de données différentes

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Update entre 2 tables de 2 bases de données différentes

Re: Update entre 2 tables de 2 bases de données différentes

par Larentia » 06 mai 2015, 10:57

ça marche avec ça :

mysql_query("UPDATE artvarpeel.peel_stocks
SET artvarpeel.peel_stocks.stock = artvarpeel.peel_stocks.stock - " . $row['qtesortie'] .
" WHERE artvarpeel.peel_stocks.produit_id = " . $row['id'], $bdd1 )
or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>");

Merci

Re: Update entre 2 tables de 2 bases de données différentes

par sadeq » 28 avr. 2015, 21:11

Bonjour, donnes le programme que tu as réécrit pour localiser l'erreur.

Re: Update entre 2 tables de 2 bases de données différentes

par Larentia » 27 avr. 2015, 18:12

Voici ce qui s'affiche :

Copie effectuée - Sélection effectuée - MAJ qtés sorties de produits_peel effectuée - Sélection produits-peel effectuée1200302- 4 - MAJ qtés sorties de produits_peel effectuée

ça correspond bien au test de sortie sur l'article 1200302 avec une qté sortie de 4 mais pas d'impact sur la table artvarpeel.peel_stocks

Re: Update entre 2 tables de 2 bases de données différentes

par Larentia » 27 avr. 2015, 18:10

Bonjour et merci de m'aider,

j'ai testé les 2 requêtes aucune ne fonctionne ! le stock ne se met pas à jour ...

Re: Update entre 2 tables de 2 bases de données différentes

par sadeq » 21 avr. 2015, 20:49

Bonjour,
Ta requête Update à l'étape n°7 est une usine à gaz archi-fausse. Or tu as tous les éléments pour qu'elle soit exprimée en plus simple.
Voici le corrigé :
//7-recalcul des qtes en stocks sur la table peel_stocks
 
 mysql_query("UPDATE artvarpeel.peel_stocks 
    SET artvarpeel.peel_stocks.stock = artvarpeel.peel_stocks.stock - " . $row['qtesortie'] . 
         "  WHERE artvarpeel.peel_stocks.produit_id = " . $row['id']  )
          or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>");
On peut même faire la mise à jour du stock sans écrire tout ce programme et avec une seule requête qui calcule la somme des quantités sorties par référence et met à jour le stock du produit relatif à chaque référence.

La formulation se fera comme ça :
Mettre à jour la table "peel_stocks" en modifiant le champs "stock" avec la formule : stock - somme des "qtesortie" du même produit.

La somme des "qtesortie" sera réalisée par une sous-requête SELECT SUM faisant la synthèse des sorties provenant des tables "peel_produits" et "sortiecaisse".

Voici donc la requête SQL respectant cet algorithme:
mysql_query("UPDATE  artvarpeel.`peel_stocks` as s
   SET s.`stock` = s.`stock` - (SELECT SUM(c.`qtesortie`) 
        FROM artcreatif.`sortiecaisse` as c JOIN  artcreatif.`peel_produits` as p ON c.`reference` = p.`reference` 
        WHERE p.`id` = s.`produit_id`                             
        GROUP BY p.`reference`)") 
or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>");

Update entre 2 tables de 2 bases de données différentes

par Larentia » 21 avr. 2015, 13:35

Bonjour,

j'ai fait bcp de recherches sur les forums et de tests mais je n'arrive pas à faire fonctionner un update pour mettre à jour des stocks en fonction de qtés sorties.
- BD artvarpeel : table peel_stocks
- BD artcreatif : table produits_peel avec les "qtesortie"

je mets le script en entier, car j'ai réussi à faire communiquer les 2 BDD sur une fonction INSERT mais pas sur l'UPDATE (point 7 de mes commentaires).
Si quelqu'un peut m'aider !!!!
Je joins des copies d'écran des tables.
explic 2BDD.jpg

Code : Tout sélectionner

<?php // BASE 2 $host2 = "localhost"; $user2 = "xxxxxxxxxx"; $pass2 = "xxxxxxxxxx"; //$bdd2 = "artcreatif"; // nom de la bdd où sont enregistrés les mouvements de stocks par reference (magasin physique) //BASE ORIGINALE $host1 = "localhost"; $user1 = "xxxxxxxxxx"; $pass1 = "xxxxxxxxxx"; //$bdd = "artvarpeel"; // nom de la BD où on a le total du stock par id (site internet qui vend certains articles du magasin) $bdd1 = mysql_connect($host1,$user1,$pass1); $bdd2 = mysql_connect($host2,$user2,$pass2); //1-vidage table temporaire produits_peel sur artcreatif mysql_query("TRUNCATE table artcreatif.produits_peel",$bdd2); //2-selection des colonnes id-ref pour avoir la correspondance de la table artvarpeel-peel_produits $res = mysql_query("SELECT peel_produits.reference, peel_produits.id, peel_produits.nom_fr FROM artvarpeel.peel_produits",$bdd1)or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>"); while ($row = mysql_fetch_array($res)) { // 3-copie des 3 colonnes de artvarpeel-peel_produits dans artcreatif-produits_peel mysql_query("INSERT INTO artcreatif.produits_peel (id, reference, nom_fr) VALUES ('".mysql_real_escape_string($row['id'])."','".mysql_real_escape_string($row['reference'])."','".mysql_real_escape_string($row['nom_fr'])."')",$bdd2)or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>"); } echo"Copie effectuée"; //4-selection des qtes sorties de la table temporaire sortiecaisse (mouvements de stocks) $res1 = mysql_query("SELECT sortiecaisse.reference, sortiecaisse.qtesortie FROM artcreatif.sortiecaisse",$bdd2)or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>"); echo" - Sélection effectuée"; while ($row = mysql_fetch_array($res1)) { // 5-MAJ des qtes sorties de artcreatif-produits_peel avec celles de sortiecaisse mysql_query("UPDATE artcreatif.produits_peel JOIN artcreatif.sortiecaisse ON produits_peel.reference = sortiecaisse.reference SET produits_peel.qtesortie = sortiecaisse.qtesortie",$bdd2)or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>"); } echo " - MAJ qtés sorties de produits_peel effectuée "; //6-sélection des colonnes de produits-peel où il y a eu des sorties de stocks $res2 = mysql_query("SELECT * FROM artcreatif.produits_peel WHERE qtesortie<>0",$bdd2)or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>"); echo" - Sélection produits-peel effectuée"; while ($row=mysql_fetch_array($res2)){ echo $row[reference] ; echo '- '; echo $row[qtesortie] ; } while ($row = mysql_fetch_array($res2)) { //7-recalcul des qtes en stocks sur la table peel_stocks mysql_query("UPDATE artvarpeel.peel_stocks JOIN artcreatif.produits_peel ON artcreatif.produits_peel.id = artvarpeel.peel_stocks.produit_id SET artvarpeel.peel_stocks.stock = artvarpeel.peel_stocks.stock - (SELECT qtesortie FROM artcreatif.produits_peel) WHERE artvarpeel.peel_stocks.produit_id = (SELECT id FROM artcreatif.produits_peel)") or die("<pre><b>MySQL Error:<b/>". mysql_error() ."</pre>"); } echo " - MAJ qtés sorties de produits_peel effectuée "; ?>
en vous remerciant par avance, car je galère, je n'ai pas utilisé de php/sql depuis un moment

Larentia