Jump to content
Sign in to follow this  
Dev_Elisabeth

[résolu] Problème d'interprétation code smarty/php

Recommended Posts

Bonjour,

 

Je voudrais modifier la fiche produit pour ajouter des logos dont j'ai enregistré le nom dans la base de données seulement je n'arrive pas à accéder au réponse de ma requête.

Je vous joins le modèle de la base de données et les codes de la page tpl et celle du php.

 

Cordialement,

 

-------------------------------------

SQL :

 

CREATE TABLE ps_fonctionnalite
( id_fc int NOT NULL AUTO_INCREMENT,
fc_name varchar(100),
fc_nameImage varchar(100),
PRIMARY KEY (id_fc));

CREATE TABLE ps_fonctionnalite_attribute
(
id_attrib int NOT NULL AUTO_INCREMENT,
id_fc int,
id_product int,
PRIMARY KEY (id_attrib));

ALTER TABLE ps_fonctionnalite_attribute
ADD FOREIGN KEY (id_fc) REFERENCES ps_fonctionnalite(id_fc);
ALTER TABLE ps_fonctionnalite_attribute
ADD FOREIGN KEY (id_product) REFERENCES ps_product(id_product);

 

TPL page product.tpl :

 

<div id="information_contenu">
{assign var=id value=$product->id}
{section loop=$list name=product}
<center><img src="http://www.lisica-informatique.fr/img/logo/{$list[$id].nameI}" /></center>
{/section}
</div>

 

PHP page product_req.php :

 

<?php
// Extraction des informations
require("../tools/smarty/smarty.class.php");
$query = $connexion->prepare("SELECT ps_fonctionnalite_attribute.id_fc, fc_nameImage, fc_name, ps_product.id_product FROM ps_product, ps_product_lang, ps_fonctionnalite, ps_fonctionnalite_attribute WHERE ps_product.id_product=ps_fonctionnalite_attribute.id_product AND ps_fonctionnalite.id_fc=ps_fonctionnalite_attribute.id_fc AND ps_product.id_product=ps_product_lang.id_product AND id_lang=2;");
$query->execute();
$list = array();
while($data = $query->fetch()){
$list[$data['ps_product.id_product']]['id']	= $data['ps_fonctionnalite_attribute.id_fc'];
$list[$data['ps_product.id_product']]['name']  = $data['fc_name'];
$list[$data['ps_product.id_product']]['nameI'] = $data['fc_nameImage'];
}
// On lance Smarty

$tpl = new Smarty();
$tpl->assign('list', $list);
$tpl->display("product.tpl");
?>

Share this post


Link to post
Share on other sites

Bonjour,

 

Pourquoi ne surcharges-tu pas la classe Product.php directement ? Ainsi tu aurais accès à la variable global $smarty à laquelle tu pourrais assigner ta variable $list .

Share this post


Link to post
Share on other sites

oui j'ai vu que sur certains forums c'est ce qu'il fesait, j'ai donc mis

dans le fichier Product.php (classe) :

static public function Logo() {
 $query = "SELECT `fc_name` FROM `'._DB_PREFIX_.'ps_product`, `'._DB_PREFIX_.'ps_product_lang`, `'._DB_PREFIX_.'ps_fonctionnalite`, `'._DB_PREFIX_.'ps_fonctionnalite_attribute` WHERE ps_product.`id_product`=ps_fonctionnalite_attribute.`id_product` AND ps_fonctionnalite.`id_fc`=ps_fonctionnalite_attribute.`id_fc` AND ps_product.`id_product`=ps_product_lang.`id_product` AND `id_lang`=2 ;";
 $query->execute();
 $list = array();
 while($data = $query->fetch()){
 $list[$data['ps_product.id_product']]['id']    = $data['ps_fonctionnalite_attribute.id_fc'];
 $list[$data['ps_product.id_product']]['name']  = $data['fc_name'];
 $list[$data['ps_product.id_product']]['nameI'] = $data['fc_nameImage'];
 }
 return $list;
}

 

