8795 sujets

Développement web côté serveur, CMS

Bonjour,

je tente désespérément de mettre à jour la table peel_stocks de la base artvarpeel à partir de la table produits_peel de la base artcreatif mais je dois avoir une erreur dans l'update bien que aucun code erreur sql n'apparaisse. c'est le point 7 qui ne marche pas, la dernière requête.

<?php
// BASE 2
$host2 = "localhost"; 
$user2 = "LM"; 
$pass2 = "castellet"; 
//$bdd2 = "artcreatif"; // nom de la bdd où sont enregistrés les mouvements de stocks par reference (magasin physique)

//BASE ORIGINALE
$host1 = "localhost"; 
$user1 = "LM1"; 
$pass1 = "castellet"; 
//$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, artcreatif.produits_peel 
			 SET artvarpeel.peel_stock.stock = artvarpeel.peel_stock.stock-artcreatif.produits_peel.qtesortie 
			 WHERE artvarpeel.peel_stocks.produit_id=artcreatif.produits_peel.id"
			 )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,
Larentia Smiley decu
upload/50712-explic2BDD.jpg
Hello...

j'ai beau lire je vois pas d'erreur juste UN oubli...

dans ta dernière requète la 7 Smiley smile

tu ne met pas la connexion à la bdd Smiley smile

vu que tu en a 2 tu ne dois pas taper la bonne bdd Smiley smile

@+
Je commencerais déjà par convertir tous ces mysql_ en mysqli_, mysql_ est obsolète. Pour le reste, tu peux gérer ça quasiment de la même manière.
Et je rejoins pchlj, il manque la connexion à la bdd dans la n°7 Smiley langue
j'ai essayé ça d'un autre forum :

//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>");

mais ça n'a pas marché non plus ...
avec ta dernière requête tu n'as plus qu'une seule base. Tu peux donc parfaitement spécifier la connexion.

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>");