Jump to content
Presta260

[Résolu] Assigner le résultat d'une requete SQL simple à Smarty

Recommended Posts

Posted (edited)

Bonjour à tous,

Je n'ai pas réussi à trouver la réponse dans le forum et je bloque depuis assez longtemps dessus alors je me permet de créer ce Topic.

Je souhaiterais simplement assigner le résultat d'une requête SQL simple à Smarty afin de l'afficher dans un Tpl dans le but de me familiariser avec Smarty.


Dans mon exemple je souhaiterais afficher l'heure dans le fichier "pdf/invoice.tpl"

J'ai donc créer une fonction dans le fichier "/classes/Product.php" (je ne sais pas si c'est le bon fichier  pour insérer la fonction) et j'ai insérer ce code:

 

	public function gettime()
	{			
	$result = Db::getInstance()->executeS('SELECT CURTIME()');
    global $smarty;
	$smarty->assign('time', $result);		
	}

Ensuite j'ai ajouter cette ligne de code au fichier pdf/invoice.tpl

<tr>
<td style="text-align: left; width: 45%;font-size: 15pt">Le temps est: {$time} </td>
</tr>

 

Mais malheureusement ça ne s'affiche pas dans les factures. Es ce que quelqu'un aurait l'amabilité de me signaler d'où proviendrait le problème ?

 

Merci sincèrement pour votre aide,

 

Cyril

Edited by Presta260 (see edit history)

Share this post


Link to post
Share on other sites

Bonjour,

et le texte

Le temps est:

s'affiche t il bien ?

Share this post


Link to post
Share on other sites

Bonjour Mediacom87, merci pour votre retour,

Oui le texte ci-dessous s'affiche bien simplement la variable qui ne s'affiche pas.

Quote

Le temps est:

 

Share this post


Link to post
Share on other sites

Peut-être que tu as oublié d'appeler la fonction gettime() ...

Share this post


Link to post
Share on other sites

Bonjour doekia et merci pour votre retour,

je suis novice, comment je pourrais appeler la fonction gettime()  ?

Merci pour votre aide,

 

Share this post


Link to post
Share on other sites

heu novice en quoi? Tu crées une fonction... il faut l'appeler... désolé je suis perdu dans ta logique là

Share this post


Link to post
Share on other sites
Posted (edited)

Je débute en php et smarty.

J'ai crée une fonction en PHP avec une requête simple en SQL dans le but d'assigner le résultat de cette dernière dans Smarty afin d'afficher le résultat dans un fichier Tpl.  La fonction a été mise dans "/classes/Product.php" et ma logique serait d'appeler la fonction simplement  à l'aide de {$time} depuis un Tpl  mais ça ne fonctionne pas et je ne voit autrement pas comment je pourrais appeler la fonction gettime().

Edited by Presta260 (see edit history)

Share this post


Link to post
Share on other sites

global ne doit plus être utilisé depuis des années.

Vous avez utiliser la fonction executeS() qui retourne un résultat sous forme de tableau, certainement que pour avoir la donnée il faudrait plutôt utiliser getValue()

  • Like 1

Share this post


Link to post
Share on other sites

Merci pour ces précisions claire :)

suite à votre message j'ai donc modifié la fonction comme ceci:

	public function gettime()
	{			
	$result = Db::getInstance()->getValue('SELECT CURTIME()');
        $smarty->assign('time', $result);		
	}

et malheureusement je reçois toujours "Le temps est:" sans la prise en compte de {$time}.
Je tiens toutefois à préciser que je vide le cache navigateur et FTP à chaque essaie.

Avez vous par hasard d'autres indications ?

Merci sincèrement pour votre aide.

Share this post


Link to post
Share on other sites

Mais vous n'appelez pas votre fonction... vous invoquez smarty et lui demandez un variable que votre fonction definie.
Pas de bras, pas de chocolat!

Un objet (model) ne doit pas manipuler la vue (principe MVC). Raison pour laquelle $smarty n'est pas defini en accès rapide dans celui-ci

Vous devez modifier le controller (ici HtmlTemplateInvoice), invoquer votre fonction dans la fonction getContent() et la function utilsera $this->smarty

  • Like 1

Share this post


Link to post
Share on other sites
Posted (edited)

Bonsoir Doekia et merci pour votre réponse bien détaillée,

Suite à votre message je me suis penché sur le fichier 'HTMLTemplateInvoice.php' et suite à nombreux essaies la fonction a fonctionnée 😃 !!!!

Pour que la fonction s'affiche dans le template 'invoice.tpl' j'ai du donc transférer la fonction dans le fichier 'HTMLTemplateInvoice.php' (je ne sais pas pourquoi elle ne fonctionnait pas avec le fichier "/classes/Product.php"

Ensuite dans la fonction getContent() j'ai invoquer la fonction gettime() avec le code ci-dessous:

$this->gettime();

Et j'ai du modifier la façon dont j'assignais la fonction à Smarty :

$smarty->assign('time', $result);

par

$this->smarty->assign(array('time' => $result));

Et la fonction s'affiche dans le template Invoice.tpl

Merci sincèrement pour votre aide ainsi qu'à celle de Mediacom 87 :)))

Veuillez recevoir mes très sincères salutations,

 

Edited by Presta260 (see edit history)

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