HTML5, php e siti web in versione mobile

Con l’avvento dei tablet e soprattutto degli smartphone si rende sempre più necessario rendere i siti web fruibili anche da quegli utenti che usano queste piattaforme e che in genere permettono la navigazione dei siti web “tradizionali”, ma costringono l’utente a zoomare e “scrollare” il sito orizzontalmente o verticalmente per poterne vedere tutti i contenuti.

Realizzare un sito web per il mobile, significa rendere i contenuti adattabili automaticamente alla risoluzione degli schermi degli smartphone o tablet in modo da permettere la corretta visione dei testi senza dover effettuare zoom e lavorando con lo scroll verticale per semplificarne la visione.

Continue reading “HTML5, php e siti web in versione mobile”

Zend_Pdf, creare file pdf in PHP (1)

Nella realizzazione dei siti web, può capitare di dover creare dei file in formato PDF direttamente con il codice PHP, per esempio per realizzare moduli d’ordine per un e-commerce o schede tecniche di articoli di un catalogo. Comunque creare pdf i cui contenuti siano prelevati dinamicamente dal database in modo da avere dei file sempre aggiornati con i dati recenti del sito (come nel caso di schede tecniche di prodotto).

Continue reading “Zend_Pdf, creare file pdf in PHP (1)”

Php e Pager: paginazione di record in poco tempo

Circa un anno e mezzo fa avevo scritto un articolo che avevo pubblicato sul wiki del grusp, ma poi con l’aggiornamento della loro piattaforma è andato perso.
Fortunatamente un mio collega mi ha ricordato dell’esistenza del sito Internet Archive che con la sua waybackmachine ha indicizzato milioni di siti web creando un archivio storico, selezionabili per anno.
Fortunatamente è stato archiviato anche il wiki del grusp e così sono riuscito a ritrovare il mio vecchio articolo che riporto integralmente qui sotto, perché può sempre servire 🙂 .
———————————
PAGER: metodi di utilizzo

Pager è una classe PEAR che permette di effettuare la paginazione di array di dati.
In particolare è in grado di creare sia l’array delle informazioni da visualizzare nella pagina web selezionata che la stringa contenente tutti i link per scorrere tra le varie pagine di dati.
La forza di questa classe sta nella facilità d’uso e nella sua completa configurabilità e con questo articolo presenterò due possibili metodi di utilizzo che mi hanno semplificato non poco la vita.

Vediamone l’utilizzo partendo dall’esempio presentato nella documentazione ufficiale che potete trovare in pear.php.net:

require_once ‘Pager/Pager.php’;

$params = array(
‘mode’ => ‘Jumping’,
‘perPage’ => 3,
‘delta’ => 2,
‘itemData’ => array(‘a’,’b’,’c’,’d’,’e’,[…omissis…],’z’)
);

$pager = & Pager::factory($params);
$data = $pager->getPageData();
$links = $pager->getLinks();
echo $links[‘all’];

Dopo l’inclusione della classe Pager, viene preparato l’array di configurazione:

  • mode specifica lo stile della paginazione e può assumere i valori jumping o sliding
  • perPage indica quanti risultati (del totale) devono comparire su ogni pagina web
  • delta specifica i links da visualizzare prima e dopo il numero della pagina visualizzata
  • itemdata è l’array di dati che deve essere “spezzato” per la visualizzazione su più pagine.

In questo esempio vengono utilizzati solamente 4 parametri (i minimi necessari per l’utilizzo), ma in totale ne esistono circa 30-35 che permettono di avere il completo controllo del risultato finale, con la possibilità di associare anche delle immagini per i vari links di scorrimento dei risultati.

Dopo aver inizializzato la classe viene chiamato il metodo getPageData, che restituisce l’array contenente la porzione di dati da visualizzare nella pagina selezionata, e getLinks che restituisce un array di stringhe contenente varie tipologie di links in formato HTML da poter visualizzare nelle pagine web. In questo esempio (e nella maggior parte dei casi) viene utilizzata la stringa completa $links[‘all’] che produce un risultato di questo tipo:

<< < 1 2 3 4 5 > >>

Nel caso in cui dobbiamo visualizzare i record provenienti da una query eseguita su un database, possiamo utilizzare il precedente script in queste due modalità:

METODO 1 (facile ma …)

require_once ‘Pager/Pager.php’;

// SQL di esempio
$sql = “SELECT * FROM articoli”;

/* Esecuzione della query e inserimento dei risultati nell’array $aDati (può anche essere un array di array)
Non indico le istruzioni per la query, poi ognuno utilizza quelle a lui più congeniali */

$aDati = array(<>); // tutti i records

$params = array(
‘mode’ => ‘Jumping’,
‘perPage’ => 3,
‘delta’ => 2,
‘itemData’ => $aDati
);

$pager = &Pager::factory($params);
$data = $pager->getPageData(); // records da visualizzare
$links = $pager->getLinks();
echo $links[‘all’];

Questo utilizzo è sicuramente il più veloce in termini di sviluppo, ma che sconsiglio caldamente perchè può diventare anche il più problematico a causa delle risorse richieste (se l’array $aDati è molto grande diventa anche lenta); inoltre non ha senso riempire un array ($aDati) con 1000 records se poi ne se devono visualizzare soltanto 10.

METODO 2

require_once ‘Pager/Pager.php’;

$iRecordPerPagina = 3;

/* pageID è il parametro utilizzato da Pager per indicare la pagina visualizzata */
$iPage = (isset($_GET[‘pageID’]) && ($_GET[‘pageID’] != ”)) ? $_GET[‘pageID’] : 1;

// SQL per il totale dei records
$sqlTot = “SELECT COUNT(*) FROM articoli”;
// esecuzione della query
$iTotRecords = <>; // totale

// SQL per estrarre i record da visualizzare nella pagina selezionata
$sql = “SELECT * FROM articoli LIMIT “.($iRecordPerPagina * ($iPage – 1)).”,”.$iRecordPerPagina;

// esecuzione della query
$aDati = array(<>); // records da visualizzare

$params = array(
‘mode’ => ‘Jumping’,
‘perPage’ => $iRecordPerPagina,
‘delta’ => 2,
‘totalItems’ => $iTotRecords
);

$pager = & Pager::factory($params);
$links = $pager->getLinks();
echo $links[‘all’];

In questo modo la classe Pager risale al numero di pagine, non più attraverso il vettore $aDati, ma attraverso il parametro totalItems a cui ho assegnato il totale dei records.