Jump to content

Affichage mélangé des noms de produit dans la page "Quantités disponibles à la vente" du Back Office.


Recommended Posts

Bonjour à tous,

Je rencontre un problème étrange sur ma boutique PrestaShop 1.6. Dans l'onglet "Quantités disponibles à la vente" de la page produit du back office, le nom du produit affiché ne correspond pas à la ligne de quantité.

Ce bug semble isolé à cette page, car les quantités dans la base de données sont correctes et correspondent bien aux déclinaisons appropriées. Je n'ai pas apporté de modifications aux fichiers PHP et TPL depuis 2017.

Pensez-vous que ce problème pourrait être lié à une mise à jour de PHP ou MySQL, ou à un module ? Pourrait-il s'agir d'une base de données corrompue ou d'un ID manquant ?

Je joins une image pour illustrer le souci.

Merci d'avance pour votre aide !probaffichage.jpg.5be7ff8c72701e0fc21896509082ab66.jpg

Link to comment
Share on other sites

Parce OVH a forcé le passage en Mysql8 et que celui-ci ne tient plus compte implicitement de l'ordre par défaut de l'auto incrément.

Vous êtes donc passé en MySQL 8 et votre version Prestashop n'est pas compatible.

Il faut patcher la fonction Product::getAttributesResume() en ajoutant un ORDER BY à cette 1ère requête:

        $combinations = Db::getInstance()->executeS('
            SELECT pa.*, product_attribute_shop.*
            FROM `'._DB_PREFIX_.'product_attribute` pa
            '.Shop::addSqlAssociation('product_attribute', 'pa').'
            WHERE pa.`id_product` = '.(int)$this->id.'
            GROUP BY pa.`id_product_attribute`
            ORDER BY pa.`id_product_attribute`
        ');

ligne ajoutée: ORDER BY pa.`id_product_attribute`

Idem pour la requête qui suit:

        $lang = Db::getInstance()->executeS('SELECT pac.id_product_attribute, GROUP_CONCAT(agl.`name`, \''.pSQL($attribute_value_separator).'\',al.`name` ORDER BY agl.`id_attribute_group` SEPARATOR \''.pSQL($attribute_separator).'\') as attribute_designation
		FROM `'._DB_PREFIX_.'product_attribute_combination` pac
		LEFT JOIN `'._DB_PREFIX_.'attribute` a ON a.`id_attribute` = pac.`id_attribute`
		LEFT JOIN `'._DB_PREFIX_.'attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group`
		LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = '.(int)$id_lang.')
		LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND agl.`id_lang` = '.(int)$id_lang.')
		WHERE pac.id_product_attribute IN ('.implode(',', $product_attributes).')
		GROUP BY pac.id_product_attribute
                ORDER BY pac.id_product_attribute
        ');

ligne ajoutée: ORDER BY pac.id_product_attribute

Edited by Eolia (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...