Récemment
-
date_upd produits
Bugs & Améliorations il y a environ 13 jours13 -
Champ description longue pour les catégories
Modules il y a environ 15 jours5 -
Erreurs suite à la mise à jour
Questions relatives à l'installation/upgrade il y a environ 20 jours10 -
Modification sur le thème "Craft"
Questions relatives à l'installation/upgrade il y a environ 28 jours2 -
Module personnalisation de produit
Modules 5 mars 2025, 13:113 -
Theme non fonctionnel - après MAJ de la Phenixsuite 1.6.2.32
Questions relatives à l'installation/upgrade 27 févr. 2025, 10:2113 -
TinyMCE
Bugs & Améliorations 16 févr. 2025, 18:202 -
Déclinaisons virtuelles avec fichiers
PhenixSuite 14 févr. 2025, 17:4610 -
[RESOLU]Lien téléchargement dans le mail
Discussion générale 14 févr. 2025, 17:436 -
[RESOLU]RGPD
Modules 10 févr. 2025, 17:035 -
Compatibilité des modules
Discussion générale 8 févr. 2025, 17:532 -
[RESOLU]Bug page Préférences Produits
Bugs & Améliorations 7 févr. 2025, 13:254 -
htaccess chatouilleux ?
Bugs & Améliorations 5 févr. 2025, 16:5814 -
Installation depuis boutique 1.6.1.17
Questions relatives à l'installation/upgrade 5 févr. 2025, 13:0819 -
[RESOLU]Module réassurance, permettre le html
Modules 31 janv. 2025, 14:154 -
Des modules et des hacks - liste non exhaustive des modules présentant un risque
Discussion générale 12 déc. 2024, 14:1517 -
Thème enfant
PhenixSuite 12 déc. 2024, 04:0216 -
SumUp Payments Constant Update Request
Modules 3 déc. 2024, 16:092 -
PaypalAPI erreur
PhenixSuite 28 nov. 2024, 09:4553 -
Problèmes de prix avec plusieurs devises et PayPal
PhenixSuite 27 nov. 2024, 01:156
warning SQL ( debug activé ) dans Search.php
-
bonjour
J'ai le warning suivant quand je lance une recherche produit depuis la boutique.
Warning: PDO::query(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'product_attribute_shop.id_product_attribute' in 'field list' in /var/www/html/technokaz/classes/db/DbPDO.php on line 151 [ SQL ERROR ] Unknown column 'product_attribute_shop.id_product_attribute' in 'field list' SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`name`, MAX(i.`id_image`) id_image, il.`legend`, m.`name` manufacturer_name ,( SELECT SUM(weight) FROM ?search_word sw LEFT JOIN ?search_index si ON(sw.id_word = si.id_word) WHERE sw.id_lang = 1 AND sw.id_shop = 1 AND si.id_product = p.id_product AND (sw.word LIKE '10%') ) position, MAX(product_attribute_shop.`id_product_attribute`) id_product_attribute, DATEDIFF( p.`date_add`, DATE_SUB( "2023-10-22 00:00:00", INTERVAL 20 DAY ) ) > 0 new FROM ?product p INNER JOIN ?product_shop product_shop ON(product_shop.id_product = p.id_product AND product_shop.id_shop = 1) INNER JOIN `?product_lang` pl ON(p.`id_product` = pl.`id_product` AND pl.`id_lang` = 1 AND pl.id_shop = 1 ) LEFT JOIN ?stock_available stock ON(stock.id_product = p.id_product AND stock.id_product_attribute = 0 AND stock.id_shop = 1 AND stock.id_shop_group = 0 ) LEFT JOIN `?manufacturer` m ON(m.`id_manufacturer` = p.`id_manufacturer`) LEFT JOIN `?image_shop` i ON(i.`id_product` = p.`id_product` AND i.cover = 1 AND i.id_shop = 1 AND i.id_lang IN(0, 1)) LEFT JOIN `?image_lang` il ON(i.`id_image` = il.`id_image` AND il.`id_lang` = 1) WHERE p.`id_product` IN(45,46,50,51,132,133,198,199) GROUP BY product_shop.id_product ORDER BY position desc LIMIT 0,20 DbCore->displayError in /classes/db/Db.php:450 DbCore->query in /classes/db/Db.php:694 DbCore->executeS in /classes/Search.php:564 SearchCore::find in /controllers/front/SearchController.php:138 SearchControllerCore->initContent in /classes/controller/Controller.php:213 ControllerCore->run in /classes/Dispatcher.php:405 DispatcherCore->dispatch in /index.php:28
La conf de mon module recherche est exclusivement sur les mots-clé ( aucun autre critère ). En remontant le fil , c'est la ligne 529
MAX(product_attribute_shop.`id_product_attribute`) id_product_attribute,
de Search.php qui lève ce warning. Je l'ai supprimé , cela corrige le warning mais dans mon cas , la table de la ligne en question est vide , c'est sans effet sur le résultat de la requête et donc je n'ai pas vraiment cherché à débugger la requête.
cldt
-
-
c'est la ligne 539 ( pas 529 ) . En regardant de plus près la requête , je vois que la table product_attribute_shop n'est pas préfixée. Je vais faire quelques tests ce soir concernant ce warning en lançant cette requête directement dans dbeaver mais j'ai comme l'impression qu'il manque la jointure avec la table product .
-
Les déclinaisons sont désactivées dans votre boutique ?
-
Il manquait la condition dans ce cas. Le code corrigé:
$result = $db->executeS(' SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`name`, MAX(i.`id_image`) id_image, il.`legend`, m.`name` manufacturer_name '.$score.' '.(Combination::isFeatureActive() ? ', MAX(product_attribute_shop.`id_product_attribute`) id_product_attribute' : '').', DATEDIFF( p.`date_add`, DATE_SUB( "'.date('Y-m-d').' 00:00:00", INTERVAL '._PS_NB_DAYS_NEW_PRODUCT_.' DAY ) ) > 0 new'.(Combination::isFeatureActive() ? ' , product_attribute_shop.minimal_quantity AS product_attribute_minimal_quantity, IFNULL(product_attribute_shop.`id_product_attribute`,0) id_product_attribute' : '').' FROM '._DB_PREFIX_.'product p '.Shop::addSqlAssociation('product', 'p').' INNER JOIN `'._DB_PREFIX_.'product_lang` pl ON(p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').') '.(Combination::isFeatureActive() ? ' LEFT JOIN `'._DB_PREFIX_.'product_attribute_shop` product_attribute_shop ON(p.`id_product` = product_attribute_shop.`id_product` AND product_attribute_shop.`default_on` = 1 AND product_attribute_shop.id_shop='.(int)$context->shop->id.')':'').' '.Product::sqlStock('p', 0).' LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON(m.`id_manufacturer` = p.`id_manufacturer`) LEFT JOIN `'._DB_PREFIX_.'image_shop` i ON(i.`id_product` = p.`id_product` AND i.cover = 1 AND i.id_shop = '.(int)$context->shop->id.' AND i.id_lang IN(0, '.(int)Context::getContext()->language->id.')) LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON(i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') WHERE p.`id_product` IN('.implode(',', $product_pool).') GROUP BY product_shop.id_product '.($order_by ? 'ORDER BY '.$alias.$order_by : '').($order_way ? ' '.$order_way : '').' LIMIT '.(int)(($page_number - 1) * $page_size).','.(int)$page_size , true, false); }
-
Effectivement , je n'utilise pas les déclinaisons. Merci pour la correction .