dans le fichier product.php de www. :

$smarty->assign('list', Product::Logo());

 

et le fichier product.tpl, je n'ai rien changé :

{assign var=id value=$product->id}

{section loop=$list name=list}
<center><img src="http://www.lisica-informatique.fr/img/logo/{$list[$id].nameI}" /></center>
{/section}

 

J'ai un peu de mal à comprendre le lien exacte entre tous ces fichiers, même si j'ai compris la notion de template.

Share this post


Link to post
Share on other sites

Bonjour,

 

Tu souhaites faire ça pour le détail d'un produit ou pour les listing des produits d'une catégorie ?

Share this post


Link to post
Share on other sites

elkastor : En faite, j'ai créé une table me permettant d'enregistrer le nom de Logo tel que "windows7".. et j'aimerais récupérer ce nom "fc_nameImage" (table ps_fonctionnalite) pour afficher le logo sur la fiche produit

ET chaque produit a donc plusieurs logos d'attribués (table ps_fonctionnalite_attribute)

 

Après avoir écrit le code sous toutes les façons possibles que propose autant les sujets postés sur ce forum que d'autres, toujours aucun résultat :

http://www.siteduzer...ichier-tpl.html

http://www.prestasho...ne-requete-sql/

http://www.smarty.ne...pic.php?p=68221

http://emilienmalbra...ans-prestashop/

Share this post


Link to post
Share on other sites

OK,

 

Voilà ce que je ferais à ta place, je surchargerai la class product.php,

dans le repertoire override/classes/ il faut créer le fichier Product.php :

 

<?php
class Product extends ProductCore
{
}

 

tu y ajoutes ta vriable logos :

 

public $logos;

 

Ensuite tu créé la fonction qui va récuperer les logos associés au produit :

 

/**
* Retourne les logos associés au produit
* @param $id_product : l'identifiant du produit
* @return la liste des logos
*/
public function get_logos( $id_product ) {

global $cookie, $smarty;
$logos = array();
$sql = sprintf("
 SELECT
  fa.id_fc, f.fc_name, f.fc_nameImage, p.id_product,
 FROM
  %s p
 INNER JOIN
  %s pl on p.id_product = pl.id_product
 INNER JOIN
  %s fa ON fa.id_product = p.id_product
 INNER JOIN
  %s f ON f.id_fc = fa.id_fc
 WHERE
  pl.id_lang = %d AND id_product = %d",
 _DB_PREFIX_.'product',
 _DB_PREFIX_.'product_lang',
 _DB_PREFIX_.'fonctionnalite',
 _DB_PREFIX_.'fonctionnalite_attribute',
 $cookie->id_lang,
 $id_product)
$res = Db::getInstance()->executeS( $sql );
if ( count( $res ) > 0 )
{
 foreach( $res as $r )
 {
  $logos[ $id_product ]['id'] = $r['id_fc'];
  $logos[ $id_product ]['name'] = $r['fc_name'];
  $logos[ $id_product ]['nameI'] = $r['fc_nameImage'];
 }
}
return $logos;
}

 

Ensuite tu surcharges le constructeur de la classe product :

 

public function __construct($id_product = NULL, $full = false, $id_lang = NULL)
{
   parent::__construct($id_product = NULL, $full = false, $id_lang = NULL);
   $this->logos = $this->get_logos( $this->id_product );
}

 

Ensuite tu devrais pouvoir retrouver les logos dans le template via

 

{$product.logos}

 

Essaies ça et dis moi si ça fonctionne.

Share this post


Link to post
Share on other sites

Merci de votre aide,

 

alors j'obtiens cette erreur en activant config.inc.php

 

 

Il y a 1 erreur :

  1. ce produit n'est plus disponible

 

Pourtant il est bien présent et plus haut il m'indique :

 

Warning: Invalid argument supplied for foreach() in /homez.461/lisicain/www/override/classes/Product.php on line 37

 

l37 : foreach( $res as $r )

 

PS : il manquait un ";" à la fin de $sql

 

