ovt001 Posted September 21, 2018 Share Posted September 21, 2018 Bonjour, je viens de remarquer qu'aucun de mes produits ne sont visibles sur mon site. Tous les module de PS (version 1.6.0.9 ) sont à jours. Quand je vais sur "Catalogue / Produit", je reçois un message d'erreure SQL. Mauvaise requête SQL Expression #13 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'cyberren_be-aroma.pd.nb_downloadable' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by Que puis-je faire? Merci Link to comment Share on other sites More sharing options...
Eolia Posted September 21, 2018 Share Posted September 21, 2018 La question est : Qu'avez-vous modifié récemment ? Link to comment Share on other sites More sharing options...
ovt001 Posted September 21, 2018 Author Share Posted September 21, 2018 en fait rien , mais vraiment rien. C'est un client qui m'appel pour me dire que les produits ne sont plus affichés. Je vais voir et effectivement plus aucun produit. Via ma BO, je mais voir dans mon catalogue, / produit --> vide et le message d'erreur... J'ai été voir dans "module" et certains devaient être mis à jour (mais rien concerant le catalogue), j'ai quand même fait les update, mais cela n'a pas arrangé le problème... Link to comment Share on other sites More sharing options...
Eolia Posted September 21, 2018 Share Posted September 21, 2018 le code ne se modifie pas tout seul... Pour les versions 1.5 & 1.6, comme toujours en cas d'erreur 500 et pour en savoir plus, il faut modifier cette ligne au début du fichier config/defines.inc.php : define('_PS_MODE_DEV_', false); par define('_PS_MODE_DEV_', true); Et donnez-nous l'erreur complète après avoir rafraîchi la page Link to comment Share on other sites More sharing options...
ovt001 Posted September 21, 2018 Author Share Posted September 21, 2018 Je n'ai pas d'erreur 500, juste les articles ne se montre plus. aller voir sur www.be-aroma.be vous verrez bien que toues les menus sont présent, mais aucun article n'est montré. D'après ce que je peux lire, le problème viendrait (peut-être) d'un upgrade du MySQL vers 5.7 (ce que je n'ai pas fais), mais peut-être que OVH bien.... il faudrait peut-être que je fasse l'upgrade de mon PS 1.6.0.9 vers PS 1.6.1.20, qu'en pense-vous? Link to comment Share on other sites More sharing options...
Eolia Posted September 21, 2018 Share Posted September 21, 2018 Pouvez-vous copier ici le contenu du constructeur (1er bloc) de /controllers/admin/AdminProductsController.php svp ? Link to comment Share on other sites More sharing options...
ovt001 Posted September 21, 2018 Author Share Posted September 21, 2018 bonjour, je n'ai pas le fichier "AdminProductsController.php" dans /controllers/admin/ Link to comment Share on other sites More sharing options...
ovt001 Posted September 21, 2018 Author Share Posted September 21, 2018 j'ai trouvé le ficher AdminProductsControllers.php (il me faut vraiment des lunettes) . Quel bloc voulez vous? Link to comment Share on other sites More sharing options...
ovt001 Posted September 21, 2018 Author Share Posted September 21, 2018 (edited) 1 hour ago, Eolia said: Pouvez-vous copier ici le contenu du constructeur (1er bloc) de /controllers/admin/AdminProductsController.php svp ? vous parlez bien de tout le bloc "Public function_Construct()"? cela fait près de 250 lignes... Edited September 21, 2018 by ovt001 (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted September 21, 2018 Share Posted September 21, 2018 Oui, en utilisant la balise <code> Link to comment Share on other sites More sharing options...
ovt001 Posted September 21, 2018 Author Share Posted September 21, 2018 12 minutes ago, Eolia said: Oui, en utilisant la balise <code> voilà public function __construct() { $this->bootstrap = true; $this->table = 'product'; $this->className = 'Product'; $this->lang = true; $this->explicitSelect = true; $this->bulk_actions = array( 'delete' => array( 'text' => $this->l('Delete selected'), 'icon' => 'icon-trash', 'confirm' => $this->l('Delete selected items?') ) ); if (!Tools::getValue('id_product')) $this->multishop_context_group = false; parent::__construct(); $this->imageType = 'jpg'; $this->_defaultOrderBy = 'position'; $this->max_file_size = (int)(Configuration::get('PS_LIMIT_UPLOAD_FILE_VALUE') * 1000000); $this->max_image_size = (int)Configuration::get('PS_PRODUCT_PICTURE_MAX_SIZE'); $this->allow_export = true; // @since 1.5 : translations for tabs $this->available_tabs_lang = array( 'Informations' => $this->l('Information'), 'Pack' => $this->l('Pack'), 'VirtualProduct' => $this->l('Virtual Product'), 'Prices' => $this->l('Prices'), 'Seo' => $this->l('SEO'), 'Images' => $this->l('Images'), 'Associations' => $this->l('Associations'), 'Shipping' => $this->l('Shipping'), 'Combinations' => $this->l('Combinations'), 'Features' => $this->l('Features'), 'Customization' => $this->l('Customization'), 'Attachments' => $this->l('Attachments'), 'Quantities' => $this->l('Quantities'), 'Suppliers' => $this->l('Suppliers'), 'Warehouses' => $this->l('Warehouses'), ); $this->available_tabs = array('Quantities' => 6, 'Warehouses' => 14); if ($this->context->shop->getContext() != Shop::CONTEXT_GROUP) $this->available_tabs = array_merge($this->available_tabs, array( 'Informations' => 0, 'Pack' => 7, 'VirtualProduct' => 8, 'Prices' => 1, 'Seo' => 2, 'Associations' => 3, 'Images' => 9, 'Shipping' => 4, 'Combinations' => 5, 'Features' => 10, 'Customization' => 11, 'Attachments' => 12, 'Suppliers' => 13, )); // Sort the tabs that need to be preloaded by their priority number asort($this->available_tabs, SORT_NUMERIC); /* Adding tab if modules are hooked */ $modules_list = Hook::getHookModuleExecList('displayAdminProductsExtra'); if (is_array($modules_list) && count($modules_list) > 0) foreach ($modules_list as $m) { $this->available_tabs['Module'.ucfirst($m['module'])] = 23; $this->available_tabs_lang['Module'.ucfirst($m['module'])] = Module::getModuleName($m['module']); } if (Tools::getValue('reset_filter_category')) $this->context->cookie->id_category_products_filter = false; if (Shop::isFeatureActive() && $this->context->cookie->id_category_products_filter) { $category = new Category((int)$this->context->cookie->id_category_products_filter); if (!$category->inShop()) { $this->context->cookie->id_category_products_filter = false; Tools::redirectAdmin($this->context->link->getAdminLink('AdminProducts')); } } /* Join categories table */ if ($id_category = (int)Tools::getValue('productFilter_cl!name')) { $this->_category = new Category((int)$id_category); $_POST['productFilter_cl!name'] = $this->_category->name[$this->context->language->id]; } else { if ($id_category = (int)Tools::getValue('id_category')) { $this->id_current_category = $id_category; $this->context->cookie->id_category_products_filter = $id_category; } elseif ($id_category = $this->context->cookie->id_category_products_filter) $this->id_current_category = $id_category; if ($this->id_current_category) $this->_category = new Category((int)$this->id_current_category); else $this->_category = new Category(); } $join_category = false; if (Validate::isLoadedObject($this->_category) && empty($this->_filter)) $join_category = true; $this->_join .= ' LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = a.`id_product`) LEFT JOIN `'._DB_PREFIX_.'stock_available` sav ON (sav.`id_product` = a.`id_product` AND sav.`id_product_attribute` = 0 '.StockAvailable::addSqlShopRestriction(null, null, 'sav').') '; $alias = 'sa'; $alias_image = 'image_shop'; $id_shop = Shop::isFeatureActive() && Shop::getContext() == Shop::CONTEXT_SHOP? (int)$this->context->shop->id : 'a.id_shop_default'; $this->_join .= ' JOIN `'._DB_PREFIX_.'product_shop` sa ON (a.`id_product` = sa.`id_product` AND sa.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON ('.$alias.'.`id_category_default` = cl.`id_category` AND b.`id_lang` = cl.`id_lang` AND cl.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'shop` shop ON (shop.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'image_shop` image_shop ON (image_shop.`id_image` = i.`id_image` AND image_shop.`cover` = 1 AND image_shop.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'product_download` pd ON (pd.`id_product` = a.`id_product`)'; $this->_select .= 'shop.name as shopname, a.id_shop_default, '; $this->_select .= 'MAX('.$alias_image.'.id_image) id_image, cl.name `name_category`, '.$alias.'.`price`, 0 AS price_final, a.`is_virtual`, pd.`nb_downloadable`, sav.`quantity` as sav_quantity, '.$alias.'.`active`, IF(sav.`quantity`<=0, 1, 0) badge_danger'; if ($join_category) { $this->_join .= ' INNER JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_product` = a.`id_product` AND cp.`id_category` = '.(int)$this->_category->id.') '; $this->_select .= ' , cp.`position`, '; } $this->_group = 'GROUP BY '.$alias.'.id_product'; $this->fields_list = array(); $this->fields_list['id_product'] = array( 'title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs', 'type' => 'int' ); $this->fields_list['image'] = array( 'title' => $this->l('Image'), 'align' => 'center', 'image' => 'p', 'orderby' => false, 'filter' => false, 'search' => false ); $this->fields_list['name'] = array( 'title' => $this->l('Name'), 'filter_key' => 'b!name' ); $this->fields_list['reference'] = array( 'title' => $this->l('Reference'), 'align' => 'left', ); if (Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_SHOP) $this->fields_list['shopname'] = array( 'title' => $this->l('Default shop'), 'filter_key' => 'shop!name', ); else $this->fields_list['name_category'] = array( 'title' => $this->l('Category'), 'filter_key' => 'cl!name', ); $this->fields_list['price'] = array( 'title' => $this->l('Base price'), 'type' => 'price', 'align' => 'text-right', 'filter_key' => 'a!price' ); $this->fields_list['price_final'] = array( 'title' => $this->l('Final price'), 'type' => 'price', 'align' => 'text-right', 'havingFilter' => true, 'orderby' => false, 'search' => false ); if (Configuration::get('PS_STOCK_MANAGEMENT')) $this->fields_list['sav_quantity'] = array( 'title' => $this->l('Quantity'), 'type' => 'int', 'align' => 'text-right', 'filter_key' => 'sav!quantity', 'orderby' => true, 'badge_danger' => true, //'hint' => $this->l('This is the quantity available in the current shop/group.'), ); $this->fields_list['active'] = array( 'title' => $this->l('Status'), 'active' => 'status', 'filter_key' => $alias.'!active', 'align' => 'text-center', 'type' => 'bool', 'class' => 'fixed-width-sm', 'orderby' => false ); if ($join_category && (int)$this->id_current_category) $this->fields_list['position'] = array( 'title' => $this->l('Position'), 'filter_key' => 'cp!position', 'align' => 'center', 'position' => 'position' ); } Link to comment Share on other sites More sharing options...
ovt001 Posted September 21, 2018 Author Share Posted September 21, 2018 30 minutes ago, Eolia said: Oui, en utilisant la balise <code> Eolia, je viens de faire une bêtise, j'avais lus dans un post qu'en modifiant une ligne du fichier DbPDO.php, le problème serait résolu. Mais j'ai par accident supprimé le fichier DbPDO.php :-(. il y a t'il un moyen de le retrouver? Merci Link to comment Share on other sites More sharing options...
Eolia Posted September 21, 2018 Share Posted September 21, 2018 Ok, remplacez le code ci-dessus par celui-ci: public function __construct() { $this->bootstrap = true; $this->table = 'product'; $this->className = 'Product'; $this->lang = true; $this->explicitSelect = true; $this->bulk_actions = array( 'delete' => array( 'text' => $this->l('Delete selected'), 'icon' => 'icon-trash', 'confirm' => $this->l('Delete selected items?') ) ); if (!Tools::getValue('id_product')) { $this->multishop_context_group = false; } parent::__construct(); $this->imageType = 'jpg'; $this->_defaultOrderBy = 'position'; $this->max_file_size = (int)(Configuration::get('PS_LIMIT_UPLOAD_FILE_VALUE') * 1000000); $this->max_image_size = (int)Configuration::get('PS_PRODUCT_PICTURE_MAX_SIZE'); $this->allow_export = true; // @since 1.5 : translations for tabs $this->available_tabs_lang = array( 'Informations' => $this->l('Information'), 'Pack' => $this->l('Pack'), 'VirtualProduct' => $this->l('Virtual Product'), 'Prices' => $this->l('Prices'), 'Seo' => $this->l('SEO'), 'Images' => $this->l('Images'), 'Associations' => $this->l('Associations'), 'Shipping' => $this->l('Shipping'), 'Combinations' => $this->l('Combinations'), 'Features' => $this->l('Features'), 'Customization' => $this->l('Customization'), 'Attachments' => $this->l('Attachments'), 'Quantities' => $this->l('Quantities'), 'Suppliers' => $this->l('Suppliers'), 'Warehouses' => $this->l('Warehouses'), ); $this->available_tabs = array('Quantities' => 6, 'Warehouses' => 14); if ($this->context->shop->getContext() != Shop::CONTEXT_GROUP) { $this->available_tabs = array_merge($this->available_tabs, array( 'Informations' => 0, 'Pack' => 7, 'VirtualProduct' => 8, 'Prices' => 1, 'Seo' => 2, 'Associations' => 3, 'Images' => 9, 'Shipping' => 4, 'Combinations' => 5, 'Features' => 10, 'Customization' => 11, 'Attachments' => 12, 'Suppliers' => 13, )); } // Sort the tabs that need to be preloaded by their priority number asort($this->available_tabs, SORT_NUMERIC); /* Adding tab if modules are hooked */ $modules_list = Hook::getHookModuleExecList('displayAdminProductsExtra'); if (is_array($modules_list) && count($modules_list) > 0) { foreach ($modules_list as $m) { $this->available_tabs['Module'.ucfirst($m['module'])] = 23; $this->available_tabs_lang['Module'.ucfirst($m['module'])] = Module::getModuleName($m['module']); } } if (Tools::getValue('reset_filter_category')) { $this->context->cookie->id_category_products_filter = false; } if (Shop::isFeatureActive() && $this->context->cookie->id_category_products_filter) { $category = new Category((int)$this->context->cookie->id_category_products_filter); if (!$category->inShop()) { $this->context->cookie->id_category_products_filter = false; Tools::redirectAdmin($this->context->link->getAdminLink('AdminProducts')); } } /* Join categories table */ if ($id_category = (int)Tools::getValue('productFilter_cl!name')) { $this->_category = new Category((int)$id_category); $_POST['productFilter_cl!name'] = $this->_category->name[$this->context->language->id]; } else { if ($id_category = (int)Tools::getValue('id_category')) { $this->id_current_category = $id_category; $this->context->cookie->id_category_products_filter = $id_category; } elseif ($id_category = $this->context->cookie->id_category_products_filter) { $this->id_current_category = $id_category; } if ($this->id_current_category) { $this->_category = new Category((int)$this->id_current_category); } else { $this->_category = new Category(); } } $join_category = false; if (Validate::isLoadedObject($this->_category) && empty($this->_filter)) { $join_category = true; } $this->_join .= ' LEFT JOIN `'._DB_PREFIX_.'stock_available` sav ON (sav.`id_product` = a.`id_product` AND sav.`id_product_attribute` = 0 '.StockAvailable::addSqlShopRestriction(null, null, 'sav').') '; $alias = 'sa'; $alias_image = 'image_shop'; $id_shop = Shop::isFeatureActive() && Shop::getContext() == Shop::CONTEXT_SHOP? (int)$this->context->shop->id : 'a.id_shop_default'; $this->_join .= ' JOIN `'._DB_PREFIX_.'product_shop` sa ON (a.`id_product` = sa.`id_product` AND sa.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON ('.$alias.'.`id_category_default` = cl.`id_category` AND b.`id_lang` = cl.`id_lang` AND cl.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'shop` shop ON (shop.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'image_shop` image_shop ON (image_shop.`id_product` = a.`id_product` AND image_shop.`cover` = 1 AND image_shop.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_image` = image_shop.`id_image`) LEFT JOIN `'._DB_PREFIX_.'product_download` pd ON (pd.`id_product` = a.`id_product` AND pd.`active` = 1)'; $this->_select .= 'shop.`name` AS `shopname`, a.`id_shop_default`, '; $this->_select .= $alias_image.'.`id_image` AS `id_image`, cl.`name` AS `name_category`, '.$alias.'.`price`, 0 AS `price_final`, a.`is_virtual`, pd.`nb_downloadable`, sav.`quantity` AS `sav_quantity`, '.$alias.'.`active`, IF(sav.`quantity`<=0, 1, 0) AS `badge_danger`'; if ($join_category) { $this->_join .= ' INNER JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_product` = a.`id_product` AND cp.`id_category` = '.(int)$this->_category->id.') '; $this->_select .= ' , cp.`position`, '; } $this->_use_found_rows = false; $this->_group = ''; $this->fields_list = array(); $this->fields_list['id_product'] = array( 'title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs', 'type' => 'int' ); $this->fields_list['image'] = array( 'title' => $this->l('Image'), 'align' => 'center', 'image' => 'p', 'orderby' => false, 'filter' => false, 'search' => false ); $this->fields_list['name'] = array( 'title' => $this->l('Name'), 'filter_key' => 'b!name' ); $this->fields_list['reference'] = array( 'title' => $this->l('Reference'), 'align' => 'left', ); if (Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_SHOP) { $this->fields_list['shopname'] = array( 'title' => $this->l('Default shop'), 'filter_key' => 'shop!name', ); } else { $this->fields_list['name_category'] = array( 'title' => $this->l('Category'), 'filter_key' => 'cl!name', ); } $this->fields_list['price'] = array( 'title' => $this->l('Base price'), 'type' => 'price', 'align' => 'text-right', 'filter_key' => 'a!price' ); $this->fields_list['price_final'] = array( 'title' => $this->l('Final price'), 'type' => 'price', 'align' => 'text-right', 'havingFilter' => true, 'orderby' => false, 'search' => false ); if (Configuration::get('PS_STOCK_MANAGEMENT')) { $this->fields_list['sav_quantity'] = array( 'title' => $this->l('Quantity'), 'type' => 'int', 'align' => 'text-right', 'filter_key' => 'sav!quantity', 'orderby' => true, 'badge_danger' => true, //'hint' => $this->l('This is the quantity available in the current shop/group.'), ); } $this->fields_list['active'] = array( 'title' => $this->l('Status'), 'active' => 'status', 'filter_key' => $alias.'!active', 'align' => 'text-center', 'type' => 'bool', 'class' => 'fixed-width-sm', 'orderby' => false ); if ($join_category && (int)$this->id_current_category) { $this->fields_list['position'] = array( 'title' => $this->l('Position'), 'filter_key' => 'cp!position', 'align' => 'center', 'position' => 'position' ); } } Et je vous joins le fichier DbPDO.php DbPDO.php Link to comment Share on other sites More sharing options...
ovt001 Posted September 21, 2018 Author Share Posted September 21, 2018 Bon, les articles ont réaparus, grand merci mais la BO est toujours boiteuse. Dans catalogue / produits j'ai l'erreur: Mauvaise requête SQL Unknown column 'image_shop.id_product' in 'on clause' Link to comment Share on other sites More sharing options...
Eolia Posted September 21, 2018 Share Posted September 21, 2018 ah oui, 1.6.0.9.... Remplacez la ligne par celle-ci LEFT JOIN `'._DB_PREFIX_.'image_shop` image_shop ON (image_shop.`id_image` = i.`id_image` AND image_shop.`cover` = 1 AND image_shop.id_shop = '.$id_shop.') Link to comment Share on other sites More sharing options...
ovt001 Posted September 21, 2018 Author Share Posted September 21, 2018 1 minute ago, Eolia said: ah oui, 1.6.0.9.... Remplacez la ligne par celle-ci LEFT JOIN `'._DB_PREFIX_.'image_shop` image_shop ON (image_shop.`id_image` = i.`id_image` AND image_shop.`cover` = 1 AND image_shop.id_shop = '.$id_shop.') Euh.. ?? quelle ligne dois-je remplacer? Link to comment Share on other sites More sharing options...
Eolia Posted September 21, 2018 Share Posted September 21, 2018 La seule qui commence pareil^^ LEFT JOIN `'._DB_PREFIX_.'image_shop` image_shop ON (image_shop.`id_product` = a.`id_product` AND image_shop.`cover` = 1 AND image_shop.id_shop = '.$id_shop.') Link to comment Share on other sites More sharing options...
ovt001 Posted September 21, 2018 Author Share Posted September 21, 2018 maintenant je reçois This page isn’t working HTTP 500 . je joins le code. en espérant avoir remplacer la bonne ligne parent::__construct(); $this->imageType = 'jpg'; $this->_defaultOrderBy = 'position'; $this->max_file_size = (int)(Configuration::get('PS_LIMIT_UPLOAD_FILE_VALUE') * 1000000); $this->max_image_size = (int)Configuration::get('PS_PRODUCT_PICTURE_MAX_SIZE'); $this->allow_export = true; // @since 1.5 : translations for tabs $this->available_tabs_lang = array( 'Informations' => $this->l('Information'), 'Pack' => $this->l('Pack'), 'VirtualProduct' => $this->l('Virtual Product'), 'Prices' => $this->l('Prices'), 'Seo' => $this->l('SEO'), 'Images' => $this->l('Images'), 'Associations' => $this->l('Associations'), 'Shipping' => $this->l('Shipping'), 'Combinations' => $this->l('Combinations'), 'Features' => $this->l('Features'), 'Customization' => $this->l('Customization'), 'Attachments' => $this->l('Attachments'), 'Quantities' => $this->l('Quantities'), 'Suppliers' => $this->l('Suppliers'), 'Warehouses' => $this->l('Warehouses'), ); $this->available_tabs = array('Quantities' => 6, 'Warehouses' => 14); if ($this->context->shop->getContext() != Shop::CONTEXT_GROUP) { $this->available_tabs = array_merge($this->available_tabs, array( 'Informations' => 0, 'Pack' => 7, 'VirtualProduct' => 8, 'Prices' => 1, 'Seo' => 2, 'Associations' => 3, 'Images' => 9, 'Shipping' => 4, 'Combinations' => 5, 'Features' => 10, 'Customization' => 11, 'Attachments' => 12, 'Suppliers' => 13, )); } // Sort the tabs that need to be preloaded by their priority number asort($this->available_tabs, SORT_NUMERIC); /* Adding tab if modules are hooked */ $modules_list = Hook::getHookModuleExecList('displayAdminProductsExtra'); if (is_array($modules_list) && count($modules_list) > 0) { foreach ($modules_list as $m) { $this->available_tabs['Module'.ucfirst($m['module'])] = 23; $this->available_tabs_lang['Module'.ucfirst($m['module'])] = Module::getModuleName($m['module']); } } if (Tools::getValue('reset_filter_category')) { $this->context->cookie->id_category_products_filter = false; } if (Shop::isFeatureActive() && $this->context->cookie->id_category_products_filter) { $category = new Category((int)$this->context->cookie->id_category_products_filter); if (!$category->inShop()) { $this->context->cookie->id_category_products_filter = false; Tools::redirectAdmin($this->context->link->getAdminLink('AdminProducts')); } } /* Join categories table */ if ($id_category = (int)Tools::getValue('productFilter_cl!name')) { $this->_category = new Category((int)$id_category); $_POST['productFilter_cl!name'] = $this->_category->name[$this->context->language->id]; } else { if ($id_category = (int)Tools::getValue('id_category')) { $this->id_current_category = $id_category; $this->context->cookie->id_category_products_filter = $id_category; } elseif ($id_category = $this->context->cookie->id_category_products_filter) { $this->id_current_category = $id_category; } if ($this->id_current_category) { $this->_category = new Category((int)$this->id_current_category); } else { $this->_category = new Category(); } } $join_category = false; if (Validate::isLoadedObject($this->_category) && empty($this->_filter)) { $join_category = true; } $this->_join .= ' LEFT JOIN `'._DB_PREFIX_.'image_shop` image_shop ON (image_shop.`id_image` = i.`id_image` AND image_shop.`cover` = 1 AND image_shop.id_shop = '.$id_shop.'); $alias = 'sa'; $alias_image = 'image_shop'; $id_shop = Shop::isFeatureActive() && Shop::getContext() == Shop::CONTEXT_SHOP? (int)$this->context->shop->id : 'a.id_shop_default'; $this->_join .= ' JOIN `'._DB_PREFIX_.'product_shop` sa ON (a.`id_product` = sa.`id_product` AND sa.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON ('.$alias.'.`id_category_default` = cl.`id_category` AND b.`id_lang` = cl.`id_lang` AND cl.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'shop` shop ON (shop.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'image_shop` image_shop ON (image_shop.`id_product` = a.`id_product` AND image_shop.`cover` = 1 AND image_shop.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_image` = image_shop.`id_image`) LEFT JOIN `'._DB_PREFIX_.'product_download` pd ON (pd.`id_product` = a.`id_product` AND pd.`active` = 1)'; $this->_select .= 'shop.`name` AS `shopname`, a.`id_shop_default`, '; $this->_select .= $alias_image.'.`id_image` AS `id_image`, cl.`name` AS `name_category`, '.$alias.'.`price`, 0 AS `price_final`, a.`is_virtual`, pd.`nb_downloadable`, sav.`quantity` AS `sav_quantity`, '.$alias.'.`active`, IF(sav.`quantity`<=0, 1, 0) AS `badge_danger`'; if ($join_category) { $this->_join .= ' INNER JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_product` = a.`id_product` AND cp.`id_category` = '.(int)$this->_category->id.') '; $this->_select .= ' , cp.`position`, '; } $this->_use_found_rows = false; $this->_group = ''; $this->fields_list = array(); $this->fields_list['id_product'] = array( 'title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs', 'type' => 'int' ); $this->fields_list['image'] = array( 'title' => $this->l('Image'), 'align' => 'center', 'image' => 'p', 'orderby' => false, 'filter' => false, 'search' => false ); $this->fields_list['name'] = array( 'title' => $this->l('Name'), 'filter_key' => 'b!name' ); $this->fields_list['reference'] = array( 'title' => $this->l('Reference'), 'align' => 'left', ); if (Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_SHOP) { $this->fields_list['shopname'] = array( 'title' => $this->l('Default shop'), 'filter_key' => 'shop!name', ); } else { $this->fields_list['name_category'] = array( 'title' => $this->l('Category'), 'filter_key' => 'cl!name', ); } $this->fields_list['price'] = array( 'title' => $this->l('Base price'), 'type' => 'price', 'align' => 'text-right', 'filter_key' => 'a!price' ); $this->fields_list['price_final'] = array( 'title' => $this->l('Final price'), 'type' => 'price', 'align' => 'text-right', 'havingFilter' => true, 'orderby' => false, 'search' => false ); if (Configuration::get('PS_STOCK_MANAGEMENT')) { $this->fields_list['sav_quantity'] = array( 'title' => $this->l('Quantity'), 'type' => 'int', 'align' => 'text-right', 'filter_key' => 'sav!quantity', 'orderby' => true, 'badge_danger' => true, //'hint' => $this->l('This is the quantity available in the current shop/group.'), ); } $this->fields_list['active'] = array( 'title' => $this->l('Status'), 'active' => 'status', 'filter_key' => $alias.'!active', 'align' => 'text-center', 'type' => 'bool', 'class' => 'fixed-width-sm', 'orderby' => false ); if ($join_category && (int)$this->id_current_category) { $this->fields_list['position'] = array( 'title' => $this->l('Position'), 'filter_key' => 'cp!position', 'align' => 'center', 'position' => 'position' ); } } Link to comment Share on other sites More sharing options...
Eolia Posted September 21, 2018 Share Posted September 21, 2018 Ben non, pas du tout c'est dans le bloc avec tous les LEFT JOIN Link to comment Share on other sites More sharing options...
ovt001 Posted September 21, 2018 Author Share Posted September 21, 2018 oups, voilà c'est remplacé, mais le résultat est le même, Mauvaise requête SQL Unknown column 'i.id_image' in 'on clause' voici le nouveau code public function __construct() { $this->bootstrap = true; $this->table = 'product'; $this->className = 'Product'; $this->lang = true; $this->explicitSelect = true; $this->bulk_actions = array( 'delete' => array( 'text' => $this->l('Delete selected'), 'icon' => 'icon-trash', 'confirm' => $this->l('Delete selected items?') ) ); if (!Tools::getValue('id_product')) { $this->multishop_context_group = false; } parent::__construct(); $this->imageType = 'jpg'; $this->_defaultOrderBy = 'position'; $this->max_file_size = (int)(Configuration::get('PS_LIMIT_UPLOAD_FILE_VALUE') * 1000000); $this->max_image_size = (int)Configuration::get('PS_PRODUCT_PICTURE_MAX_SIZE'); $this->allow_export = true; // @since 1.5 : translations for tabs $this->available_tabs_lang = array( 'Informations' => $this->l('Information'), 'Pack' => $this->l('Pack'), 'VirtualProduct' => $this->l('Virtual Product'), 'Prices' => $this->l('Prices'), 'Seo' => $this->l('SEO'), 'Images' => $this->l('Images'), 'Associations' => $this->l('Associations'), 'Shipping' => $this->l('Shipping'), 'Combinations' => $this->l('Combinations'), 'Features' => $this->l('Features'), 'Customization' => $this->l('Customization'), 'Attachments' => $this->l('Attachments'), 'Quantities' => $this->l('Quantities'), 'Suppliers' => $this->l('Suppliers'), 'Warehouses' => $this->l('Warehouses'), ); $this->available_tabs = array('Quantities' => 6, 'Warehouses' => 14); if ($this->context->shop->getContext() != Shop::CONTEXT_GROUP) { $this->available_tabs = array_merge($this->available_tabs, array( 'Informations' => 0, 'Pack' => 7, 'VirtualProduct' => 8, 'Prices' => 1, 'Seo' => 2, 'Associations' => 3, 'Images' => 9, 'Shipping' => 4, 'Combinations' => 5, 'Features' => 10, 'Customization' => 11, 'Attachments' => 12, 'Suppliers' => 13, )); } // Sort the tabs that need to be preloaded by their priority number asort($this->available_tabs, SORT_NUMERIC); /* Adding tab if modules are hooked */ $modules_list = Hook::getHookModuleExecList('displayAdminProductsExtra'); if (is_array($modules_list) && count($modules_list) > 0) { foreach ($modules_list as $m) { $this->available_tabs['Module'.ucfirst($m['module'])] = 23; $this->available_tabs_lang['Module'.ucfirst($m['module'])] = Module::getModuleName($m['module']); } } if (Tools::getValue('reset_filter_category')) { $this->context->cookie->id_category_products_filter = false; } if (Shop::isFeatureActive() && $this->context->cookie->id_category_products_filter) { $category = new Category((int)$this->context->cookie->id_category_products_filter); if (!$category->inShop()) { $this->context->cookie->id_category_products_filter = false; Tools::redirectAdmin($this->context->link->getAdminLink('AdminProducts')); } } /* Join categories table */ if ($id_category = (int)Tools::getValue('productFilter_cl!name')) { $this->_category = new Category((int)$id_category); $_POST['productFilter_cl!name'] = $this->_category->name[$this->context->language->id]; } else { if ($id_category = (int)Tools::getValue('id_category')) { $this->id_current_category = $id_category; $this->context->cookie->id_category_products_filter = $id_category; } elseif ($id_category = $this->context->cookie->id_category_products_filter) { $this->id_current_category = $id_category; } if ($this->id_current_category) { $this->_category = new Category((int)$this->id_current_category); } else { $this->_category = new Category(); } } $join_category = false; if (Validate::isLoadedObject($this->_category) && empty($this->_filter)) { $join_category = true; } $this->_join .= ' LEFT JOIN `'._DB_PREFIX_.'stock_available` sav ON (sav.`id_product` = a.`id_product` AND sav.`id_product_attribute` = 0 '.StockAvailable::addSqlShopRestriction(null, null, 'sav').') '; $alias = 'sa'; $alias_image = 'image_shop'; $id_shop = Shop::isFeatureActive() && Shop::getContext() == Shop::CONTEXT_SHOP? (int)$this->context->shop->id : 'a.id_shop_default'; $this->_join .= ' JOIN `'._DB_PREFIX_.'product_shop` sa ON (a.`id_product` = sa.`id_product` AND sa.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON ('.$alias.'.`id_category_default` = cl.`id_category` AND b.`id_lang` = cl.`id_lang` AND cl.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'shop` shop ON (shop.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'image_shop` image_shop ON (image_shop.`id_image` = i.`id_image` AND image_shop.`cover` = 1 AND image_shop.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_image` = image_shop.`id_image`) LEFT JOIN `'._DB_PREFIX_.'product_download` pd ON (pd.`id_product` = a.`id_product` AND pd.`active` = 1)'; $this->_select .= 'shop.`name` AS `shopname`, a.`id_shop_default`, '; $this->_select .= $alias_image.'.`id_image` AS `id_image`, cl.`name` AS `name_category`, '.$alias.'.`price`, 0 AS `price_final`, a.`is_virtual`, pd.`nb_downloadable`, sav.`quantity` AS `sav_quantity`, '.$alias.'.`active`, IF(sav.`quantity`<=0, 1, 0) AS `badge_danger`'; if ($join_category) { $this->_join .= ' INNER JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_product` = a.`id_product` AND cp.`id_category` = '.(int)$this->_category->id.') '; $this->_select .= ' , cp.`position`, '; } $this->_use_found_rows = false; $this->_group = ''; $this->fields_list = array(); $this->fields_list['id_product'] = array( 'title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs', 'type' => 'int' ); $this->fields_list['image'] = array( 'title' => $this->l('Image'), 'align' => 'center', 'image' => 'p', 'orderby' => false, 'filter' => false, 'search' => false ); $this->fields_list['name'] = array( 'title' => $this->l('Name'), 'filter_key' => 'b!name' ); $this->fields_list['reference'] = array( 'title' => $this->l('Reference'), 'align' => 'left', ); if (Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_SHOP) { $this->fields_list['shopname'] = array( 'title' => $this->l('Default shop'), 'filter_key' => 'shop!name', ); } else { $this->fields_list['name_category'] = array( 'title' => $this->l('Category'), 'filter_key' => 'cl!name', ); } $this->fields_list['price'] = array( 'title' => $this->l('Base price'), 'type' => 'price', 'align' => 'text-right', 'filter_key' => 'a!price' ); $this->fields_list['price_final'] = array( 'title' => $this->l('Final price'), 'type' => 'price', 'align' => 'text-right', 'havingFilter' => true, 'orderby' => false, 'search' => false ); if (Configuration::get('PS_STOCK_MANAGEMENT')) { $this->fields_list['sav_quantity'] = array( 'title' => $this->l('Quantity'), 'type' => 'int', 'align' => 'text-right', 'filter_key' => 'sav!quantity', 'orderby' => true, 'badge_danger' => true, //'hint' => $this->l('This is the quantity available in the current shop/group.'), ); } $this->fields_list['active'] = array( 'title' => $this->l('Status'), 'active' => 'status', 'filter_key' => $alias.'!active', 'align' => 'text-center', 'type' => 'bool', 'class' => 'fixed-width-sm', 'orderby' => false ); if ($join_category && (int)$this->id_current_category) { $this->fields_list['position'] = array( 'title' => $this->l('Position'), 'filter_key' => 'cp!position', 'align' => 'center', 'position' => 'position' ); } } Link to comment Share on other sites More sharing options...
Eolia Posted September 21, 2018 Share Posted September 21, 2018 (edited) Vu que vous semblez avoir du mal je vous remets le code complet public function __construct() { $this->bootstrap = true; $this->table = 'product'; $this->className = 'Product'; $this->lang = true; $this->explicitSelect = true; $this->bulk_actions = array( 'delete' => array( 'text' => $this->l('Delete selected'), 'icon' => 'icon-trash', 'confirm' => $this->l('Delete selected items?') ) ); if (!Tools::getValue('id_product')) { $this->multishop_context_group = false; } parent::__construct(); $this->imageType = 'jpg'; $this->_defaultOrderBy = 'position'; $this->max_file_size = (int)(Configuration::get('PS_LIMIT_UPLOAD_FILE_VALUE') * 1000000); $this->max_image_size = (int)Configuration::get('PS_PRODUCT_PICTURE_MAX_SIZE'); $this->allow_export = true; // @since 1.5 : translations for tabs $this->available_tabs_lang = array( 'Informations' => $this->l('Information'), 'Pack' => $this->l('Pack'), 'VirtualProduct' => $this->l('Virtual Product'), 'Prices' => $this->l('Prices'), 'Seo' => $this->l('SEO'), 'Images' => $this->l('Images'), 'Associations' => $this->l('Associations'), 'Shipping' => $this->l('Shipping'), 'Combinations' => $this->l('Combinations'), 'Features' => $this->l('Features'), 'Customization' => $this->l('Customization'), 'Attachments' => $this->l('Attachments'), 'Quantities' => $this->l('Quantities'), 'Suppliers' => $this->l('Suppliers'), 'Warehouses' => $this->l('Warehouses'), ); $this->available_tabs = array('Quantities' => 6, 'Warehouses' => 14); if ($this->context->shop->getContext() != Shop::CONTEXT_GROUP) { $this->available_tabs = array_merge($this->available_tabs, array( 'Informations' => 0, 'Pack' => 7, 'VirtualProduct' => 8, 'Prices' => 1, 'Seo' => 2, 'Associations' => 3, 'Images' => 9, 'Shipping' => 4, 'Combinations' => 5, 'Features' => 10, 'Customization' => 11, 'Attachments' => 12, 'Suppliers' => 13, )); } // Sort the tabs that need to be preloaded by their priority number asort($this->available_tabs, SORT_NUMERIC); /* Adding tab if modules are hooked */ $modules_list = Hook::getHookModuleExecList('displayAdminProductsExtra'); if (is_array($modules_list) && count($modules_list) > 0) { foreach ($modules_list as $m) { $this->available_tabs['Module'.ucfirst($m['module'])] = 23; $this->available_tabs_lang['Module'.ucfirst($m['module'])] = Module::getModuleName($m['module']); } } if (Tools::getValue('reset_filter_category')) { $this->context->cookie->id_category_products_filter = false; } if (Shop::isFeatureActive() && $this->context->cookie->id_category_products_filter) { $category = new Category((int)$this->context->cookie->id_category_products_filter); if (!$category->inShop()) { $this->context->cookie->id_category_products_filter = false; Tools::redirectAdmin($this->context->link->getAdminLink('AdminProducts')); } } /* Join categories table */ if ($id_category = (int)Tools::getValue('productFilter_cl!name')) { $this->_category = new Category((int)$id_category); $_POST['productFilter_cl!name'] = $this->_category->name[$this->context->language->id]; } else { if ($id_category = (int)Tools::getValue('id_category')) { $this->id_current_category = $id_category; $this->context->cookie->id_category_products_filter = $id_category; } elseif ($id_category = $this->context->cookie->id_category_products_filter) { $this->id_current_category = $id_category; } if ($this->id_current_category) { $this->_category = new Category((int)$this->id_current_category); } else { $this->_category = new Category(); } } $join_category = false; if (Validate::isLoadedObject($this->_category) && empty($this->_filter)) { $join_category = true; } $this->_join .= ' LEFT JOIN `'._DB_PREFIX_.'stock_available` sav ON (sav.`id_product` = a.`id_product` AND sav.`id_product_attribute` = 0 '.StockAvailable::addSqlShopRestriction(null, null, 'sav').') '; $alias = 'sa'; $alias_image = 'image_shop'; $id_shop = Shop::isFeatureActive() && Shop::getContext() == Shop::CONTEXT_SHOP? (int)$this->context->shop->id : 'a.id_shop_default'; $this->_join .= ' JOIN `'._DB_PREFIX_.'product_shop` sa ON (a.`id_product` = sa.`id_product` AND sa.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON ('.$alias.'.`id_category_default` = cl.`id_category` AND b.`id_lang` = cl.`id_lang` AND cl.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'shop` shop ON (shop.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'image_shop` image_shop ON (image_shop.`id_image` = i.`id_image` AND image_shop.`cover` = 1 AND image_shop.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'product_download` pd ON (pd.`id_product` = a.`id_product` AND pd.`active` = 1)'; $this->_select .= 'shop.`name` AS `shopname`, a.`id_shop_default`, '; $this->_select .= $alias_image.'.`id_image` AS `id_image`, cl.`name` AS `name_category`, '.$alias.'.`price`, 0 AS `price_final`, a.`is_virtual`, pd.`nb_downloadable`, sav.`quantity` AS `sav_quantity`, '.$alias.'.`active`, IF(sav.`quantity`<=0, 1, 0) AS `badge_danger`'; if ($join_category) { $this->_join .= ' INNER JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_product` = a.`id_product` AND cp.`id_category` = '.(int)$this->_category->id.') '; $this->_select .= ' , cp.`position`, '; } $this->_use_found_rows = false; $this->_group = ''; $this->fields_list = array(); $this->fields_list['id_product'] = array( 'title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs', 'type' => 'int' ); $this->fields_list['image'] = array( 'title' => $this->l('Image'), 'align' => 'center', 'image' => 'p', 'orderby' => false, 'filter' => false, 'search' => false ); $this->fields_list['name'] = array( 'title' => $this->l('Name'), 'filter_key' => 'b!name' ); $this->fields_list['reference'] = array( 'title' => $this->l('Reference'), 'align' => 'left', ); if (Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_SHOP) { $this->fields_list['shopname'] = array( 'title' => $this->l('Default shop'), 'filter_key' => 'shop!name', ); } else { $this->fields_list['name_category'] = array( 'title' => $this->l('Category'), 'filter_key' => 'cl!name', ); } $this->fields_list['price'] = array( 'title' => $this->l('Base price'), 'type' => 'price', 'align' => 'text-right', 'filter_key' => 'a!price' ); $this->fields_list['price_final'] = array( 'title' => $this->l('Final price'), 'type' => 'price', 'align' => 'text-right', 'havingFilter' => true, 'orderby' => false, 'search' => false ); if (Configuration::get('PS_STOCK_MANAGEMENT')) { $this->fields_list['sav_quantity'] = array( 'title' => $this->l('Quantity'), 'type' => 'int', 'align' => 'text-right', 'filter_key' => 'sav!quantity', 'orderby' => true, 'badge_danger' => true, //'hint' => $this->l('This is the quantity available in the current shop/group.'), ); } $this->fields_list['active'] = array( 'title' => $this->l('Status'), 'active' => 'status', 'filter_key' => $alias.'!active', 'align' => 'text-center', 'type' => 'bool', 'class' => 'fixed-width-sm', 'orderby' => false ); if ($join_category && (int)$this->id_current_category) { $this->fields_list['position'] = array( 'title' => $this->l('Position'), 'filter_key' => 'cp!position', 'align' => 'center', 'position' => 'position' ); } } Edited September 21, 2018 by Eolia (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted September 21, 2018 Share Posted September 21, 2018 Prenez le code ci-dessus svp^^ Link to comment Share on other sites More sharing options...
ovt001 Posted September 21, 2018 Author Share Posted September 21, 2018 euh, idem avec votre code. Dans la BO / catalogue / produit Link to comment Share on other sites More sharing options...
Eolia Posted September 21, 2018 Share Posted September 21, 2018 Allez, une dernière^^ public function __construct() { $this->bootstrap = true; $this->table = 'product'; $this->className = 'Product'; $this->lang = true; $this->explicitSelect = true; $this->bulk_actions = array( 'delete' => array( 'text' => $this->l('Delete selected'), 'icon' => 'icon-trash', 'confirm' => $this->l('Delete selected items?') ) ); if (!Tools::getValue('id_product')) { $this->multishop_context_group = false; } parent::__construct(); $this->imageType = 'jpg'; $this->_defaultOrderBy = 'position'; $this->max_file_size = (int)(Configuration::get('PS_LIMIT_UPLOAD_FILE_VALUE') * 1000000); $this->max_image_size = (int)Configuration::get('PS_PRODUCT_PICTURE_MAX_SIZE'); $this->allow_export = true; // @since 1.5 : translations for tabs $this->available_tabs_lang = array( 'Informations' => $this->l('Information'), 'Pack' => $this->l('Pack'), 'VirtualProduct' => $this->l('Virtual Product'), 'Prices' => $this->l('Prices'), 'Seo' => $this->l('SEO'), 'Images' => $this->l('Images'), 'Associations' => $this->l('Associations'), 'Shipping' => $this->l('Shipping'), 'Combinations' => $this->l('Combinations'), 'Features' => $this->l('Features'), 'Customization' => $this->l('Customization'), 'Attachments' => $this->l('Attachments'), 'Quantities' => $this->l('Quantities'), 'Suppliers' => $this->l('Suppliers'), 'Warehouses' => $this->l('Warehouses'), ); $this->available_tabs = array('Quantities' => 6, 'Warehouses' => 14); if ($this->context->shop->getContext() != Shop::CONTEXT_GROUP) { $this->available_tabs = array_merge($this->available_tabs, array( 'Informations' => 0, 'Pack' => 7, 'VirtualProduct' => 8, 'Prices' => 1, 'Seo' => 2, 'Associations' => 3, 'Images' => 9, 'Shipping' => 4, 'Combinations' => 5, 'Features' => 10, 'Customization' => 11, 'Attachments' => 12, 'Suppliers' => 13, )); } // Sort the tabs that need to be preloaded by their priority number asort($this->available_tabs, SORT_NUMERIC); /* Adding tab if modules are hooked */ $modules_list = Hook::getHookModuleExecList('displayAdminProductsExtra'); if (is_array($modules_list) && count($modules_list) > 0) { foreach ($modules_list as $m) { $this->available_tabs['Module'.ucfirst($m['module'])] = 23; $this->available_tabs_lang['Module'.ucfirst($m['module'])] = Module::getModuleName($m['module']); } } if (Tools::getValue('reset_filter_category')) { $this->context->cookie->id_category_products_filter = false; } if (Shop::isFeatureActive() && $this->context->cookie->id_category_products_filter) { $category = new Category((int)$this->context->cookie->id_category_products_filter); if (!$category->inShop()) { $this->context->cookie->id_category_products_filter = false; Tools::redirectAdmin($this->context->link->getAdminLink('AdminProducts')); } } /* Join categories table */ if ($id_category = (int)Tools::getValue('productFilter_cl!name')) { $this->_category = new Category((int)$id_category); $_POST['productFilter_cl!name'] = $this->_category->name[$this->context->language->id]; } else { if ($id_category = (int)Tools::getValue('id_category')) { $this->id_current_category = $id_category; $this->context->cookie->id_category_products_filter = $id_category; } elseif ($id_category = $this->context->cookie->id_category_products_filter) { $this->id_current_category = $id_category; } if ($this->id_current_category) { $this->_category = new Category((int)$this->id_current_category); } else { $this->_category = new Category(); } } $join_category = false; if (Validate::isLoadedObject($this->_category) && empty($this->_filter)) { $join_category = true; } $this->_join .= ' LEFT JOIN `'._DB_PREFIX_.'stock_available` sav ON (sav.`id_product` = a.`id_product` AND sav.`id_product_attribute` = 0 '.StockAvailable::addSqlShopRestriction(null, null, 'sav').') '; $alias = 'sa'; $alias_image = 'image_shop'; $id_shop = Shop::isFeatureActive() && Shop::getContext() == Shop::CONTEXT_SHOP? (int)$this->context->shop->id : 'a.id_shop_default'; $this->_join .= ' JOIN `'._DB_PREFIX_.'product_shop` sa ON (a.`id_product` = sa.`id_product` AND sa.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON ('.$alias.'.`id_category_default` = cl.`id_category` AND b.`id_lang` = cl.`id_lang` AND cl.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'shop` shop ON (shop.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = a.`id_product`) LEFT JOIN `'._DB_PREFIX_.'image_shop` image_shop ON (image_shop.`id_image` = i.`id_image` AND image_shop.`cover` = 1 AND image_shop.id_shop = '.$id_shop.') LEFT JOIN `'._DB_PREFIX_.'product_download` pd ON (pd.`id_product` = a.`id_product` AND pd.`active` = 1)'; $this->_select .= 'shop.`name` AS `shopname`, a.`id_shop_default`, '; $this->_select .= $alias_image.'.`id_image` AS `id_image`, cl.`name` AS `name_category`, '.$alias.'.`price`, 0 AS `price_final`, a.`is_virtual`, pd.`nb_downloadable`, sav.`quantity` AS `sav_quantity`, '.$alias.'.`active`, IF(sav.`quantity`<=0, 1, 0) AS `badge_danger`'; if ($join_category) { $this->_join .= ' INNER JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_product` = a.`id_product` AND cp.`id_category` = '.(int)$this->_category->id.') '; $this->_select .= ' , cp.`position`, '; } $this->_use_found_rows = false; $this->_group = ''; $this->fields_list = array(); $this->fields_list['id_product'] = array( 'title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs', 'type' => 'int' ); $this->fields_list['image'] = array( 'title' => $this->l('Image'), 'align' => 'center', 'image' => 'p', 'orderby' => false, 'filter' => false, 'search' => false ); $this->fields_list['name'] = array( 'title' => $this->l('Name'), 'filter_key' => 'b!name' ); $this->fields_list['reference'] = array( 'title' => $this->l('Reference'), 'align' => 'left', ); if (Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_SHOP) { $this->fields_list['shopname'] = array( 'title' => $this->l('Default shop'), 'filter_key' => 'shop!name', ); } else { $this->fields_list['name_category'] = array( 'title' => $this->l('Category'), 'filter_key' => 'cl!name', ); } $this->fields_list['price'] = array( 'title' => $this->l('Base price'), 'type' => 'price', 'align' => 'text-right', 'filter_key' => 'a!price' ); $this->fields_list['price_final'] = array( 'title' => $this->l('Final price'), 'type' => 'price', 'align' => 'text-right', 'havingFilter' => true, 'orderby' => false, 'search' => false ); if (Configuration::get('PS_STOCK_MANAGEMENT')) { $this->fields_list['sav_quantity'] = array( 'title' => $this->l('Quantity'), 'type' => 'int', 'align' => 'text-right', 'filter_key' => 'sav!quantity', 'orderby' => true, 'badge_danger' => true, //'hint' => $this->l('This is the quantity available in the current shop/group.'), ); } $this->fields_list['active'] = array( 'title' => $this->l('Status'), 'active' => 'status', 'filter_key' => $alias.'!active', 'align' => 'text-center', 'type' => 'bool', 'class' => 'fixed-width-sm', 'orderby' => false ); if ($join_category && (int)$this->id_current_category) { $this->fields_list['position'] = array( 'title' => $this->l('Position'), 'filter_key' => 'cp!position', 'align' => 'center', 'position' => 'position' ); } } Link to comment Share on other sites More sharing options...
ovt001 Posted September 21, 2018 Author Share Posted September 21, 2018 ben maintenant j'ai à nouveau: The website cannot display the page Link to comment Share on other sites More sharing options...
ovt001 Posted September 21, 2018 Author Share Posted September 21, 2018 AdminProductsController.php voici le fichier Link to comment Share on other sites More sharing options...
Eolia Posted September 21, 2018 Share Posted September 21, 2018 Ben oui mais avec un double construct ca risque pas de le faire... Ci-joint le fichier: AdminProductsController.php Link to comment Share on other sites More sharing options...
ovt001 Posted September 21, 2018 Author Share Posted September 21, 2018 A quelle adresse puis-je vous envoyer des fleurs? :-) cela fonctionne. YES !! Vu que j'avoue avoir eu du mal, mais je ne voudrais pas mourir idiot, puis-je quand même vous demander d'ou venait le problème? Merci Link to comment Share on other sites More sharing options...
Eolia Posted September 21, 2018 Share Posted September 21, 2018 Surement un souci lié à la version mysql. La version 1.6.0.9 est loin d'être la meilleure et le code a été amélioré depuis. Les dernières versions mysql et php sont beaucoup moins permissives qu'auparavant. Link to comment Share on other sites More sharing options...
ovt001 Posted October 8, 2018 Author Share Posted October 8, 2018 Salut Eolia; Depuis la résolution du problème d'affichage produit, j'ai apparemment un autre problème lorsque qu"un nouveau client veut créer son compte. Il peut encoder tous les champs, mais au moment de soumettre ceux-ci, "bouton s'inscrire", il reçoit une page "Error 500" . Peux-tu m'aider? Merci This page isn’t working be-aroma.be is currently unable to handle this request. HTTP ERROR 500 Link to comment Share on other sites More sharing options...
Eolia Posted October 8, 2018 Share Posted October 8, 2018 Pour les versions 1.5 & 1.6, comme toujours en cas d'erreur 500 et pour en savoir plus, il faut modifier cette ligne au début du fichier config/defines.inc.php : define('_PS_MODE_DEV_', false); par define('_PS_MODE_DEV_', true); Et donnez-nous l'erreur après avoir rafraîchi la page Link to comment Share on other sites More sharing options...
ovt001 Posted October 8, 2018 Author Share Posted October 8, 2018 voici l'erreur en mode debug: Fatal error: Uncaught Error: Access to undeclared static property: Validate::$data in /home/cyberren/public_html/be-aroma.be/classes/ObjectModel.php:1041 Stack trace: #0 /home/cyberren/public_html/be-aroma.be/controllers/front/AuthController.php(414): ObjectModelCore->validateController() #1 /home/cyberren/public_html/be-aroma.be/controllers/front/AuthController.php(252): AuthControllerCore->processSubmitAccount() #2 /home/cyberren/public_html/be-aroma.be/classes/controller/Controller.php(171): AuthControllerCore->postProcess() #3 /home/cyberren/public_html/be-aroma.be/classes/Dispatcher.php(373): ControllerCore->run() #4 /home/cyberren/public_html/be-aroma.be/index.php(28): DispatcherCore->dispatch() #5 {main} thrown in /home/cyberren/public_html/be-aroma.be/classes/ObjectModel.php on line 1041 Link to comment Share on other sites More sharing options...
Eolia Posted October 8, 2018 Share Posted October 8, 2018 Bah celle-là elle est classique^^ Vous avez activé PHP 7 sur votre serveur alors que votre version Presta n'est pas écrite pour... Revenez en PHP 5.6 Link to comment Share on other sites More sharing options...
ovt001 Posted October 8, 2018 Author Share Posted October 8, 2018 euh merci, mais là faut que je vois avec le gestionnaire de mon hosting, car moi, j'ai rien activé du tout.... Link to comment Share on other sites More sharing options...
ovt001 Posted October 8, 2018 Author Share Posted October 8, 2018 Si je reviens en PHP 5.6, est ce que les modifs que vous m'aviez fait faire concerant l'affichage des produits qui ne se faisait plus vont quand-même marchées? Merci Link to comment Share on other sites More sharing options...
Eolia Posted October 8, 2018 Share Posted October 8, 2018 Oui, aucun souci la-dessus Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now