Jump to content

Błąd przy edycji sklepu


magisterson

Recommended Posts

Świeżo zainstalowany sklep PS (ostatnie wydanie 1.6) pojawia się błąd przy próbie skasowania banerów z konfiguratora szablonu:

[PrestaShop] Fatal error in module file :/sklep/classes/db/DbPDO.php:
Uncaught Error: Call to a member function rowCount() on boolean in /sklep/classes/db/DbPDO.php:208 Stack trace: #0 /sklep/modules/themeconfigurator/themeconfigurator.php(399): DbPDOCore->Affected_Rows() #1 /sklep/modules/themeconfigurator/themeconfigurator.php(532): ThemeConfigurator->removeItem() #2 /sklep/controllers/admin/AdminModulesController.php(868): ThemeConfigurator->getContent() #3 /sklep/controllers/admin/AdminModulesController.php(1117): AdminModulesControllerCore->postProcessCallback() #4 /sklep/classes/controller/Controller.php(178): AdminModulesControllerCore->postProcess() #5 /sklep/classes/Dispatcher.php(367): ControllerCore->run() #6 /sklep/admin2864ghxxd/index.php(58): DispatcherCore->dispatch() #7 {main} thrown

Nie wiem co może być przyczyną. Mam ustawioną konfigurację PHP w wersji 7.0, max input vars na 5000, wszystkie inne dostępne parametry PHP na maxa.

Pomożecie?

Link to comment
Share on other sites

Skąd takie rzeczy przy świeżej instalce? 

Przypomniałem sobie, że tuż po instalacji zainstalowałem jeden plugin: http://prestashopaddon.com/download/prestashop-modules/responsive-prestashop-manufacturer-carousel-slider-module-free-prestashop-module/ i po wrzuceniu go nie pojawił się na liście modułów z zielonym przyciskiem "instaluj" - tak jak jest to na ogół. Może to on podmienił plik i spowodował błąd? Nie byłem w stanie użyć tego pluginu, nie był dostępny.

Link to comment
Share on other sites

Postawiłem świeżą instalkę, bez żadnych dodatków. Pierwsze co, idę do konfiguratora i znów błąd. Dziwne, pierwszy raz coś takiego widzę. Jedyną różnicą w instalacji PS było to, że wrzuciłem plik pl.gzip (pobrany ze storny presty) do katalogu /translations ponieważ za każdym razem przy instralacji presta zatrzymywała się na 23% z informacją, że nie można było zainstalować języka polskiego. Z tego co wiem sklep łączy się z serwerami persty podczas instalacji, może jest jakaś przerwa techniczna?

Tak czy inaczej znalazłem removeItem() w themeconfigurator.php i wygląda ona tak:

	protected function removeItem()
	{
		$id_item = (int)Tools::getValue('item_id');

		if ($image = Db::getInstance()->getValue('SELECT image FROM `'._DB_PREFIX_.'themeconfigurator` WHERE id_item = '.(int)$id_item))
			$this->deleteImage($image);

		Db::getInstance()->delete(_DB_PREFIX_.'themeconfigurator', 'id_item = '.(int)$id_item);

		if (Db::getInstance()->Affected_Rows() == 1)
		{
			Db::getInstance()->execute('
				UPDATE `'._DB_PREFIX_.'themeconfigurator`
				SET item_order = item_order-1
				WHERE (
					item_order > '.(int)Tools::getValue('item_order').' AND
					id_shop = '.(int)$this->context->shop->id.' AND
					hook = \''.pSQL(Tools::getValue('item_hook')).'\')'
			);
			Tools::redirectAdmin('index.php?tab=AdminModules&configure='.$this->name.'&conf=6&token='.Tools::getAdminTokenLite('AdminModules'));
		}
		else
			$this->context->smarty->assign('error', $this->l('Can\'t delete the slide.'));
	}
	

 

OK, mam rozwiązanie problemu:

Db::getInstance()->delete(DB_PREFIX.'themeconfigurator', 'id_item = '.(int)$id_item);

zmieniłem na

Db::getInstance()->delete('themeconfigurator', 'id_item = '.(int)$id_item);

 

To chyba jakiś błąd presty bo instalka jest świeża. Nigdy wcześniej się z tym nie spotkałem.

 

Edited by magisterson
dodanie rozwiązania (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...