Mise a jour de données

Résolu/Fermé
polo - 9 sept. 2008 à 14:31
 polo - 9 sept. 2008 à 15:20
Bonjour,

j'ai une table de ce style

enregistrement 1 , valeur1 , valeur2 , id
enregistrement 2 , valeur1 , valeur2 , id
enregistrement 3 , valeur1 , valeur2 , id
enregistrement 4 , valeur1 , valeur2 , id
...

donc je voudrais que toutes les valeurs 1 et 2 de chaque id soit mis a jour par une augmentation commune ... mon soucis c'est que les valeur de chaque id sont modifié et prennent toutes les données de la première valeur alors qu'a la base elles sont ou peuvent être différente

Voici mon code

<?php
mysql_connect("...","...","...") or die ("Erreur lors de connexion a la bdd 1");
mysql_select_db("...") or die ("Erreur lors de connexion a la bdd 2");

$plus1=50000;
$plus2=1;

$reponse = mysql_query("SELECT * FROM Table1 ");
$donnees = mysql_fetch_array($reponse);
while ($donnees = mysql_fetch_array($reponse) )
{
$valeur1 = $donnees['valeur1'];
$valeur2 = $donnees['valeur2'];
$id=$donnees['id'];
$valeur1 = $valeur1 + $plus1;
$valeur2 = $valeur2 + $plus2;

echo $valeur1;
echo $valeur2;

mysql_query("UPDATE Table1 SET valeur1='$valeur1', valeur2='$valeur2' WHERE id=$id");
}

mysql_close();
?>

mon echo fait apparaitre que les valeur renvoyé sont identique pour chaque enregistrement alors que ca ne devrai pas etre le cas ... la valeur1 du 1er enregistrement est différente de celle du 2eme idem pour valeur2 ...
merci pour votre aide
A voir également:

8 réponses

Rctll Messages postés 499 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 30 juin 2010 1 409
9 sept. 2008 à 15:05
C'est moi qui ai fait une erreur ; le where id=$id , tu l'oublie ( c'etait au cas ou tu voulait juste modifier certains id )
1
Rctll Messages postés 499 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 30 juin 2010 1 409
9 sept. 2008 à 14:41
Bonjour

Une petite question , pourquoi te complique tu la tache avec un traitement php ? mysql peut fait le boulot que tu veux en une seule commande :)
<?php
mysql_connect("...","...","...") or die ("Erreur lors de connexion a la bdd 1");
mysql_select_db("...") or die ("Erreur lors de connexion a la bdd 2");
mysql_query("UPDATE Table1 SET valeur1=valeur1 + $plus1 , valeur2=valeur2 + $plus2 WHERE id=$id");
?>

théoriquement çà marche ( bon apres j'ai ptet fait des erreur de syntaxe :D )
0
ici, pas besoin de clause WHERE.
Et ça n'explique pas le problème d'origine.
Au fond... N'aurais-tu pas le même id pour tout le monde ?
0
non le id est en incrémentation c'est donc pas le meme ... je viens de me dire que je pourrais peut etre passer pas un for avec i basé sur les id mais bon je pensais qu'il y aurais une methode plus simpliste quand meme
0

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

Posez votre question
La méthode de RCtll est sûrement la plus efficace, un seul appel à mysql. Mais la tienne aurait dû marcher. J'aurais bien aimé comprendre.
0
je vais tester celle de Rctll encore que je me demande comment msql va définir chaque id sans que je lui envoi une boucle pour qu'il le fasse a chaque id ... surtout si je dois définir le where par id ... je test ca avec les reponse mais a mon avis faudra quand meme le while non ????
Désolé je suis encore dans la classe débutant :(
0
oki je me disais aussi ... je regarde ça merci pour ta réponse :)
0
ça marche merci beaucoup ... a vous eux et surtout merci de ta patience toto ... tant pis je saurais pas pourquoi mon code marchait pas mais pourquoi faire compliqué quand on peut faire simple ;)
0