Petite question dans la requête comment au niveau du traitement sql reconnaît que "p." c'est ps_product ou que "f." c'est ps_fonctionnalite... ?

Share this post


Link to post
Share on other sites

Pour la petite question, je viens de comprendre en regardant les propriétés de sprintf %d = double donc soit id_lang ou id_product sinon %s = string donc les "_DB_PREFIX_.' .... ' "

 

Par contre, il est indiqué que l'on peux écrire la position du string s'il en contient plusieurs de cette façon "%1$d" on doit donc l'indiquer non ?

Share this post


Link to post
Share on other sites

Par contre, il est indiqué que l'on peux écrire la position du string s'il en contient plusieurs de cette façon "%1$d" on doit donc l'indiquer non ?

 

Non, ce n'est pas nécessaire, les arguments sont traités dans l'ordre d'apparition.

 

As tu essayé d'afficher la requête et de l’exécuter directement via phpymadmin pour voir si celle si fonctionne ?

Car je n'ai pas tester du coup je ne sais pas si c'est fonctionnel, d'où le ";" manquant.

Share this post


Link to post
Share on other sites

J'ai rajouté les %1$d.. car en faite ils sont pas dans l'ordre ensuite dans phphmyadmin j'ai une erreur de ce type

 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM ps_product p INNER JOIN ps_product_lang pl on p.id_product = pl.' at line 3

 

Je suis entrain de chercher à quoi cela est dû

 

SELECT fa.id_fc, f.fc_name, f.fc_nameImage, p.id_product,
FROM ps_product p
INNER JOIN ps_product_lang pl ON p.id_product = pl.id_product
INNER JOIN ps_fonctionnalite_attribute fa ON fa.id_product = p.id_product
INNER JOIN ps_fonctionnalite f ON f.id_fc = fa.id_fc
WHERE pl.id_lang =2
AND id_product =14

Share this post


Link to post
Share on other sites

1ere solution une virgule à la fin du SELECT en trop ^^"

2eme problème id_product est ambigu tout à la fin, on y arrive !

 

Plus d'erreur SQL mais toujours ce foreach qui a un soucis, pourtant la requête marche bien.

Share this post


Link to post
Share on other sites

à la fin tu as AND id_product =14

il faut mettre :

 

AND p.id_product =14

Share this post


Link to post
Share on other sites

Oui c'est ce que j'ai modifié et la requete marche, pas de soucis mais c'est le fichier qui marche pas enfin le foreach

Share this post


Link to post
Share on other sites

oui je n'ai lu en entier ton précédent message, essaye d'afficher $res pour voir ce que tu obtiens print_r($res);

Share this post


Link to post
Share on other sites

donc $res est vide, remplace la ligne

if ( count( $res ) > 0 )

par

if(!empty($res))

Share this post


Link to post
Share on other sites

question bete :

 

dans la requête sql : f = table _DB_PREFIX_.'fonctionnalite_attribute ?

et fa = table _DB_PREFIX_.'fonctionnalite' ?

Share this post


Link to post
Share on other sites

non l'inverse effectivement mais ça je l'ai changé fa c'est fonctionnalite_attribute ^^

et le résultat de l'erreur c'est toujours le même un array()

Share this post


Link to post
Share on other sites

perso je mettrai (pour éviter les erreurs) :

 

 


$sql = 'SELECT fa.id_fc, f.fc_name, f.fc_nameImage, p.id_product
FROM     '._DB_PREFIX_.'product p
INNER JOIN  '._DB_PREFIX_.'product_lang pl on p.id_product = pl.id_product
INNER JOIN  '. _DB_PREFIX_.'fonctionnalite_attribute fa ON fa.id_product = p.id_product
INNER JOIN  '. _DB_PREFIX_.'fonctionnalite f ON f.id_fc = fa.id_fc
WHERE pl.id_lang = '.(int)$cookie->id_lang.'
AND  p.id_product = '.(int)$id_product;

$res = Db::getInstance()->ExecuteS($sql);

 

C'est ExecuteS et non executeS

Share this post


