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ęte przez kylu123, Aug 24 2012 22:51
#1
Napisany 24 August 2012 - 22:51

#2
Napisany 25 August 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
Napisany 18 September 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

#5
Napisany 18 September 2012 - 21:20

Ok, a muszę po tych operacjach robić update bazy?
#6
Napisany 19 September 2012 - 07:42

Zrobione, nawet profilaktycznei zaktualizowałem bazę i niestety ciągle to samo:
"Fatal error: Call to undefined method MyIsotope::udpateQuantity() in D:\WWW\lm\system\modules\isotope\IsotopeOrder.php on line 359"
"Fatal error: Call to undefined method MyIsotope::udpateQuantity() in D:\WWW\lm\system\modules\isotope\IsotopeOrder.php on line 359"

#8
Napisany 19 September 2012 - 14:59

poprawione i teraz mam:
"Fatal error: Call to a member function execute() on a non-object in D:\WWW\lm\system\modules\isotope_myisotope\MyIsotope.php on line 7"
"Fatal error: Call to a member function execute() on a non-object in D:\WWW\lm\system\modules\isotope_myisotope\MyIsotope.php on line 7"
#9
Napisany 19 September 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
Napisany 20 September 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"
#11
Napisany 20 September 2012 - 13:50

i drugi warning:
"Warning: array_map() expects at least 2 parameters, 1 given in D:\WWW\lm\system\modules\isotope_myisotope\MyIsotope.php on line 7"
"Warning: array_map() expects at least 2 parameters, 1 given in D:\WWW\lm\system\modules\isotope_myisotope\MyIsotope.php on line 7"
#12
Napisany 20 September 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
#13
Napisany 21 September 2012 - 14:57

Juz nie rzuca błędami 
Problem jest inny - nie działa warunek wyszukujący id danego produktu

Problem jest inny - nie działa warunek wyszukujący id danego produktu

implode(',', array_map('intval', $arrItemIds));w związku z czym nie updatuje odpowiednich pól...
#14
Napisany 21 September 2012 - 19:00

#15
Napisany 21 September 2012 - 21:27

coś takiego:
Array ( [148] => 26 )i nic z tego nie jest ID kupowanego produktu ...
#16
Napisany 23 September 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
Napisany 24 September 2012 - 23:10

Też nic 
teraz dostałem
,
W której tabeli przechowywane są dane dotyczące zamówień?

teraz dostałem
Array ( [0] => 151 [1] => 152 )przejrzałem bazę (tabele tl_iso_orders, tl_iso_order_items, tl_iso_order_downloads, tl_iso_products), niestety nie mam podobnych wartości

W której tabeli przechowywane są dane dotyczące zamówień?
#19
Napisany 25 September 2012 - 20:37

tak, dokładnie tak.
są to ID rekordów z tej tabeli.
Jak patrze w bazę to są one widoczne przez cały czas zakupów, a znikają z bazy w momencie potwierdzenia zakupu... Dlatego nie mogłem ich namierzyć...
są to ID rekordów z tej tabeli.

Jak patrze w bazę to są one widoczne przez cały czas zakupów, a znikają z bazy w momencie potwierdzenia zakupu... Dlatego nie mogłem ich namierzyć...
#20
Napisany 26 September 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
3 użytkowników czyta ten temat
0 użytkowników, 3 gości, 0 anonimowych użytkowników