Modifier/Ajouter/Additionner une valeur dans une table sql

Eléphant du PHP | 124 Messages

31 août 2006, 19:54

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
Modifié en dernier par neo765 le 29 mai 2008, 23:36, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

31 août 2006, 20:06

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 ...

Eléphant du PHP | 124 Messages

31 août 2006, 20:24

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
Modifié en dernier par neo765 le 29 mai 2008, 23:36, modifié 1 fois.

ViPHP
ViPHP | 2144 Messages

31 août 2006, 20:36

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.

Eléphant du PHP | 337 Messages

31 août 2006, 22:57

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 ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

01 sept. 2006, 00:30

ou peut-on faire l'UPDATE directement ?
oui :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 337 Messages

01 sept. 2006, 04:29

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)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

01 sept. 2006, 10:02

" 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 ?