Page 1 sur 1

Modifier/Ajouter/Additionner une valeur dans une table sql

Posté : 31 août 2006, 19:54
par neo765
Bonjour,

J'aimerai pouvoir additionner une valeur dans une table sql

Par exemple si le champ "var1" vaut "5"
Je voudrais pouvoir ajouter par exemple "2" à "var1" (choisi par un membre)

Se que je ne souhaite pas c'est d'appeller var1 et d'y ajouter 2, car si 2 visiteurs ont chargés la page en même temps la base sera mis à jour que par le dernier et la requete du premier sera ignorée.

Merci

Posté : 31 août 2006, 20:06
par Ryle
Tu peux faire ça avec une simple requête update en utilisant la valeur du champ que tu es en train de mettre à jour :)

Code : Tout sélectionner

UPDATE ta_table SET ton_champ = ton_champ + valeur WHERE ...

Posté : 31 août 2006, 20:24
par neo765
Merci

Mais je pense qu'il y a un problème :

Par exemple : 2 membres chargent la page au même moment :

La valeur de var1 est à 5

Le premier membre y ajoute 2 et valide

Le 2ème qui a toujours var1 en mémoire y ajoute 3 et valide

Au final, l'ajout du membre 1 sera ignorée et la valeur de var1 sera à 8 au lieu de 10

Non ?

Merci

Posté : 31 août 2006, 20:36
par iclo
Non, car les opérations seront effectuées sur les valeurs issues de la table, au moment où seront effectuée l'opération, et non sur celles qui étaient affichées dans la page.

Posté : 31 août 2006, 22:57
par finipe
Je profite du sujet pour poser une question subsidiaire : j'ai souvent dû faire des trucs dans ce genre pour des sites, mais je ne savais pas !

Tu indiques ceci :

Code : Tout sélectionner

UPDATE ta_table SET ton_champ = ton_champ + valeur WHERE ...
... mais j'ai toujours cru qu'on devait faire

Code : Tout sélectionner

SELECT ton_champ FROM ta_table WHERE... { UPDATE ta_table SET ton_champ = ton_champ + valeur WHERE ... }
Alors doit-on d'abord faire un SELECT pour récupérer la valeur du champ, puis la modifier avec un UPDATE, ou peut-on faire l'UPDATE directement ?

Posté : 01 sept. 2006, 00:30
par Truc
ou peut-on faire l'UPDATE directement ?
oui :wink:

Posté : 01 sept. 2006, 04:29
par finipe
Waaaaa chaque fois que je viens sur ce forum j'ai une révélation... et pourtant je commence à me démerder en php depuis le temps, comme quoi on reste débutant très longtemps 8)

Posté : 01 sept. 2006, 10:02
par Ryle
" PHPFrance, le forum des révélation : nous lisons les bugs passés, présents et à venir dans les entrailles de code php, ainsi que dans le marc de sql ! " ;)

Le SELECT ne sert effectivement qu'à la lecture de ta table et tu peux tout à fait faire des INSERT, UPDATE ou DELETE sans consulter la table :)

Ceci étant, as tu essayé de faire l'update du coup ? est ce que ça fonctionne bien comme tu le souhaites ?