Newsgroup: it.comp.www.php
Titolo: MVC, problemi con template e output

Salve a tutti,
ho un problema con l'output php in un template.
Premetto che sono nuovo a questa logica, che mi pare essere quella di un 
MVC, e sto cercando di 'imparare strada facendo'.
Il template è composto da alcune tabelle con riga di intestazione, righe 
di dati, e una riga finale con la somma dei dati, in questo modo:
<-- template -->
[GLOBAL]
<tr class="no_colore">
	<td width="80%">&nbsp;</td>
	<td width="10%">&nbsp;</td>
	<td width="10%">&nbsp;</td>
</tr>
<tr class="intestazione">
	<td width="80%">Titolo</td>
	<td width="10%">Nome</td>
	<td width="10%">Cognome</td>
</tr>
[DETAILS]
<tr class="contenuto">
	<td>[TIT]</td>
	<td>[NAME]</td>
	<td>[SURNAME]</td>
</tr>
[/DETAILS]
[TOTAL]	
<tr class="contenuto_finale">
	<td>[DATA]</td>
	<td>[ORA]</td>
	<td>[NUMERO]</td>
</tr>
[/TOTALS]
[/GLOBAL]
<-- fine template -->
Premetto che la pagina in php che sostituisce i dati nel template era 
preesistente e mi trovo a doverla modificare.
La pagina esegue molte query, alcune delle quali però risultano vuote, 
mi trovo quindi ad avere molte righe di intestazione, senza i relativi 
contenuti e riga con totale alla fine.
Ma non riesco a sistemare la cosa, in quanto non capisco come vengono 
caricati i dati nel template.
La parte che si occupa dei dati è questa:
<<-- php code -->
//apertura connessione db e 'creazione della pagina'
$cn = $dm -> Db_connect($dbo["DSN"], $dbo["User"], $dbo["Password"]);
$fm = new Fileman();
$page = $fm -> Getf("../html/dati.html");
/*questa parte credo serva a caricare l'html o a fare il parsing delle 
etichette presenti nell'html no ? */
$glob1 = $fm -> Load_block($page, "GLOBAL");
$glob .= str_replace("[SPLIT]", $key, $glob1);
$blc1 = $fm -> Load_block($glob, "DETAILS");
<codice di esecuzione query SQL e controllo dei dati>
//parte esemplificativa del controllo dati
//con il replace delle etichette del template
$blc .= str_replace("[DATA]", ($datef[2] . "/" . $datef[1] . "/" . 
$datef[0]), $blc1);
$blc = str_replace("[ORA]", (substr($hourf, 0, 2) . ":" . substr($hourf, 
2, 2)), $blc);
//continuano i caricamenti delle etichette.. credo
$glob = $fm -> Replace_block($glob, "DETAILS", $blc);
$blc = NULL;
$glob1 = $fm -> Load_block($page, "GLOBAL");
$blc1 = $fm -> Load_block($glob, "TOTALS");
<codice altra query SQL e controllo dei dati>
$glob = $fm -> Replace_block($glob, "TOTALS", $blc);
$blc = NULL;
$glob1 = $fm -> Load_block($page, "GLOBAL");
$glob .= str_replace("[SPLIT]", "Totali", $glob1);
$blc1 = $fm -> Load_block($glob, "DETAILS");
//nella pagina vengono poi fatte altre query
// che continuano a caricare i dati..
// ma credo sia inutile riportarle
// sopo l'ultima quesry mi ritrovo
$glob = $fm -> Replace_block($glob, "TOTALS", $blc);
//chiusura connessione db e stampa della pagina
$dm -> Db_close($cn);
$page = $fm -> Replace_block($page, "GLOBAL", $glob);
printf("%s", $page);
<-- fine php code -->
Vorrei sapere dove intervenire per poter manipolare le intestazioni.. in 
maniera da introdurre qualche if di controllo per la presenza di un 
result set di dati.. e far quindi stampare la parte di intestazioni 
compresa in [GLOBAL] solo se le parti successive sono presenti.
Può essere utile aggiungere delle etichette nel template per avere un 
maggior controllo ?
Grazie a tutti in anticipo per la pazienza.
YUS

Premetto che non ho letto totalmente il tuo codice, ma provare ad
usare una struttura a template tipo scatole cinesi ?
Se vuoi un esempio lo trovi sul mio sito:
http://www.pignatelli.com/2008/09/16/php-classe-per-gestire-il-layout-delle-pagine/
Ciao, Nicola
-----------------------------------------------------------------------------------
www.pignatelli.com
Pignatelli.com - sql, asp, php tutorial e molto altro ancora
-----------------------------------------------------------------------------------

 
http://www.pignatelli.com/2008/09/16/php-classe-per-gestire-il-layout-delle-pagine/
Ora ci guardo, grazie.
YUS

YUS ha scritto:

Premetto anche io che ci ho perso solo un quarto d'ora.. dato che il 
tempo che ho a disposizione per sperimentare è poco, mi sembra però un 
pò macchinoso per i miei scopi, non ho la necessità di andare a scrivere 
dinamicamente il singolo TAG di una pagina html, mi basta poter inserire 
dinamicamente 2,3 blocchi nel template, e qualche dato qua e la.
Il lavoro che sto modificando è ben fatto, e con 1 pagina php + 1 pagina 
template ottiene lo stesso risultato, solo che ho dei problemi nel 
capire come funziona e quindi a modificarlo.
Tutto ciò non toglie la validità del tuo codice, molto utile in molti casi.
Ps. Se riuscissi a dare un occhiata al mio post per vedere se ci capisci 
qualcosa più di me, te ne sarei grato!
Grazie
YUS