Commande UPDATE

Eléphant du PHP | 138 Messages

12 juil. 2005, 19:18

Bonsoir,

J'ai un petit soucis avec une commande SQL, lorsque je fais:

UPDATE `matable` SET `monchamp`= monchamp -1 WHERE `cond`=unevaleur

Tout fonctionne normalement tant que "monchamp" est différent de 0 mais dés qu'il est égal à 0 la valeur reste toujours 0 et ne passe pas en négatif ( -1 puis -2 etc...)


quelqu'un aurait-il une idée?

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 juil. 2005, 19:28

fais voir la structure de la table concernée stp

c'est à dire tout le code de CREATE TABLE...
tu peux faire un export et ça te donnera ce code

Eléphant du PHP | 138 Messages

12 juil. 2005, 19:36

Voici

Code : Tout sélectionner

CREATE TABLE `mos_pshop_product` ( `product_id` int(11) NOT NULL auto_increment, `vendor_id` int(11) NOT NULL default '0', `product_parent_id` int(11) NOT NULL default '0', `product_sku` varchar(64) character set latin1 NOT NULL default '', `product_s_desc` varchar(255) character set latin1 default NULL, `product_desc` text character set latin1, `product_thumb_image` varchar(255) character set latin1 default NULL, `product_full_image` varchar(255) character set latin1 default NULL, `product_publish` char(1) character set latin1 default NULL, `product_weight` decimal(10,4) default NULL, `product_weight_uom` varchar(32) character set latin1 default 'pounds.', `product_length` decimal(10,4) default NULL, `product_width` decimal(10,4) default NULL, `product_height` decimal(10,4) default NULL, `product_lwh_uom` varchar(32) character set latin1 default 'inches', `product_url` varchar(255) character set latin1 default NULL, `product_in_stock` int(11) default NULL, `product_virtual_stock` int(11) NOT NULL default '0', `product_available_date` int(11) default NULL, `product_availability` varchar(56) character set latin1 NOT NULL default '', `product_special` char(1) character set latin1 default NULL, `product_discount_id` int(11) default NULL, `ship_code_id` int(11) default NULL, `cdate` int(11) default NULL, `mdate` int(11) default NULL, `product_name` varchar(64) character set latin1 default NULL, `product_sales` int(11) NOT NULL default '0', `attribute` text character set latin1, `custom_attribute` text character set latin1 NOT NULL, `product_tax_id` tinyint(2) NOT NULL default '0', PRIMARY KEY (`product_id`), KEY `idx_product_vendor_id` (`vendor_id`), KEY `idx_product_product_parent_id` (`product_parent_id`), KEY `idx_product_sku` (`product_sku`), KEY `idx_product_ship_code_id` (`ship_code_id`), KEY `idx_product_name` (`product_name`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1998 ;
le champ qui me pose PB est le suivant
`product_in_stock` int(11) default NULL

Eléphant du PHP | 138 Messages

12 juil. 2005, 19:47

Pardon
pour le dérangement, je viens de me rendre compte que c'est une condition plus haut dans mon code qui bloquait la commande UPDATE lorsque les valeurs passent en négatif

Toutes mes excuses, je ferais un peu plus attention à mon code la prochaine fois oops:

et merci pour la rapidité de la réponse.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 juil. 2005, 19:50

je m'attendais à voir un "UNSIGNED" c'est raté :lol:

et du coup je ne peux pas trop t'aider, j'ai créé ta table chez moi

j'ai fait 5 fois cette insertion :

Code : Tout sélectionner

INSERT INTO mos_pshop_product (product_in_stock) VALUES (5)
puis 10 fois ceci :

Code : Tout sélectionner

UPDATE `mos_pshop_product` SET product_in_stock = product_in_stock -1; SELECT product_in_stock FROMmos_pshop_product;
et j'ai bien -5 comme valeur... donc je ne vois pas

:roll:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 juil. 2005, 19:51

ça me rassure j'allais appeler Mulder et Scully...

[Résolu] alors ;)

Eléphant du PHP | 138 Messages

12 juil. 2005, 19:57

faut pas aller jusque là
encore merci
Il y a des gens qui ont une bibliothèque comme des eunuques ont un harem (V. Hugo)