Link to post
Share on other sites

Oui le executeS je l'avais changé au cas où je savais pas tellement si la majuscule avait de l'importance et comme c'est souvent le cas, je l'avais changé ;)

 

j'ai un peu changé pour éviter les conflits entre les différents guillemets ' et ". et au niveau des coloris c'est plus clair pour moi.

$sql = "SELECT fa.id_fc, f.fc_name, f.fc_nameImage, p.id_product
FROM    "._DB_PREFIX_."product' p
INNER JOIN  "._DB_PREFIX_."product_lang' pl on p.id_product = pl.id_product
INNER JOIN  ". _DB_PREFIX_."fonctionnalite_attribute' fa ON fa.id_product = p.id_product
INNER JOIN  ". _DB_PREFIX_."fonctionnalite' f ON f.id_fc = fa.id_fc
WHERE
pl.id_lang = ".(int)$cookie->id_lang."
AND p.id_product = ".(int)$id_product;

 

Comme résultat je vois plus le "array()" mais il y a toujours une erreur

Share this post


Link to post
Share on other sites

non j'ai corrigé la requête sql entre temps, sinon oui il y a des problèmes avec les ' (comme je n'utilise plus le sprintf)

 

reprend la requête sql que j'ai mis dans précédent message ça devrait être meilleur.

Share this post


Link to post
Share on other sites

ok c'est fait le "Array ( )" est de retour ^^"

Merci de votre aide, à plusieurs on voit beaucoup plus d'erreurs.

 

Je rejoins le fichier pour que ce soit plus clair sur l'avancement qu'on soit au même point

<?php
class Product extends ProductCore
{
public $logos;
/**
* Retourne les logos associés au produit
* @param $id_product : l'identifiant du produit
* @return la liste des logos
*/
public function get_logos( $id_product ) {
global $cookie, $smarty;
$logos = array();
$sql = 'SELECT fa.id_fc, f.fc_name, f.fc_nameImage, p.id_product
FROM	 '._DB_PREFIX_.'product p
INNER JOIN  '._DB_PREFIX_.'product_lang pl on p.id_product = pl.id_product
INNER JOIN  '. _DB_PREFIX_.'fonctionnalite_attribute fa ON fa.id_product = p.id_product
INNER JOIN  '. _DB_PREFIX_.'fonctionnalite f ON f.id_fc = fa.id_fc
WHERE pl.id_lang = '.(int)$cookie->id_lang.'
AND  p.id_product = '.(int)$id_product;

$res = Db::getInstance()->ExecuteS($sql);
print_r($res);
if(!empty($res))
{
  foreach( $res as $r )
  {
$logos[ $id_product ]['id'] = $r['id_fc'];
$logos[ $id_product ]['name'] = $r['fc_name'];
$logos[ $id_product ]['nameI'] = $r['fc_nameImage'];
  }
}
return $logos;
}

public function __construct($id_product = NULL, $full = false, $id_lang = NULL)
{
 parent::__construct($id_product = NULL, $full = false, $id_lang = NULL);
 $this->logos = $this->get_logos( $this->id_product );
}
}
?>

Share this post


Link to post
Share on other sites

si mes souvenirs sont bons print_r($res); est à utiliser avec pre:

 

 

echo '<pre>';

print_r($res);
echo '</pre>';

sinon vers la fin change:

 

$this->logos = $this->get_logos( $this->id_product );

par

$this->logos = $this->get_logos( $id_product );

Share this post


Link to post
Share on other sites

bon, on va afficher la totale:

change les 2 lignes

 

$res = Db::getInstance()->ExecuteS($sql);
print_r($res);

 

 

par :

 

 

echo '<br/>id_product : '.$id_product;
echo '<br/>sql: '.$sql;
if(!$res = Db::getInstance()->ExecuteS($sql))
echo '<br/>PROBLEME AVEC LA REQUETE SQL !!!';
else
{
echo '<br/>tableau : <br/><pre>';
print_r($res);
echo '</pre>';
}

Share this post


Link to post
Share on other sites

Juste pour info j'ai été voir le manuel pour print_r($res) en anglais et bon j'ai essayé de faire ça

echo '<pre>';

$result=print_r($res);

echo $result;

echo '</pre>';

 

et j'obtiens

Array

(

)

1

Je vais essayer ce que tu m'as dit.

Share this post


Link to post
Share on other sites

J'obtiens ceci :

id_product :
sql: SELECT fa.id_fc, f.fc_name, f.fc_nameImage, p.id_product FROM ps_product p INNER JOIN ps_product_lang pl on p.id_product = pl.id_product INNER JOIN ps_fonctionnalite_attribute fa ON fa.id_product = p.id_product INNER JOIN ps_fonctionnalite f ON f.id_fc = fa.id_fc WHERE pl.id_lang = 2 AND p.id_product = 0
PROBLEME AVEC LA REQUETE SQL !!!

Share this post


Link to post
Share on other sites

Oui, j'ai bien la même chose que ce message

 

<?php
class Product extends ProductCore
{
public $logos;
/**
* Retourne les logos associés au produit
* @param $id_product : l'identifiant du produit
* @return la liste des logos
*/
public function get_logos( $id_product ) {
global $cookie, $smarty;
$logos = array();
$sql = 'SELECT fa.id_fc, f.fc_name, f.fc_nameImage, p.id_product
FROM	 '._DB_PREFIX_.'product p
INNER JOIN  '._DB_PREFIX_.'product_lang pl on p.id_product = pl.id_product
INNER JOIN  '. _DB_PREFIX_.'fonctionnalite_attribute fa ON fa.id_product = p.id_product
INNER JOIN  '. _DB_PREFIX_.'fonctionnalite f ON f.id_fc = fa.id_fc
WHERE pl.id_lang = '.(int)$cookie->id_lang.'
AND  p.id_product = '.(int)$id_product;

echo '<br/>id_product : '.$id_product;
echo '<br/>sql: '.$sql;
if(!$res = Db::getInstance()->ExecuteS($sql))
echo '<br/>PROBLEME AVEC LA REQUETE SQL !!!';
else
{
echo '<br/>tableau : <br/><pre>';
print_r($res);
echo '</pre>';
}
if(!empty($res))
{
  foreach( $res as $r )
  {
$logos[ $id_product ]['id'] = $r['id_fc'];
$logos[ $id_product ]['name'] = $r['fc_name'];
$logos[ $id_product ]['nameI'] = $r['fc_nameImage'];
  }
}
return $logos;
}

public function __construct($id_product = NULL, $full = false, $id_lang = NULL)
{
 parent::__construct($id_product = NULL, $full = false, $id_lang = NULL);
 $this->logos = $this->get_logos( $id_product );
}
}
?>

 

et dans le template j'ai :

<div id="information_contenu">
{assign var=id value=$product->id}
{$product.logos}
</div>

 

ici assign étant inutile vu qu'on l'utilise pas mais je l'ai gardé en mémoire

Share this post


Link to post
Share on other sites

changez

parent::__construct($id_product = NULL, $full = false, $id_lang = NULL);

par

parent::__construct($id_product, false, $id_lang);

Share this post


Link to post
Share on other sites

J'obtiens toujours le meme message avec id_product vide par contre en plus j'ai :

 

Fatal error: Cannot use object of type Product as array in /homez.461/lisicain/www/tools/smarty/compile/50197e4f8b9f1d44cc51fdffb648ff03b47738cc.file.product.tpl.php on line 255

Share this post


Link to post
Share on other sites

j'ai rien dit ^^ j'avais modifié une ligne entre temps que j'ai remis à l'initiale :

et j'ai maintenant :

id_product : 14

sql: SELECT fa.id_fc, f.fc_name, f.fc_nameImage, p.id_product FROM ps_product p INNER JOIN ps_product_lang pl on p.id_product = pl.id_product INNER JOIN ps_fonctionnalite_attribute fa ON fa.id_product = p.id_product INNER JOIN ps_fonctionnalite f ON f.id_fc = fa.id_fc WHERE pl.id_lang = 2 AND p.id_product = 14

tableau :

Array

(

    [0] => Array

        (

            [id_fc] => 1

            [fc_name] => Garantie 1an

            [fc_nameImage] => 1an.gif

            [id_product] => 14

        )

)

Share this post


Link to post
Share on other sites

Mais j'ai toujours ce problème de FATAL ERROR

 

ça doit être à cause du template cette fois si car le fatal se trouve dans mon div, je dois mal récupérer les valeurs

Share this post


Link to post
Share on other sites

donc maintenant c'est bon, tu as bien id_product, la requete sql est bonne, tu as bien un tableau en retour, il n'y a plus qu'à remettre:

 

$res = Db::getInstance()->ExecuteS($sql);

 

au lieu des lignes qui permettent l'affichage des différents messages et de mettre en forme le infos retournées

 

tu as forcé la compilation et vidé le cache smarty ?

Share this post


Link to post
Share on other sites

Je modifie ça.

oui à chaque fois, je vide la compilation par contre le cache est toujours vide.

 

Je rajoute :

if(!$res = Db::getInstance()->ExecuteS($sql))
echo '<br/>PROBLEME AVEC LA REQUETE SQL !!!';
else
{
$res = Db::getInstance()->ExecuteS($sql);
echo '<br/>tableau : <br/><pre>';
print_r($res);
echo '</pre>';
}

Share this post


Link to post
Share on other sites

toujours le même fatal error dans mon div :

Fatal error: Cannot use object of type Product as array in /homez.461/lisicain/www/tools/smarty/compile/50197e4f8b9f1d44cc51fdffb648ff03b47738cc.file.product.tpl.php on line 255

Share this post


Link to post
Share on other sites
<div id="information_contenu">
<?php $_smarty_tpl->tpl_vars['id'] = new Smarty_variable($_smarty_tpl->getVariable('product')->value->id, null, null);?>
l255 : <?php echo $_smarty_tpl->getVariable('product')->value['logos'];?>

</div>

Share this post


Link to post
Share on other sites

oui, ou i tu peux,

je réfléchi...

 

en mettant le code en commentaire tu as quoi ?

<?php
class Product extends ProductCore
{
public $logos;
/**
* Retourne les logos associés au produit
* @param $id_product : l'identifiant du produit
* @return la liste des logos
*/
public function get_logos( $id_product ) {
global $cookie, $smarty;
$logos = array();
/*
$sql = 'SELECT fa.id_fc, f.fc_name, f.fc_nameImage, p.id_product
FROM	 '._DB_PREFIX_.'product p
INNER JOIN  '._DB_PREFIX_.'product_lang pl on p.id_product = pl.id_product
INNER JOIN  '. _DB_PREFIX_.'fonctionnalite_attribute fa ON fa.id_product = p.id_product
INNER JOIN  '. _DB_PREFIX_.'fonctionnalite f ON f.id_fc = fa.id_fc
WHERE pl.id_lang = '.(int)$cookie->id_lang.'
AND  p.id_product = '.(int)$id_product;

echo '<br/>id_product : '.$id_product;
echo '<br/>sql: '.$sql;
if(!$res = Db::getInstance()->ExecuteS($sql))
echo '<br/>PROBLEME AVEC LA REQUETE SQL !!!';
else
{
echo '<br/>tableau : <br/><pre>';
print_r($res);
echo '</pre>';
}
if(!empty($res))
{
  foreach( $res as $r )
  {
    $logos[ $id_product ]['id'] = $r['id_fc'];
    $logos[ $id_product ]['name'] = $r['fc_name'];
    $logos[ $id_product ]['nameI'] = $r['fc_nameImage'];
  }
}
*/
return $logos;
}

public function __construct($id_product = NULL, $full = false, $id_lang = NULL)
{
 parent::__construct($id_product = NULL, $full = false, $id_lang = NULL);
 $this->logos = $this->get_logos( $id_product );
}
}
?>

Share this post


Link to post
Share on other sites

et met :

public function __construct($id_product = NULL, $full = false, $id_lang = NULL)
{
 parent::__construct($id_product , $id_lang);
// $this->logos = $this->get_logos( $id_product );
}

 

et essaye de changer parent::__construct($id_product, false, $id_lang);

par parent::__construct($id_product, $id_lang);

 

ça dépend de la fonction construct précédente... si ça ce trouve c'est juste ça le problème

Share this post


Link to post
Share on other sites

Avec en plus :

$this->logos = $this->get_logos( $id_product );

 

en commentaire ça change rien

 

En gardant les commentaires et en changeant le parent::construct en plus du fatal error j'ai :

 

Warning: htmlentities() expects parameter 1 to be string, array given in /homez.461/lisicain/www/tools/smarty/plugins/modifier.escape.php on line 30

Share this post


Link to post
Share on other sites

Bon me revoilà, et toujours sur mon problème si le fatal error indique qu'il ne veut pas que Product retourne un objet de type "array" = tableau comment pourrait-on faire ?

 

par rapport à la lligne255 du compile :

<?php echo $_smarty_tpl->getVariable('token')->value['logos']; ?>

sur la plus part des pages de prestashop, on voit plutôt

<?php echo $_smarty_tpl->getVariable('token')->value; ?>

Share this post


Link to post
Share on other sites

AAAAAAAAAAAAAH ! FINI c'est résolu j'ai tout bêtement essayer de modifier ce qu'il y avait écrit dans product.tpl et à force de tout tester (oui quand on y arrive pas on essai tout) ^^" et j'ai trouvé avec ceci :

{assign var=id value=$product->id}
{assign var=name value=$product->logos[$id]['nameI']}
{$name}

alors qu'avant il y avait ceci :

{assign var=id value=$product->id}
{assign var=name value=$product->logos[$id]['nameI']}
{$name}

 

Un Grand Merci à elkastor et coeos.pro, j'ai maintenant fini cette grosse partie sur les logos :)

Je teste tout ça, au cas où si je met deux logos ça marche ^^

Share this post


Link to post
Share on other sites

Bon avec deux logos ça ne marche pas mais un oui, si je fais un tableau avec une dimension de plus, un $i qui s'incrémenterait peut être ça pourrait marcher, plus qu'à tester. ;)

 

