daftfunk Posted November 16, 2012 Share Posted November 16, 2012 (edited) Bonjour à tous, Je cherche sans réel succès un tuto me permettant de faire une liste d'infos d'une table X sur ma page, sa partie php et sa version tpl pour récupéré les infos Ça semble simple mais j'arrive pas a grand chose! Si une âme charitable pouvait me donner la méthode je lui en serais gré! Merci par avance pour votre temps Edited November 17, 2012 by daftfunk (see edit history) Link to comment Share on other sites More sharing options...
daftfunk Posted November 16, 2012 Author Share Posted November 16, 2012 Alors je la refais depuis bédut J'ai la table ps_orders que je veux parcourir et dont je veux afficher quelques informations Voila mon code en PHP (je ne passe pas par les méthodes car je ne sais pas trop lequelles appellent quoi! // Recuperation des infos des la commandes du client $priprice = Db::getInstance()->getRow(' SELECT * FROM `'._DB_PREFIX_.'orders` WHERE `id_customer` = \''.pSQL($cookie->id_customer).'\' ORDER BY `id_order` ASC'); foreach ($priprice as $key => $priprice['id_order'] ) { $priprice[$idorder] = $priprice['id_order']; $priprice[$idorder]->date_add = $priprice['date_add']; $priprice[$idorder]->total_paid = $priprice['total_paid']; } // Assignation des valeurs $smarty->assign(array( 'id_order' => $id_order, 'date_add' => $date_add, 'total_paid' => $total_paid )); et puis dans le tpl {foreach from=$priprice item=id_order} <tr class="alternate_item"> <li>{$id_order|string_format:"%04d"}</li> <li>{dateFormat date=$date_add} </li> <li>{displayPrice price=$total_paid}</li> {/foreach} Bien entendu il y a rien qui fonctionne! mais je cherche, sachant qu'il me manque des notions sur les tableaux et que suis pas a l'abri d'une faute de syntaxe. Merci pour l'aide au débogage! Link to comment Share on other sites More sharing options...
franckm1000 Posted November 16, 2012 Share Posted November 16, 2012 (edited) Ton code PHP est erroné à plusieurs endroits. Pour commencer, saches que tu utilises une méthode quand même getRow de la classe Db Ensuite, la méthode getRow n'est pas intéressante car elle renvoie un singleton (le premier résultat) Dans ton cas, il faut utiliser la méthode Executes qui te renverra un tableau multidimensionnel. Ensuite, ton foreach je comprends pas bien comment tu le construit avec ça: $priprice as $key => $priprice['id_order'] En +, tu fais appel à une variable $idorder qui n'existe pas. Enfin, plutôt que de construire une variable via un foreach et ensuite la "déconstruire" avec un nouveau foreach côté smarty, il vaudrait mieux envoyer directement le tableau via smarty et ensuite utiliser un foreach côté TPL pour lister chaque ligne du tableau. Enfin, en amont en PHP, ne pas oublier de déclarer les variables globales: global $smarty; global $cookie; $priprice = Db::getInstance()->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'orders` WHERE `id_customer` = '.pSQL($cookie->id_customer).' ORDER BY `id_order` ASC'); $smarty->assign('priprice',$priprice); Côté TPL: <table> {foreach from=$priprice item=ordre} <tr> <td>{$ordre.id_order}</td> <td>{$ordre.date_add}</td> <td>{$ordre.total_paid}</td> </tr> {/foreach} </table> Attention, deux conditions à ton code: 1. Que le client soit connecté sinon $cookie->id_customer est vide et le code ne renverra rien. 2. Bien sûr, que ce client ait fait une commande. Côté PHP: Edited November 16, 2012 by franckm1000 (see edit history) 1 Link to comment Share on other sites More sharing options...
daftfunk Posted November 17, 2012 Author Share Posted November 17, 2012 (edited) Merci merci merci! J'ai tellement lutté ... sans comprendre ce que je faisais! Si j'ai bien compris la manip: - getRow chope une "seule" ligne (comme son nom le suggère) - ExecuteS chope l'intergralité de la table? et la liste se crée dans le tpl avec {foreach} J'ai observé des morceaux de code ou il me semblait qu'il fallait crée un tableau pour obtenir les listes et je comprenait pas ou le {foreach} devait se placé (coté smarty ou coté php). Il serait interessants de crée un espace ou des méthodes pour obtenir tel ou tel affichage serait un peut expliqué. Quoi qu'il en soit merci mille fois! Edited November 17, 2012 by daftfunk (see edit history) Link to comment Share on other sites More sharing options...
franckm1000 Posted November 17, 2012 Share Posted November 17, 2012 Foreach peut s'utiliser aussi bien en PHP qu'en TPL. Il m'arrive parfois d'utiliser des foreach en PHP pour construire des tableaux mais c'est dans des cas bien particuliers. Ici ton tableau est déjà créé. Dans 95% des cas, foreach est fait pour lister et afficher le tableau, donc autant le faire du côté de l'affichage TPL. 1 Link to comment Share on other sites More sharing options...
coeos.pro Posted November 17, 2012 Share Posted November 17, 2012 Il serait interessants de crée un espace ou des méthodes pour obtenir tel ou tel affichage serait un peut expliqué. Un peu de lecture : - http://www.prestashop.com/blog/fr/les-bonnes-pratiques-de-la-classe-db-sur-prestashop-1-5/ voir points 6 et 7 - http://www.smarty.net/docsv2/fr/language.function.foreach.tpl 1 Link to comment Share on other sites More sharing options...
daftfunk Posted November 18, 2012 Author Share Posted November 18, 2012 Merci! Je vais lire ça avec .... interet 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