Mag 08 2008
[AutoSheet 0.1 beta] - Auto DataSheet in PHP
L’altro giorno stavo cercando su internet una funzione, classe, qualcosa in php che mi permettesse dato un record set sostanzialmente contenente un unico record di poter generare in automatico una scheda o profilo.
In pratica per tabelle che richiedano la visualizzazione di molteplici informazioni, campi e quantaltro è sempre una menata costruire l’HTML necessario per poi stampare i dati. Questo in particolare quanto si ha a che fare con sistemi informativi complessi. Capita meno frequentemente nella realizzazione di siti web.
Dal momento in cui, a differenza che per quanto riguarda i paginatori, dove c’è l’imbarazzo della scelta, non ho trovato nulla di utile.
Allora ho deciso di fare da me.
Premetto che è una versione molto fresca e ancora da sviluppare, testare, evolvere etc… ma voglio comunque pubblicarla.
Di seguito il codice (scusate ma si perde l’indentazione corretta):
// Funzione che genera il datasheet basato su N colonne, campo => valore e configurando il layout function autoSheet($arr, $cols = 4, $border = 0, $cellspacing = 0, $cellpadding = 5, $classfield = “field”, $classdato = “dato”, $caption = “Scheda”)
{
// Calcolo il ceil del numero delle righe che avrò bisogno
$rows = ceil(count($arr) / ($cols / 2));
$html = ‘<table width=”100%” border=”0″ cellspacing=”0″ cellpadding=”5″>’.”\n”;
$html .= ‘<caption>’.$caption.’</caption>’.”\n”;
for($i = 0; $i < $rows; $i++)
{
$html .= ‘<tr>’.”\n”;
for($j = 0; $j < ($cols / 2); $j++)
{
$html .= ‘<td class=”‘.$classfield.’”>’.strtoupper(str_replace(”_”, ” “, key($arr))).’</td>’.”\n”; $html .= ‘<td class=”‘.$classdato.’”>’.current($arr).’</td>’.”\n”; next($arr); } $html .= ‘</tr>’.”\n”;
}
$html .= ‘</table>’.”\n”; return $html;
}
In pratica come funziona:
Tutto quello che dobbiamo fornire a questa funzione è un semplicissimo array associativo dove la chiave rappresenta l’etichetta di una colonna, e il rispettivo valore rappresenta il risultato estratto da database.
Per poter avere una rappresentazione carina delle etichetta ho fatto in modo che nell’SQL che estraggo rinomino i campi mettendo degli _ che poi vado a sostituire con degli spazi.
Naturalmente sarà in futuro necessario prevedere altre features per dati di tipo particolare etc, però va visto a regime e in base ai casi concreti che si presentano.
Oltre all’array poi è semplicemente intuibile la possibilità di passare una serie di dati (opzionali) per formattare la tabella.
QUESTA FUNZIONE E’ LIBERAMENTE UTILIZZABILE, ESPANDIBILE E QUANTALTRO.
Si chiede solo la gentilezza di postare un commento in caso di modifiche importanti al fine di permettere a tutta la comunità di sfruttare questi miglioramenti.
In futuro questo post sarà oggetto di modifiche e integrazioni man mano che la espando e lavoro.
Ciao. Maxgrante
