Jump to content

Acceder au resultat d'une requete dans un fichier tpl


Recommended Posts

Bonjour, j'ai depuis 2 jours un problème.
Je dois rajouter des formulaires de dépôt de produits en front office.
Le formulaire doit afficher des options tels que les déclinaisons et les caractéristiques dans des listes déroulantes et autres.
J'ai donc intégré la page, fais mes requêtes, tout fonctionne. (http://www.carcenterpro.com/depot.php)
Mais je veux intégrer la page à Prestashop et donc à smarty.
J'ai donc crée un fichier depot.tpl (qui est affiché "correctement"), un fichier /controller/DepotController.php , et un fichier /classes/Depot.php .
Où dois-je placer mes requêtes? Sous quelles formes dois-je les faire?

Pour le moment, j'ai ça dans ma classe Depot.php:

class DepotCore extends ObjectModel
{
   public function affich_fabricant(){
           $ps_manufacturer_req = "SELECT id_manufacturer, name FROM ps_manufacturer WHERE active='1'";    
           $ps_manufacturer = Db::getInstance()->ExecuteS($ps_manufacturer_req);
           while ($row=mysql_fetch_array($ps_manufacturer))
           {
               $constructeur[] = array ('nom' => $row['name'], 'id' => $row['id_manufacturer']); 
           }

       }
}



J'ai ca dans mon DepotController.php :

class DepotControllerCore extends FrontController
{
   public function __construct()
   {
       $this->php_self = Configuration::get('PS_HOMEPAGE_PHP_SELF');
       parent::__construct();
   }

   public function process()
   {
       parent::process();
      $smarty->assign('constructeur',$constructeur);
       self::$smarty->assign('HOOK_HOME', Module::hookExec('home'));
   }

   public function displayContent()
   {
       parent::displayContent();
       self::$smarty->display(_PS_THEME_DIR_.'depot.tpl');
   }
}


et dans mon depot.tpl, j'ai ca :


{foreach from=$constructeur item=constructeurs}
{$constructeurs.name}
 {/foreach}



Je suis au bord de la pendaison, je ne sais plus quoi faire... ceci est une requête simple d'exemple, je sais que la variable {$manufacturer} existe déjà..

Merci beaucoup pour votre aide.

EDIT: je suis en version 1.4 de presta avec Smarty 3 activé...

Link to comment
Share on other sites

Bon j'ai changé j'ai mis dans mon fichier depot.php à la racine, pour zapper le controller et la classe.
J'ai le code suivant :

$ps_manufacturer = mysql_query("SELECT id_manufacturer, name FROM ps_manufacturer WHERE active='1'");    
while ($row = mysql_fetch_array($ps_manufacturer))
{

   $smarty->assign('constructeur',$row);

}
include(dirname(__FILE__).'/header.php');

$smarty->display(_PS_THEME_DIR_.'depot.tpl');

include(dirname(__FILE__).'/footer.php');
?> 



et dans mon fichier depot.tpl, j'ai ceci :

{foreach $constructeur  as $constructeurs}
{$constructeurs}
{/foreach}



Il ne m'affiche que le dernier résultat de la requête!

Link to comment
Share on other sites

Si ca interesse du monde, j'ai fait ca:

$dsn = 'mysql:host='._DB_SERVER_.';dbname='._DB_NAME_.''; 
$login = _DB_USER_; 
$passwd = _DB_PASSWD_; 

$db = new PDO($dsn, $login, $passwd, array( 
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true)); 
//liste des fabricants :
$ps_manufacturer = $db->prepare("SELECT id_manufacturer, name FROM ps_manufacturer WHERE active='1'");        
$ps_manufacturer->execute(); 
$ps_manufacturer->setFetchMode(PDO::FETCH_LAZY); 
$smarty->assign('constructeur',$ps_manufacturer);


et dans mon tpl :

{foreach $constructeur as $constructeurs}
{$constructeurs.name}
{/foreach}



et ca fonctionne: ENFIN! :)

Link to comment
Share on other sites

Ceci dit cette méthode fonctionne pour une requête simple, mais là, si j'ai besoin de faire quelque chose de plus compliqué :

while ($row = mysql_fetch_object($ps_nbportes))
{
$id_feature_value = $row->id_feature_value;
$id_feature = $row->id_feature;

$req_nb_portes = mysql_query ("SELECT * FROM ps_feature_value_lang WHERE id_feature_value='".$id_feature_value."' AND id_lang='2'");
$req_nb_portes_obj = mysql_fetch_object($req_nb_portes);
echo ''.$req_nb_portes_obj->value.'';
}




J'ai tenté ceci , mais sans succès :
mon fichier php :

$ps_portes = $db->prepare("SELECT * FROM ps_feature_value WHERE id_feature='6'");
$ps_portes->execute(); 
$ps_portes->setFetchMode(PDO::FETCH_OBJ);
$smarty->assign('nbr_portes',$ps_portes); 
//var_dump($ps_portes->id_feature_value);
$ps_nbportes = $db->prepare("SELECT * FROM ps_feature_value_lang WHERE id_feature_value='".$ps_portes->id_feature_value."' AND id_lang='2'");
$ps_nbportes->execute(); 
$ps_nbportes->setFetchMode(PDO::FETCH_LAZY); 

$smarty->assign('nb_portes',$ps_nbportes);


Mon fichier .tpl :

{foreach $nbr_portes as $test}
                                                   {foreach $nb_portes as $portes}
{$portes.value}
                                                   {/foreach}
{/foreach}

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