récupérer la valeur d'une colonne maj avec update

récupérer la valeur d'une colonne maj avec update - PHP - Programmation

Marsh Posté le 05-07-2008 à 23:23:10    

Bonjour,
 
Je cherche à mettre à jour un fichier mysql :
Voici le code très simple :
Code :
 
 $query5="update publicite set clic=clic+1,quantiteutil=quantiteutil+1 where idpub='$idpub' and quantiteutil<quantite";
 $result5 = mysql_query($query5, $connection) or die('error making query');
 
 
Je mets donc à jour le fichier publicite uniquement si la colonne quantiteutil est inférieur à la colonne quantite
si le fichier est bien mis à jour (récupéré avec mysql_affected_rows), j'aimerais récupéré la valeur de la colonne quantiteutil et quantite afin de vérifier qu'elles n'ont pas la même valeur.
Pour expliquer plus clairement ce que je souhaite, en fait j'ai des publicités avec des quantités achetées par les annonceurs, quantiteutil correspond aux quantités utilisées et quantite aux quantités achetées par l'annonceur.
Dans le cas ou les deux valeurs sont identiques celà signifie que la campagne vient de se terminer dans ce cas j'aimerais envoyer un email à l'annonceur pour l'avertir de la fin de sa campagne.
Voilà pourquoi j'ai besoin de récupérer les valeurs de ces deux colonnes après MA mise à jour. Si une mise à jour est faîte dans la micro-seconde après je ne veux pas la nouvelle valeur des deux colonnes mais bien celles de ma mise à jour. Celà évitera que soit l'annonceur reçoive 20 mails au lieu d'un seul.

Reply

Marsh Posté le 05-07-2008 à 23:23:10   

Reply

Marsh Posté le 06-07-2008 à 09:21:47    

Reply

Marsh Posté le 06-07-2008 à 22:54:05    

sans faire de select car récupérer une valeur par select n'est pas fiable lorsque des utilisateurs peuvent avoir une action sur les données lues
Mon code est optimisé en faisant celà :
 $query5="update publicite set clic=clic+1,quantiteutil=quantiteutil+1 where idpub='$idpub' and quantiteutil<quantite";
 $result5 = mysql_query($query5, $connection) or die('error making query');  
La méthode peu fiable est la suivante :
faire un select et récupérer la valeur de la colonne clic puis y ajouter 1 et affecter cette nouvelle valeur avec un update set clic=$clicincrement
$clicincrement contenant les clics récupérés auparavant plus un clic

Reply

Marsh Posté le 07-07-2008 à 07:38:42    

pas30 a écrit :

sans faire de select car récupérer une valeur par select n'est pas fiable lorsque des utilisateurs peuvent avoir une action sur les données lues


 
Euh. Pas sûr d'avoir compris, mais t'as la notion de transaction, si nécessaire, si ta base est en InnoDB...


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 07-07-2008 à 09:41:16    

en myIsam tu peut aussi faire un lock table

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed