2011-10-13 4 views
1

Je dois montrer le résultat d'une requête (mysql), comment est-ce que je peux boucler le jeu d'enregistrements sans assigner les valeurs à un tableau? Maintenant, je fais:Comment imprimer un jeu d'enregistrements avec Smarty?

while($row = $this->mysql->fetch($rs)){ 
    val[] = $row 
} 
$this->smarty->assign('val', val); 

puis (dans le template.tpl)

{section name=nr loop=$val} 
{$val[nr].cod}<br /> 
{sectionelse} 
<h1>No record</h1> 
{/section} 

Comment puis-je optimiser?

Répondre

1

Vous pouvez utiliser foreach Smarty, bien qu'il ne le rend pas plus court:

{if $val} 
    {foreach from=$val item=nr} 
     {$nr.cod}<br /> 
    {/foreach} 
{else} 
    <h1>No record</h1> 
{/if} 
+0

Non, je demandé comment peut montrer le "jeu d'enregistrements" (mon jeu d'enregistrements) comme vous pouvez le voir, je sauvegarder les lignes dans un tableau, dois-je faire cela? puis-je imprimer le jeu d'enregistrements directement? – Dail

+0

@Dail vous ne pouvez pas imprimer le jeu d'enregistrements sans l'enregistrer dans un tableau sauf si vous incorporez du code PHP dans le modèle Smarty. C'est une pratique indésirable. Le stocker dans un tableau est la bonne façon de le gérer. –

+0

@Michael, n'est-ce pas lent? – Dail

0

{html_table} peut-être vous aider. Sinon, vous êtes libre de itérer vos lignes et que vous aimez Col. cependant:

{foreach $val as $row} 
    {if [email protected]} 
    <table> 
    <tbody> 
    {/if} 
    {foreach $row as $cell} 
     {if [email protected]} 
     <tr> 
     {/if} 

     <td>{$cell|escape:"html}</td> 

     {if [email protected]} 
     </tr> 
     {/if} 
    {foreach} 
    {if [email protected]} 
    </tbody> 
    </table> 
    {/if} 
{foreachelse} 
    <p>No Data</p> 
{/foreach} 

(syntaxe Smarty3 de {foreach})

Vous pouvez également sortie touches les cellules:

{foreach $val as $row} 
    {if [email protected]} 
    <table> 
    <thead> 
    <tr> 
    {foreach $row as $cell} 
     <th>{[email protected]|escape:"html}</th> 
    {/foreach} 
    </tr> 
    </thead> 
    <tbody> 
    {/if} 
    {foreach $row as $cell} 
     {if [email protected]} 
     <tr> 
     {/if} 

     <td>{$cell|escape:"html}</td> 

     {if [email protected]} 
     </tr> 
     {/if} 
    {foreach} 
    {if [email protected]} 
    </tbody> 
    </table> 
    {/if} 
{foreachelse} 
    <p>No Data</p> 
{/foreach}