Bon résultat :

Product.php

$i=0;
if(!empty($res))
{
  foreach( $res as $r )
  {
   $logos[ $id_product ][$i]['id'] = $r['id_fc'];
   $logos[ $id_product ][$i]['name'] = $r['fc_name'];
   $logos[ $id_product ][$i]['nameI'] = $r['fc_nameImage'];
   $i++;
  }
 session_start();
 $_SESSION['nb']=$i;
}

 

product.tpl

{assign var=nb value=$smarty.session.nb}
{assign var=id value=$product->id}

{section name=boucle start=0 loop=$nb step=1}
{assign var=name value=$product->logos[$id][$smarty.section.boucle.index]['nameI']}
<p style="HEIGHT:25%; WIDTH:25%" ><center><img src="http://www.lisica-informatique.fr/img/logo/{$name}" /></center></p>
{/section}

 

Pour l'instant ça marche super bien !

Share this post


Link to post
Share on other sites

Oui, bon maintenant mon cher maître de stage me rajoute des difficultés (normale) mais ce problème est résolu ;)

(pour passer le post en résolu par contre je ne sais pas comment faire)

Share this post


Link to post
Share on other sites

Bonjour,

 

Content que ton problème soit résolu, pour passer le post en RÉSOLU il me semble qu'il faut modifier ton tout premier post .

