Canalblog
Suivre ce blog Administration + Créer mon blog

Haker Parker

Publicité
Archives
10 décembre 2020

Erreur Prestashop 1.7.*: position plus grande ou égale que le nombre total de produits de la catégorie

Sous Prestashop, il peut arriver cette erreur lors de l'enregistrement d'un produit:

Vous ne pouvez pas avoir une position plus grande que le nombre total de produits de la catégorie, moins 1 (la numérotation des positions commence à 0)

Voici une requête SQL pour connaître la liste des categories qui crée cette erreur:
(remplacez ps_ par le prefixe de table que vous utilisez)

SELECT CTGRPDCT.id_category, 
       CTGRLANG.name               AS category_name, 
       Count(CTGRPDCT.id_category) AS counted, 
       Max(CTGRPDCT.position)      AS maxi 
FROM   ps_category_product CTGRPDCT 
       INNER JOIN ps_category_lang CTGRLANG 
               ON CTGRLANG.id_category = CTGRPDCT.id_category 
                  AND CTGRLANG.id_shop = 1 
                  AND CTGRLANG.id_lang = 1 
GROUP  BY CTGRPDCT.id_category, 
          CTGRLANG.name 
HAVING Max(CTGRPDCT.position) >= Count(CTGRPDCT.id_category) 

Et voici uue requête SQL pour la corriger:

UPDATE ps_category_product T0, 
       (SELECT CTGRPDCT.id_category, 
               CTGRPDCT.id_product, 
               (SELECT Count(T1.id_category) 
                FROM   ps_category_product T1 
                WHERE  T1.id_category = CTGRPDCT.id_category 
                       AND T1.id_product < CTGRPDCT.id_product) AS new_position 
        FROM   ps_category_product CTGRPDCT 
        GROUP  BY CTGRPDCT.id_category, 
                  CTGRPDCT.id_product) T2 
SET    T0.position = T2.new_position 
WHERE  T2.id_category = T0.id_category 
       AND T2.id_product = T0.id_product 

Publicité
Publicité
Publicité