gatien Posted March 16, 2011 Share Posted March 16, 2011 Bonjour,Ce que je souhaite :afficher : “x articles à partir de x euros (pour ceux ayant toujours le même supplier_reference), car il y aura aussi le cas du prix minimal à afficher.J’avais trouvé une piste sur le forum (après l'avoir fouillé plusieurs heures) pour afficher le nombre total de produits de la boutique, mais ça ne marche pas (j’ai laissé la formule telle quelle sans modifier les paramètres qui m’intéressent).Ajout dans Classes/Product.php : static public function NombreTotalProduits() { $Result = Db::getInstance()->GetRow(' SELECT COUNT(*) AS `value` FROM `'._DB_PREFIX_.'product`'); return $Result["value"]; } Ajout dans product.php : $smarty->assign('nombre_de_produits', Tools::NombreTotalProduits()); Ajout dans product.tpl {$nombre_de_produits} Je place peut être mal les 2 premiers.J’avais aussi vu une méthode en utilisant :{php} requête {/php} directement dans le tpl concerné, mais là non plus pas de succès.Des idées ?Merci d'avance Link to comment Share on other sites More sharing options...
coeos.pro Posted March 16, 2011 Share Posted March 16, 2011 A mon avis commencez par changer $smarty->assign('nombre_de_produits', Tools::NombreTotalProduits()); en: $smarty->assign('nombre_de_produits', Product::NombreTotalProduits()); Link to comment Share on other sites More sharing options...
gatien Posted March 16, 2011 Author Share Posted March 16, 2011 Impeccable !C'est vraiment une erreur toute bête ! Je n'avais pas modifié cette portion pour l'adapter à Product.php;Merci beaucoup, du coup je vais me servir de ce code comme base pour parvenir à mon résultat.Résultat que je mettrais ici pour les futurs intéressés.Encore merci ! Link to comment Share on other sites More sharing options...
gatien Posted March 16, 2011 Author Share Posted March 16, 2011 Eh bien non, il y a toujours un problème. Je n'arrive pas à adapter la requête sql pour l'afficher dans la page produitLà ça ne marche pas static public function NombreTotalProduits() { $Result = Db::getInstance()->getRow('SELECT COUNT(*) AS `value` FROM `ps_product`WHERE `supplier_reference`=$product->supplier_reference '); return $Result["value"]; } Mais si je remplace la variable par un numéro supplier_reference existant, ça marche static public function NombreTotalProduits() { $Result = Db::getInstance()->getRow('SELECT COUNT(*) AS `value` FROM `ps_product`WHERE `supplier_reference`=2302 '); return $Result["value"]; } L'intérêt est quand même d'utiliser la variable $product->supplier_reference. Est ce possible de l'utiliser dans Classes/Product.php ? Link to comment Share on other sites More sharing options...
coeos.pro Posted March 17, 2011 Share Posted March 17, 2011 Essayez de l'envoyer : $smarty->assign('nombre_de_produits', Tools::NombreTotalProduits($product->supplier_reference)); => static public function NombreTotalProduits($supplier_reference=false) { if(!$supplier_reference) return false; $Result = Db::getInstance()->getRow('SELECT COUNT(*) AS `value` FROM `ps_product`WHERE `supplier_reference`=$supplier_reference ') ; return $Result["value"]; } Link to comment Share on other sites More sharing options...
gatien Posted March 17, 2011 Author Share Posted March 17, 2011 Toujours pareil, la page produit s'affiche, mais sans l'information demandée.J'ai cependant remplacé Tools par Product dans la première portion de votre code.Le résultat {debug} est : {$nombre_de_produits} nullJe pense que le problème vient de la clause WHERE : pourquoi si je met un unique supplier_reference ça fonctionne, et quand je le remplace par la variable, là ça ne va plus ?Soit j'indique mal l'information et j'oublie quelque chose, soit la variable n'est pas déclarée ou ne remonte pas dans la Classe.Même en prenant modèle sur les autres select count, je n'y arrive pas :/edit : a nouveau avec ce code, je remplace dans la clause WHERE : WHERE `supplier_reference`=$supplier_reference par WHERE `supplier_reference`=2302 et là maintenant ça marche (résultat : 4), si j'essaye autre chose, le nombre change et correspond aussi. Link to comment Share on other sites More sharing options...
coeos.pro Posted March 17, 2011 Share Posted March 17, 2011 je ne sui pas bien reveillé, il manque un espace et j'ai pas mis le ' au bon endroit : $result = Db::getInstance()->getRow('SELECT COUNT(*) AS `value` FROM `ps_product` WHERE `supplier_reference`='.$supplier_reference); Essayez avec ceci pour vérifier que ca existe: $smarty->assign('test', $product->supplier_reference); Link to comment Share on other sites More sharing options...
gatien Posted March 17, 2011 Author Share Posted March 17, 2011 Alors si je fais ça, le debug confirme bien que la variable test existe et lui donne la valeur du produit sur la page actuelle (soit 2302 pour le produit que je teste)ça me sort '2302' si je remplace la variable test par {$nombre_de_produit} dans la page produit et non pas le nombre de fois que '2302' existe dans l'ensemble de mon catalogue.C'est pareil si je fais {$nombre_de_produit|@count} Link to comment Share on other sites More sharing options...
coeos.pro Posted March 17, 2011 Share Posted March 17, 2011 Je suis vraiment pas reveillé, il y a encore ce getRow, avec un Execute ca devrait être bon Link to comment Share on other sites More sharing options...
gatien Posted March 17, 2011 Author Share Posted March 17, 2011 ça ne passe toujours pas :voici mon code actuel sur Product.php : static public function NombreTotalProduits($supplier_reference=false) { if(!$supplier_reference) return false; $result = Db::getInstance()->Execute('SELECT COUNT(*) AS `value` FROM `ps_product` WHERE `$supplier_reference`='.$supplier_reference); return $Result["value"]; } et celui sur product.php $smarty->assign('nombre_de_produits', $product->supplier_reference); edit :dans ce dernier code, il ne renvoie apparemment à la classe qui effectue la requête. Il ne sert qu'à afficher le numéro supplier_reference du produit par une autre variable.Si je modifie en : $smarty->assign('nombre_de_produits', Product::NombreTotalProduits($product->supplier_reference)); , là debug indique NULL Link to comment Share on other sites More sharing options...
gatien Posted March 18, 2011 Author Share Posted March 18, 2011 Je viens de trouver comment y arriver partiellement en modifiant la syntaxe. static public function NombreTotalProduits($supplier_reference) { $sql = 'SELECT COUNT(*) AS value' . ' FROM `ps_product`WHERE `supplier_reference`='.$supplier_reference.' '; $nb = Db::getInstance()->getRow($sql); return $nb["value"]; } Par contre, chose étrange, ça ne marche qu'avec un supplier_reference égal à un nombre. Si c'est des lettres, ça ne marche pas. A quoi cela est il dû ? Link to comment Share on other sites More sharing options...
coeos.pro Posted March 18, 2011 Share Posted March 18, 2011 Pour que ca fonctionne tout le temps: $sql = 'SELECT COUNT(*) AS value FROM `ps_product` WHERE `supplier_reference`=\''.$supplier_reference.'\''; Link to comment Share on other sites More sharing options...
gatien Posted March 18, 2011 Author Share Posted March 18, 2011 Parfait, ça marche aussi maintenant.J'ai compris pas mal de choses après bien des heures, et surtout comment sont transmises les infos.Je suis content d'avoir enfin réussi ma première fonction PHP. Je crois que je vais en faire d'autres du coup, ça me parait très intéressant.Avant ça il faut que je l'adapte au product list via les fichiers search je pense.Lorsque j'ai une fonction dans une Classe (Product par exemple), dois je la reproduire dans une autre classe si par exemple j'utilise cette même fonction dans une autre page.php ou la formule "$smarty->assign('nombre_de_produits', Product::NombreTotalProduits($product->supplier_reference));" suffit elle à renvoyer vers la Classe Product et utiliser cette fonction ?En tout cas, merci de votre aide. Link to comment Share on other sites More sharing options...
coeos.pro Posted March 18, 2011 Share Posted March 18, 2011 Product::NombreTotalProduits() va utiliser la fonction NombreTotalProduits dans la class Product, la dupliquer pour l'avoir dans une autre class ne sert à rien. Quelque soit la page qui appelle cette fonction ca reste : Product::NombreTotalProduits Link to comment Share on other sites More sharing options...
pierre bernard Posted March 30, 2013 Share Posted March 30, 2013 (edited) Bonjour, Ce que je souhaite : afficher : “x articles à partir de x euros (pour ceux ayant toujours le même supplier_reference), car il y aura aussi le cas du prix minimal à afficher. J’avais trouvé une piste sur le forum (après l'avoir fouillé plusieurs heures) pour afficher le nombre total de produits de la boutique, mais ça ne marche pas (j’ai laissé la formule telle quelle sans modifier les paramètres qui m’intéressent). Ajout dans Classes/Product.php : static public function NombreTotalProduits() { $Result = Db::getInstance()->GetRow(' SELECT COUNT(*) AS `value` FROM `'._DB_PREFIX_.'product`'); return $Result["value"]; } Ajout dans product.php : $smarty->assign('nombre_de_produits', Tools::NombreTotalProduits()); Ajout dans product.tpl {$nombre_de_produits} Je place peut être mal les 2 premiers. J’avais aussi vu une méthode en utilisant : {php} requête {/php} directement dans le tpl concerné, mais là non plus pas de succès. Des idées ? Merci d'avance Bonjour, Ceux code ci-dessus ne fonctionne plus sur 1.5.4, quelqu'un a une idée de comment faire? Quelqu'un peut m'aider ? merci d'avance Edited March 30, 2013 by pierre bernard (see edit history) 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