richo Posted June 1, 2009 Share Posted June 1, 2009 Bonjour,j'utilise le bloque fabricant pour les lister, cependant j'aimerai les afficher dans un ordre alphabétique (de AàZ)comment dois je procéder ?merci de votre aide. Link to comment Share on other sites More sharing options...
Mambe Posted June 2, 2009 Share Posted June 2, 2009 Bonjour,Normalement ceci doit ce faire par défaut, dans quel ordre sont -ils affichés Link to comment Share on other sites More sharing options...
richo Posted June 2, 2009 Author Share Posted June 2, 2009 Bonjour,apparemment ca s'affiche par ordre d'id.donc par ordre de création.peut etre est il possible de modifier l'id ... ? Link to comment Share on other sites More sharing options...
Mambe Posted June 2, 2009 Share Posted June 2, 2009 Il n'est vraiment pas conseillé de modifier l'id.par contre pourrais-tu montrer le code de la fonction getManufacturers() de la classe ManufacturerFichier : classes/Manufacturer.php Link to comment Share on other sites More sharing options...
richo Posted June 2, 2009 Author Share Posted June 2, 2009 voila : static public function getManufacturers($getNbProducts = false, $id_lang = 0, $active = false, $p = false, $n = false) { if (!$id_lang) $id_lang = Configuration::get('PS_LANG_DEFAULT'); $sql = 'SELECT m.*, ml.`description`'; if ($getNbProducts) $sql.= ' , COUNT(p.`id_product`) as nb_products'; $sql.= ' FROM `'._DB_PREFIX_.'manufacturer` as m LEFT JOIN `'._DB_PREFIX_.'manufacturer_lang` ml ON (m.`id_manufacturer` = ml.`id_manufacturer` AND ml.`id_lang` = '.intval($id_lang).')'; if ($getNbProducts) $sql.= ' LEFT JOIN `'._DB_PREFIX_.'product` as p ON (p.`id_manufacturer` = m.`id_manufacturer`) '.($active ? 'WHERE p.`active` = 1' : '').' GROUP BY m.`id_manufacturer`'; $sql.= ' ORDER BY m.`name` ASC'.($p ? ' LIMIT '.((intval($p) - 1) * intval($n)).','.intval($n) : ''); $manufacturers = Db::getInstance()->ExecuteS($sql); if ($manufacturers === false) return false; for ($i = 0; $i < sizeof($manufacturers); $i++) if (intval(Configuration::get('PS_REWRITING_SETTINGS'))) $manufacturers[$i]['link_rewrite'] = Tools::link_rewrite($manufacturers[$i]['name'], false); else $manufacturers[$i]['link_rewrite'] = 0; return $manufacturers; } static public function getManufacturersWithoutAddress() { $sql = 'SELECT m.* FROM `'._DB_PREFIX_.'manufacturer` m LEFT JOIN `'._DB_PREFIX_.'address` a ON (a.`id_manufacturer` = m.`id_manufacturer` AND a.`deleted` = 0) WHERE a.`id_manufacturer` IS NULL'; return Db::getInstance()->ExecuteS($sql); } et ca : static public function getManufacturers($getNbProducts = false, $id_lang = 0, $active = false, $p = false, $n = false) { if (!$id_lang) $id_lang = Configuration::get('PS_LANG_DEFAULT'); $sql = 'SELECT m.*, ml.`description`'; if ($getNbProducts) $sql.= ' , COUNT(p.`id_product`) as nb_products'; $sql.= ' FROM `'._DB_PREFIX_.'manufacturer` as m LEFT JOIN `'._DB_PREFIX_.'manufacturer_lang` ml ON (m.`id_manufacturer` = ml.`id_manufacturer` AND ml.`id_lang` = '.intval($id_lang).')'; if ($getNbProducts) $sql.= ' LEFT JOIN `'._DB_PREFIX_.'product` as p ON (p.`id_manufacturer` = m.`id_manufacturer`) '.($active ? 'WHERE p.`active` = 1' : '').' GROUP BY m.`id_manufacturer`'; $sql.= ' ORDER BY m.`name` ASC'.($p ? ' LIMIT '.((intval($p) - 1) * intval($n)).','.intval($n) : ''); $manufacturers = Db::getInstance()->ExecuteS($sql); if ($manufacturers === false) return false; for ($i = 0; $i < sizeof($manufacturers); $i++) if (intval(Configuration::get('PS_REWRITING_SETTINGS'))) $manufacturers[$i]['link_rewrite'] = Tools::link_rewrite($manufacturers[$i]['name'], false); else $manufacturers[$i]['link_rewrite'] = 0; return $manufacturers; } static public function getManufacturersWithoutAddress() { $sql = 'SELECT m.* FROM `'._DB_PREFIX_.'manufacturer` m LEFT JOIN `'._DB_PREFIX_.'address` a ON (a.`id_manufacturer` = m.`id_manufacturer` AND a.`deleted` = 0) WHERE a.`id_manufacturer` IS NULL'; return Db::getInstance()->ExecuteS($sql); } Merci de ton aide Link to comment Share on other sites More sharing options...
Patric Posted June 2, 2009 Share Posted June 2, 2009 $sql.= ' ORDER BY m.`name` ASC'.($p ? ' LIMIT '.((intval($p) - 1) * intval($n)).','.intval($n) : ''); Pourtant ça semble bien trié par ordre alphabétique sur le nom du fabricant.Mais pourquoi tu as collé deux fois le même code ? Link to comment Share on other sites More sharing options...
Mambe Posted June 2, 2009 Share Posted June 2, 2009 Pourrais-tu insérer : echo $sql;Avant la ligne :$manufacturers = Db::getInstance()->ExecuteS($sql);Ensuite recharge la page d'accueil de ta boutique.Ensuite montre nous la requete ecrite tout en haut de la page d'accueil Link to comment Share on other sites More sharing options...
richo Posted June 2, 2009 Author Share Posted June 2, 2009 la fonction elle été en 2 fois, alors je l'ai mis en 2 fois ...mais c est peut etre avec des conditions differente ...ou sinon je viens de faire ce que tu m'as dis Mambe, et voila ce que ca donne :SELECT m.*, ml.`description` FROM `ps_manufacturer` as m LEFT JOIN `ps_manufacturer_lang` ml ON (m.`id_manufacturer` = ml.`id_manufacturer` AND ml.`id_lang` = 2) ORDER BY m.`name` ASC Link to comment Share on other sites More sharing options...
Mambe Posted June 2, 2009 Share Posted June 2, 2009 Etrange, la requete renvoi bien la liste des fournisseur triée par le nom du fournisseur. (ORDER BY m.`name`)N-y-a-t-il pas un ou plusieurs espaces devant certains nom de fournisseurs?Sinon, je ne vois pas trop la Link to comment Share on other sites More sharing options...
richo Posted June 2, 2009 Author Share Posted June 2, 2009 Dans mon cas ce n'est pas la liste des fournisseurs, mais des fabricants ... Link to comment Share on other sites More sharing options...
Mambe Posted June 2, 2009 Share Posted June 2, 2009 oui trompé dans le moty-a-t-il des espaces devant le nom de certains fabricants ? Link to comment Share on other sites More sharing options...
Patric Posted June 2, 2009 Share Posted June 2, 2009 En tous cas la requête retourne le résultat attendu dans PHPMyAdmin...Tu es sur un PS modifié (thème, code source, etc.) ? Link to comment Share on other sites More sharing options...
richo Posted June 2, 2009 Author Share Posted June 2, 2009 non, pas d'espace devant les nom.Oui j'allai le dire justement, j'ai inséré un module fait par un prestataire, donc ca doit venir de là.Je vais le essayé de le recontacter. Link to comment Share on other sites More sharing options...
Patric Posted June 2, 2009 Share Posted June 2, 2009 Un module de quoi ? Le module du bloc Fabricants ? Link to comment Share on other sites More sharing options...
richo Posted June 2, 2009 Author Share Posted June 2, 2009 oui un module en forme de bloc qui permette de faire une recherche par fabricant et par catégorie. Link to comment Share on other sites More sharing options...
Mambe Posted June 2, 2009 Share Posted June 2, 2009 Ah comprend mieux maintenant Link to comment Share on other sites More sharing options...
Patric Posted June 2, 2009 Share Posted June 2, 2009 Oui, moi aussi, ça aurait été bien de commencer par ça.Essaye avec le module Fabricants par défaut, et si ça marche, contacte ce prestataire pour qu'il te corrige son module. Link to comment Share on other sites More sharing options...
richo Posted June 2, 2009 Author Share Posted June 2, 2009 Effectivement le module de base affiche bien les marques par ordre alphabétique.Arf, j'aurai dû vérifier avant, merci de votre aide (et de votre logique) ;-) 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