Jump to content

HELP: Afficher le nombre de like sur un produit


Recommended Posts

Bonjour,

Je souhaite récupérer le nb de fois ou les clients ont mis un produit dans leur favoris.

J'ai donc une fonction avec une requete sql qui compte le nombre de fois ou l'id est présent dans la table favorite_product.(module produit favorids)

J'assign ensuite a smarty une variable $likeproductCount

	        global $smarty;
                $id_product = $_GET["id_product"];
                
                 $sql= 'SELECT COUNT(*)
			
			FROM `'._DB_PREFIX_.'favorite_product`
			WHERE  `id_product` = '.$id_product.'';
			
		$results = Db::getInstance()->ExecuteS($sql);
       	        $smarty->assign('likeproductCount', $results);

       

La console debug me donne:

 

$likeproductCount //

 

Smarty_Variable Object (3)
->value = Array (1)
  0 => Array (1)
    COUNT(*) => "1"
->nocache = false
->scope = "file:/var/www/html/monsite/..."

 

Je me retrouve bien avec le nombre de fois ou le produit est ajouté aux favoris. COUNT(*)

 

1er question:

Pourquoi je me retrouve dans un array ?

2eme question:

Comment récupérer la variable COUNT(*) dans le tpl.

 

Merci bcp

 

Link to comment
Share on other sites

Pourquoi je me retrouve dans un array ?
=> par ce que tu utilises ExecuteS, si tu veux directement la valeur utilises getValue :
 
 

$results = (int)Db::getInstance()->getValue('SELECT COUNT(*)
FROM `'._DB_PREFIX_.'favorite_product`
WHERE `id_product` = '.$id_product);

Ensuite, 
 
global $smarty;
c'est inutile
 
$id_product = $_GET["id_product"]; 
Préfère plutôt :
$id_product  = (int)Tools::getValue('id_product');
 
Très important : ton code en l'état est une faille de sécurité très importante, quelqu'un qui connait ce code et qui connait une boutique ayant ce module peut mettre n'importe quoi pour id_product dans l'url, y compris un delete ou autre.

Ici j'ai rajouté (int) donc ça protège, sinon il aurait fallu utiliser pSQL sur la valeur contenu dans l'URL

  • Like 1
Link to comment
Share on other sites

Merci, beaucoup coeos.pro ca marche parfaitement.

$id_product  = (int)Tools::getValue('id_product');
$productlike = (int)Db::getInstance()->getValue('SELECT COUNT(*)
FROM `'._DB_PREFIX_.'favorite_product`
WHERE `id_product` = '.$id_product);
$smarty->assign('likeproductCount', $productlike);

en tpl:

$likeproductCount

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...