update dans 2 tables?

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 : update dans 2 tables?

par YVES » 09 mai 2007, 21:18

Je retiens la soluce de Jules et la testerai, sinon, j'ai résolu (betement) mon pb, à savoir que l'id de la table véhicule n'était pas défini :oops: donc le second update ne fonctionnait pas!
Ryle, je vais réécrire le code plus proprement mais il fonctionne tout de meme :?

par Jules Petibidon » 09 mai 2007, 11:59

hello,

si mes souvenirs sont bons, tu peux updater deux tables en meme temps tout simplement comme ca :

UPDATE table1, table2 SET table1.champ='valeur', table2.champ='valeur' WHERE table1.champ=table2.champ AND table2.champ='valeur'

par Ryle » 09 mai 2007, 10:56

Pas bien compris la question, mais dans tous les cas, tu es obligé de faire un update par table.

Sinon, tu dois avoir un message d'erreur sur ta première requête (et nous le donner aurait été une bonne idée ;)) car si la structure des tables est identique (outre le fait que tu ne devrais effectivement pas avoir deux tables dans ce cas et que la conception est à revoir) il est peu probable que ceci soit juste :
$rsa = "UPDATE ... posx_vehicule=posx, posy_vehicule=posy ... "; 
Manque les apostrophes, les $ des variables, sortir les variables de la chaine, de plus tu as un ";" en trop à la fin de ta requête (idem pour la seconde ceci dit)

par Sékiltoyai » 08 mai 2007, 23:30

Dans la mesure où les 2 tables semblent avoir l'identifiant en commun, c'est surtout je pense le shéma de tes tables qui cloche un peu.
Tu ne peux pas fusionner les 2 tables ?

par YVES » 08 mai 2007, 19:20

voici le "vrai" code, le premier update s'effectue mais pas le second:
$rsa = "UPDATE membres SET billet= billet-500, vehicule= 'cheval', img_vehicule='./vehicule/cheval.gif', 
etat_vehicule='vide', img_etatvehicule='images/jetonvert.gif', posx_vehicule=posx, posy_vehicule=posy, ptdep=2,
exp=exp+0.1, mp='Vous avez acheté un cheval' WHERE id = " . $id .";"; 
mysql_query($rsa) or die('Erreur SQL '.$rsa.'<br>'.mysql_error());
if($rsa){
                    $_SESSION['billet']= $_SESSION['billet']-500;
                    $_SESSION['vehicule']= 'cheval';
                    $_SESSION['img_vehicule']= './vehicule/cheval.gif';
                    $_SESSION['etat_vehicule']= 'vide';
                    $_SESSION['img_etatvehicule']= './images/jetonvert.gif';
				    $_SESSION['posx_vehicule']= $_SESSION['posx'];
				    $_SESSION['posy_vehicule']= $_SESSION['posy'];
				    $_SESSION['ptdep']= '2';
                    $_SESSION['exp']= $_SESSION['exp']+0.1;
                    $_SESSION['mp']= 'Vous avez acheté un cheval';
			   }
$rsb = "UPDATE vehicule SET vehicule= 'cheval', img_vehicule='./vehicule/cheval.gif', etat_vehicule='vide', img_etatvehicule='images/jetonvert.gif',
posx_vehicule='$posx', posy_vehicule='$posy', ptdep=2 WHERE id = " . $id .";"; 
mysql_query($rsb) or die('Erreur SQL '.$rsb.'<br>'.mysql_error());
header("Location: son_achat.htm");
 mysql_close();
?>
Je pense qu'avec une seule requète cela doit etre faisable, j'ai testé avec UNION et JOIN mais sans succès.

par Sékiltoyai » 07 mai 2007, 23:26

Une erreur ?
Laquelle marche, laquelle ne marche pas ?
Les noms sont-ils les noms réels ?

par oox » 07 mai 2007, 22:55

Peut être ça ne te convient pas, mais tu n'as pas d'autres choix ... Sauf si ce n'est revoir ton MCD car pour te trouver dans une telle situation, il y a de fortes chances que ta base soit mal conçue.

update dans 2 tables?

par YVES » 07 mai 2007, 22:47

Bonsoir, je n'arrive pas à effectuer un update dans 2 tables différentes....
Les champs sont les memes dans les deux tables.
(le code qui suit est volontairement épuré)
$rsa = "UPDATE membres SET blabla = test WHERE id = " . $id .";"; 
mysql_query($rsa) or die('Erreur SQL '.$rsa.'<br>'.mysql_error());
if($rsa){
                    $_SESSION['blabla']=' test';
  }
$rsb = "UPDATE blabla SET blabla = test  WHERE id = " . $id .";"; 
mysql_query($rsb) or die('Erreur SQL '.$rsb.'<br>'.mysql_error());
header("Location: page_membre.htm");
 mysql_close();
?>