Share this post


Link to post
Share on other sites

Bonjour me revoilà,

J'ai un nouveau soucis, je n'arrive pas à avoir via mes modules que j'ai créé le token, j'ai tout essayé les solutions ici :

http://www.prestashop.com/forums/topic/39645-resolutoken/

Ca marche bien sur un template en front-office mais pas du tout en back-office.

A part défaire la sécurité qu'apporte les tokens ou alors l'écrire en "dur" en le cherchant une fois sur l'url de la page vers laquelle on veut se diriger...

Merci de votre aide :)

Share this post


Link to post
Share on other sites

dans le back office, le token est dans l'URL, suffit de le récupérer avec $token = $_GET['token'];

Share this post


Link to post
Share on other sites

Même ça, ne marche pas, il me met toujours : Clé de sécurité invalide!

Est-ce qu'il y aurait un endroit où les tokens sont stockés et que ça ne l'aurait pas fait au moment de création du module ?

Share this post


Link to post
Share on other sites

la clé de sécurité qui se trouve sur les liens du back-office (je veux mettre en lien entre deux onglets pour y accéder plus facilement et peut être plus tard fusionner ces deux modules)

Share this post


Link to post
Share on other sites

Fatal error: Call to undefined function getAdminTokenLite() in /homez.461/lisicain/www/modules/Fonctionnalite/AdminFc.php on line 149

 

