PDA

View Full Version : [Smarty] Stampa di una tabella dinamica


robertino_salemi
09-02-2015, 16:25
Salve a tutti,
sto lavorando ad un progetto già avviato in cui viene utilizzato Smarty (http://www.smarty.net).

ll problema non riguarda Smarty in se, ma la visualizzazione di una tabella dinamica, esattamente l'echo dell'ultima cella di ogni riga...quindi è più un problema di logica...
Dovrei evitare di stamparla se tutte le altre cella della riga sono vuote...

Ho provato con:
1) un if sul valore della variabile che la cella deve contenere, ovviamente però se è vuota la tabella ci saranno righe che avranno l'ultima cella e righe che invece saranno vuote
2) se l'if lo inserisco dentro il td della cella, questa viene stampata sempre...

Ecco qui il codice:

{foreach from=$dati item=d name=dati}
{if $camino_old <> $d.camino and not $smarty.foreach.dati.first}
<tr>
<td colspan="5"><div style="width:100%;height:1px;border:1px solid black;overflow:hidden"></div></td>
</tr>
{/if}
{if $flagnote == 'true'}
{if $d.camino == 'Tutti' and $first}
<tr class="top" style="font:12px">
<td colspan="5" align="center"><b>Note Generali</b></td>
</tr>
{assign var="first" value=false}
{/if}
{/if}
<tr class="{cycle values='even,odd'}" style="font:12px;">
{if $d.camino == 'Tutti'}
{if $flagnote == 'true'}
<td width="100px" align="center"><b>{$camini[$d.camino]}</b></td>
<td width="80px" align="center">{$d.datarif}</td>
{/if}
{else}
<td width="100px" align="center"><b>{$camini[$d.camino]}</b></td>
<td width="80px" align="center">{$d.datarif}</td>
{/if}

{if $d.camino == 'Tutti'}
{if $flagnote == 'true'}
<td colspan="2">{$d.note}</td>
{/if}
{else}
<td width="200px">{$d.note}</td>
{/if}

{if $d.camino <> 'Tutti'}
<td>{$d.note_estese}</td>
{/if}
<td align="center" >
{if $d.idfile <> ''}
<img title="{$d.nomefile}" src="{$SITEURL}img/page.gif" style="cursor:pointer" onClick="document.location='dl.php?id={$d.idfile}'">
{/if}
</td>
</tr>
{assign var = camino_old value = $d.camino}
{/foreach}


Suggerimenti?
Se utilizzassi un flag booleano?

Grazie.

les2
10-02-2015, 10:13
allineare la chiusura e l'apertura delle if avrebbe sicuramente aiutato,
ma non capisco cosa ti serva?
vuoi far vedere solo a volte l'ultima TD ???

mettigli l'if attorno e non dentro.

se vuoi sapere se la riga è vuota usa qualcosa come dati.0!="" o simili per intercettare il dato che puoi testare per capire se vuoto o meno

robertino_salemi
10-02-2015, 14:26
Il problema nasceva dal fatto che a seconda delle condizioni di verifica che provavo la cella a volte appariva a volte no....

Ho dovuto contattare il precedente sviluppatore per conoscere la "logica" da lui utilizzata, risolvendo il problema tramite un semplice IF con la giusta condizione.

Grazie comunque, so benissimo che il mio thread era molto vago e che risultava difficile darmi una mano!

les2
16-02-2015, 14:17
smarty non è malvagio come linguaggio difront end, non dimenticare che sotto è php, quindi ogni if o for è come se fosse scritte in php :)

robertino_salemi
16-02-2015, 14:28
Nonostante abbia qualche limite, non è male.... :D