Jump to content
jt-espace

problème smarty php sql

Recommended Posts

Bonjour à tous,

 

J'ai un petit problème sur prestashop et la partie front. Je souhaite afficher sur une page que j'ai appelé listeproducts plusieurs informations concernant les produits. Pour l'instant j'ai une fonction dans la classe Product qui effectue une requête sql et me renvoi bien les informations.

 

La voici :

public static function getInfosProduct() {
        $query = 'SELECT ps_product.price, ps_product_lang.name AS namePdt, ps_product_lang.description, ps_product_lang.description_short,
ps_supplier.name AS nameSupplier, ps_supplier.id_supplier AS idSup, ps_product.id_product AS idPdt
FROM ps_product_lang
JOIN ps_product ON ps_product_lang.id_product = ps_product.id_product
LEFT JOIN ps_product_supplier ON ps_product.id_product = ps_product_supplier.id_product
LEFT JOIN ps_supplier ON ps_product_supplier.id_supplier = ps_supplier.id_supplier
LEFT JOIN ps_product_attachment ON ps_product.id_product = ps_product_attachment.id_product';
        return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query); 
    }

Dans mon ListeproductController :

$this->context->smarty->assign(array(
            'informations' => Product::getInfosProduct(),
        ));

Et dans mon tpl :

{foreach from=$informations item=infos}
        <br />
        <h1>{l s='Fiche du circuit '}{$infos.namePdt}</h1>
        {$idPdt = $infos.idPdt}
        Id du circuit : {$infos.idPdt}
        <br /><br />
        Résumé : {$infos.description_short}
        <br />
        Description : {$infos.description}
        <br />
        Auteur : {$infos.nameSupplier} <img src="img/su/{$infos.idSup}.jpg" />
        <br /><br />
        Prix : {round($infos.price,2)}€
        <br /><br />
        <a href="index.php?controller=ficheproduct&id_product={$infos.idPdt}" class="a">Voir</a>
        <br />
        <br />
    <br />
{/foreach}

Tout ça marche très bien.
Mais mon problème est que j'aimerai afficher aussi des informations en fonction de l'id_product. Par exemple afficher les caractéristiques de chaque produit (j'ai installé le module qui permet d'avoir plusieurs valeurs pour une caractéristique). J'ai tenté plusieurs choses, en vain ..

 

J'arrive juste à afficher les caractéristiques mais e ndehors du foreach de mon code ci-dessus, donc pas avec le produit en question.

 

Merci d'avance.

Share this post


Link to post
Share on other sites
$sql = Product::getInfosProduct();
        
        foreach($sql as $row){
            $id = $row['idPdt'];
            $this->context->smarty->assign(array(
            'informations' => Product::getInfosProductByIdPdt($id)
        ));
        }

Avec ce code dans le controller j'ai seulement les informations du dernier Produit, il me faudrait juste pouvoir avoir les infos de tous les produits.

Share this post


Link to post
Share on other sites

et en faisant ça ?

$sql = Product::getInfosProduct();
        
        foreach($sql as $row){
            $id = $row['idPdt'];
            $MonTableau [$id] =  Product::getInfosProductByIdPdt($id);
        }


    $this->context->smarty->assign(array(
            'informations' =>  $MonTableau
        ));

Share this post


Link to post
Share on other sites

ça ne fonctionne pas je dois avoir une erreur dans le .tpl mais je ne vois pas ...

 

pour chaque champ j'ai cette erreur par exemple :

 

Notice: Undefined index: namePdt in /home/voyagere/www/cache/smarty/compile/bd/c8/cd/bdc8cd816b56f34a6bc83c74b26bf57d30107162.file.listeproducts.tpl.php on line 58

 

Merci pour votre réponse.

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More