Witam
Mam w module Isotope stworzony atrybut pt "Ilość w magazynie". Jest to pole tekstowe. Mam to w BE przy obsłudze towarów, a wyswietlam w FE. Taka informacja dla klienta. I to na razie wystarcza. Chciałbym jednak żeby ilość danego produktu była automatycznie aktualizowana po zakupie, coby nie trzeba z ręki tego pilnować i poprawiać. Nie chce pisać jakeigoś modułu pt "Warehouse managenent" chodzi tylko o update tego jednego pola w bazie po zakupie.
Jak mogę to rozwiązać?
Pozdr
Witamy na polskim forum Contao
Zarejestruj się teraz, aby skorzystać ze wszystkich funkcji forum. Kiedy się zalogujesz, będziesz mógł tworzyć tematy, pisać posty, rozdawać punkty reputacji, korzystać z prywatnych wiadomości i zarządzać swoim profilem. Jeśli posiadasz już konto, zaloguj się - w przeciwnym wypadku zarejestruj się już teraz!
Zarejestruj się teraz, aby skorzystać ze wszystkich funkcji forum. Kiedy się zalogujesz, będziesz mógł tworzyć tematy, pisać posty, rozdawać punkty reputacji, korzystać z prywatnych wiadomości i zarządzać swoim profilem. Jeśli posiadasz już konto, zaloguj się - w przeciwnym wypadku zarejestruj się już teraz!

Update pola w bazie
Rozpoczęty przez kylu123, sie 24 2012 22:51
#2
Napisano 25 sierpnia 2012 - 07:59

Coś takiego:
<?php // config/config.php $GLOBALS['ISO_HOOKS']['postCheckout'][] = array('MyIsotope', 'udpateQuantity'); // MyIsotope.php class MyIsotope extends System { public function updateQuantity($objOrder, $arrItemIds, $arrData) { $this->Database->execute("UPDATE tl_iso_products SET quantity=quantity-1 WHERE id IN (" . implode(',', array_map($arrItemIds)) . ")"); } }
Codefog - Contao web development
#3
Napisano 18 września 2012 - 20:33

Dzięki Kamil za podpowiedź. Siadłem własnie do tego, niestety dostaje komunikat:
"Fatal error: Call to undefined method MyIsotope::udpateQuantity() in D:\WWW\lm\system\modules\isotope\IsotopeOrder.php on line 359"
zupdatowałem pliki:
system/config/config.php
a tą nową klasę MyIsotope wrzuciłem zarówno do nowego pliku MyIsotope.php jak i do Isotope.php, i bez skutku
(raz tak, raz tak)
Nie zna takiej metody jak update Quantity
"Fatal error: Call to undefined method MyIsotope::udpateQuantity() in D:\WWW\lm\system\modules\isotope\IsotopeOrder.php on line 359"
zupdatowałem pliki:
system/config/config.php
a tą nową klasę MyIsotope wrzuciłem zarówno do nowego pliku MyIsotope.php jak i do Isotope.php, i bez skutku

Nie zna takiej metody jak update Quantity

#9
Napisano 19 września 2012 - 16:27

// MyIsotope.php class MyIsotope extends System { public function updateQuantity($objOrder, $arrItemIds, $arrData) { Database::getInstance()->execute("UPDATE tl_iso_products SET quantity=quantity-1 WHERE id IN (" . implode(',', array_map($arrItemIds)) . ")"); } }
Codefog - Contao web development
#10
Napisano 20 września 2012 - 13:49


Dalej błędy: dwa warningi:
"Warning: array_map() expects at least 2 parameters, 1 given in D:\WWW\lm\system\modules\isotope_myisotope\MyIsotope.php on line 7"
"Fatal error: Uncaught exception Exception with message Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1 (UPDATE tl_iso_products SET iloscwmagazynie=iloscwmagazynie-1 WHERE id IN ()) thrown in D:\WWW\lm\system\libraries\Database.php on line 686"
#12
Napisano 20 września 2012 - 14:43

// MyIsotope.php class MyIsotope extends System { public function updateQuantity($objOrder, $arrItemIds, $arrData) { Database::getInstance()->execute("UPDATE tl_iso_products SET quantity=quantity-1 WHERE id IN (" . implode(',', array_map('intval', $arrItemIds)) . ")"); } }
Codefog - Contao web development
#16
Napisano 23 września 2012 - 19:18

To może spróbuj tak
// MyIsotope.php class MyIsotope extends System { public function updateQuantity($objOrder, $arrItemIds, $arrData) { Database::getInstance()->execute("UPDATE tl_iso_products SET quantity=quantity-1 WHERE id IN (" . implode(',', array_map('intval', array_keys($arrItemIds))) . ")"); } }
Codefog - Contao web development
#17
Napisano 24 września 2012 - 23:10

#20
Napisano 26 września 2012 - 06:37

Czyli kod powinien wyglądać chyba tak
// MyIsotope.php class MyIsotope extends System { public function updateQuantity($objOrder, $arrItemIds, $arrData) { Database::getInstance()->execute("UPDATE tl_iso_products SET quantity=quantity-1 WHERE id IN (SELECT product_id FROM tl_iso_cart_items WHERE id IN (" . implode(',', array_map('intval', array_keys($arrItemIds))) . "))"); } }
Codefog - Contao web development
Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych użytkowników