Mon appel de la fonction :

$token = getAdminTokenLite("AdminFC_Prod");

Share this post


Link to post
Share on other sites

Bonjour,

j'ai une nouvelle question voilà j'aimerais créer une page totalement indépendante de tout module,

il s'agit juste d'une page d'affichage.

Seulement, je n'arrive pas à faire le lien entre une page déjà existante dans le back office et ma page que j'ai créé :

echo'<a href="http://www.monsite.fr/modules/Fonctionnalite/Fc_Prod.php" style="color:#0186DF;" >Liste des Produits</a><BR /><BR />';

Si je met un lien comme ceci, il se met en front-office et non en back-office...

J'avais utilisé ceci dans mon fichier.php

<?php

include(dirname(__FILE__).'/config/config.inc.php');
include_once(dirname(__FILE__).'/init.php');

----- VOTRE CONTENU -----

include(dirname(__FILE__).'/header.php');
$smarty->display(_PS_THEME_DIR_.'profile.tpl');
include(dirname(__FILE__).'/footer.php');

?>

Effectivement c'est super.. mais c'est pour ajouter une page en front-office et non back-office.

 

Merci encore de tout votre aide ! Mon projet avance beaucoup !

Share this post


Link to post
Share on other sites

Bonjour,

Encore une nouvelle question, je suis entrain de faire de l'upload de fichier, tout fonctionne super bien sauf à partir du moment où sur la même page dans un formulaire différent j'ai voulu recréer mon upload en modifiant seulement le nom du "input type="file" "

A quoi cela peut être dû ?

Sur un forum, j'ai vu que ça doit être dû au nom du formulaire mais ça ne change rien...

http://www.developpez.net/forums/d700376/php/langage/fonctions/plusieurs-upload-dimages-meme-page/

 

Merci de votre aide.

Share this post


Link to post
Share on other sites

Je m'appelle Kayode, on m'a diagnostiqué l'hépatite E en novembre dernier, après une fièvre grave, un jaunissement de la peau, une urine foncée, des douleurs abdominales, des vomissements et de la fatigue. On m'a donné un traitement à la ribavirine à l'hôpital, qui s'est apaisé mais qui est revenu après 3 mois. Cette fois, c'était pire, un problème de levier est apparu, aucun espoir de traitement, j'ai perdu l'appétit et mes articulations étaient douloureuses. Mais au début de l’année, ma sœur a eu connaissance en ligne de la recommandation en ligne du docteur IYABIYE concernant le traitement à base de plantes et l’a demandé de l’aider. Je suis devenu totalement guéri après le traitement et toutes les douleurs ont disparu. Je suis retourné à l'hôpital et j'ai été testé négatif. Je dois rester un petit moment pour voir si cela va revenir, mais voici: (JE SUIS LIBRE), vous aussi pouvez être libéré de l'hépatite avec ses médicaments. Contact: +2348072229413 ou +2348158577300 email: iyabiyehealinghome@gmail.com
 

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
Sign in to follow this  

×
×
  • Create New...

Important Information

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