<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Simone Volpini &#187; PHP</title>
	<atom:link href="http://www.simonevolpini.info/blog/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.simonevolpini.info/blog</link>
	<description>Consulenza, progettazione e realizzazione siti web</description>
	<lastBuildDate>Sat, 17 Jul 2010 09:28:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Php e Pager: paginazione di record in poco tempo</title>
		<link>http://www.simonevolpini.info/blog/2007/09/05/php-e-pager-paginazione-di-record-in-poco-tempo/</link>
		<comments>http://www.simonevolpini.info/blog/2007/09/05/php-e-pager-paginazione-di-record-in-poco-tempo/#comments</comments>
		<pubDate>Wed, 05 Sep 2007 17:59:44 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.simonevolpini.info/blog/2007/09/05/php-e-pager-paginazione-di-record-in-poco-tempo/</guid>
		<description><![CDATA[Circa un anno e mezzo fa avevo scritto un articolo che avevo pubblicato sul wiki del grusp, ma poi con l&#8217;aggiornamento della loro piattaforma è andato perso.
Fortunatamente un mio collega mi ha ricordato dell&#8217;esistenza del sito Internet Archive che con la sua waybackmachine ha indicizzato milioni di siti web creando un archivio storico, selezionabili per [...]<p><a href="http://www.simonevolpini.info/blog/2007/09/05/php-e-pager-paginazione-di-record-in-poco-tempo/">Php e Pager: paginazione di record in poco tempo</a> is a post from: <a href="http://www.simonevolpini.info/blog">Simone Volpini</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Circa un anno e mezzo fa avevo scritto un articolo che avevo pubblicato sul <a href="http://it.wikipedia.org/wiki/Wiki">wiki</a> del <a href="http://www.grusp.it/">grusp</a>, ma poi con l&#8217;aggiornamento della loro piattaforma è andato perso.<br />
Fortunatamente un mio collega mi ha ricordato dell&#8217;esistenza del sito <a href="http://www.archive.org">Internet Archive</a> che con la sua <strong>waybackmachine</strong> ha indicizzato milioni di siti web creando un archivio storico, selezionabili per anno.<br />
Fortunatamente è stato archiviato anche il <a href="http://web.archive.org/web/*/http://wiki.grusp.it">wiki del grusp</a> e così sono riuscito a ritrovare il mio vecchio articolo che riporto integralmente qui sotto, perché può sempre servire <img src='http://www.simonevolpini.info/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
<strong>PAGER: metodi di utilizzo</strong></p>
<p><a href="http://pear.php.net/package/Pager"><strong>Pager</strong></a> è una classe <a href="http://pear.php.net/">PEAR</a> che permette di effettuare la <strong>paginazione di array</strong> di dati.<br />
In particolare è in grado di creare sia l&#8217;array delle informazioni da visualizzare nella pagina web selezionata che la stringa contenente tutti i link per scorrere tra le varie pagine di dati.<br />
La forza di questa classe sta nella <strong>facilità d&#8217;uso e nella sua completa configurabilità</strong> e con questo articolo presenterò <strong>due</strong> possibili <strong>metodi di utilizzo</strong> che mi hanno semplificato non poco la vita.</p>
<p>Vediamone l&#8217;utilizzo partendo dall&#8217;esempio presentato nella documentazione ufficiale che potete trovare in <a href="http://pear.php.net">pear.php.net</a>:</p>
<blockquote><p><strong>require_once</strong> &#8216;Pager/Pager.php&#8217;;</p>
<p>$params = array(<br />
&#8216;mode&#8217;       =&gt; &#8216;Jumping&#8217;,<br />
&#8216;perPage&#8217;    =&gt; 3,<br />
&#8216;delta&#8217;      =&gt; 2,<br />
&#8216;itemData&#8217;   =&gt; array(&#8216;a&#8217;,'b&#8217;,'c&#8217;,'d&#8217;,'e&#8217;,[...omissis...],&#8217;z')<br />
);</p>
<p>$pager = <strong>&amp; Pager::factory</strong>($params);<br />
$data  = $pager-&gt;<strong>getPageData</strong>();<br />
$links = $pager-&gt;<strong>getLinks</strong>();<br />
<strong>echo</strong> $links['all'];</p></blockquote>
<p>Dopo l&#8217;inclusione della classe Pager, viene preparato l&#8217;array di configurazione:</p>
<ul>
<li><strong>mode</strong> specifica lo stile della paginazione e può assumere i valori <em>jumping</em> o <em>sliding</em></li>
<li><strong>perPage</strong> indica quanti risultati (del totale) devono comparire su ogni pagina web</li>
<li><strong>delta</strong> specifica i links da visualizzare prima e dopo il numero della pagina visualizzata</li>
<li><strong>itemdata</strong> è l&#8217;array di dati che deve essere &#8220;spezzato&#8221; per la visualizzazione su più pagine.</li>
</ul>
<p>In questo esempio vengono utilizzati solamente 4 parametri (i minimi necessari per l&#8217;utilizzo), ma in totale <strong>ne esistono circa 30-35</strong> che permettono di avere il completo controllo del risultato finale, con la possibilità di <strong>associare</strong> anche <strong>delle immagini per i vari links di scorrimento dei risultati</strong>.</p>
<p>Dopo aver inizializzato la classe viene chiamato il metodo <strong>getPageData</strong>, che restituisce l&#8217;array contenente la porzione di dati da visualizzare nella pagina selezionata, e <strong>getLinks</strong> che restituisce un array di stringhe contenente varie tipologie di links in formato <strong>HTML</strong> da poter visualizzare nelle pagine web. In questo esempio (e nella maggior parte dei casi) viene utilizzata la stringa completa <strong>$links['all']</strong> che produce un risultato di questo tipo:</p>
<p>&lt;&lt; &lt; 1 2 <strong>3</strong> 4 5 &gt; &gt;&gt;</p>
<p>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à:</p>
<p><strong>METODO 1</strong> (facile ma &#8230;)</p>
<blockquote><p><strong>require_once</strong> &#8216;Pager/Pager.php&#8217;;</p>
<p><em>// SQL di esempio</em><br />
$sql = &#8220;SELECT * FROM articoli&#8221;;</p>
<p><em>/* Esecuzione della query e inserimento dei risultati nell&#8217;array $aDati (può anche essere un array di array)<br />
Non indico le istruzioni per la query, poi ognuno utilizza quelle a lui più congeniali */</em></p>
<p>$aDati = array(&lt;&gt;); <em>// tutti i records</em></p>
<p>$params = array(<br />
&#8216;mode&#8217;       =&gt; &#8216;Jumping&#8217;,<br />
&#8216;perPage&#8217;    =&gt; 3,<br />
&#8216;delta&#8217;      =&gt; 2,<br />
&#8216;itemData&#8217;   =&gt; $aDati<br />
);</p>
<p>$pager = <strong>&amp;Pager::factory</strong>($params);<br />
$data  = $pager-&gt;<strong>getPageData</strong>(); <em>// records da visualizzare</em><br />
$links = $pager-&gt;<strong>getLinks</strong>();<br />
<strong>echo</strong> $links['all'];</p></blockquote>
<p>Questo utilizzo è sicuramente il più veloce in termini di sviluppo, ma che <strong>sconsiglio caldamente</strong> perchè può diventare anche il più problematico a causa delle risorse richieste (se l&#8217;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.</p>
<p><strong>METODO 2</strong></p>
<blockquote><p><strong>require_once</strong> &#8216;Pager/Pager.php&#8217;;</p>
<p>$iRecordPerPagina = 3;</p>
<p>/* pageID è il parametro utilizzato da Pager per indicare la pagina visualizzata */<br />
$iPage = (<strong>isset</strong>($_GET['pageID']) <strong>&amp;&amp;</strong> ($_GET['pageID'] <strong>!=</strong> &#8221;)) <strong>?</strong> $_GET['pageID'] <strong>:</strong> 1;</p>
<p>// SQL per il totale dei records<br />
$sqlTot = &#8220;SELECT COUNT(*) FROM articoli&#8221;;<br />
// esecuzione della query<br />
$iTotRecords = &lt;&gt;; // totale</p>
<p>// SQL per estrarre i record da visualizzare nella pagina selezionata<br />
$sql = &#8220;SELECT * FROM articoli LIMIT &#8220;.($iRecordPerPagina * ($iPage &#8211; 1)).&#8221;,&#8221;.$iRecordPerPagina;</p>
<p>// esecuzione della query<br />
$aDati = array(&lt;&gt;); // records da visualizzare</p>
<p>$params = array(<br />
&#8216;mode&#8217;       =&gt; &#8216;Jumping&#8217;,<br />
&#8216;perPage&#8217;    =&gt; $iRecordPerPagina,<br />
&#8216;delta&#8217;      =&gt; 2,<br />
&#8216;totalItems&#8217; =&gt; $iTotRecords<br />
);</p>
<p>$pager = &amp; <strong>Pager::factory</strong>($params);<br />
$links = $pager-&gt;<strong>getLinks</strong>();<br />
<strong>echo</strong> $links['all'];</p></blockquote>
<p>In questo modo la classe Pager risale al numero di pagine, non più attraverso il vettore <strong>$aDati</strong>, ma attraverso il parametro <strong>totalItems</strong> a cui ho assegnato il totale dei records.</p>
<p><a href="http://www.simonevolpini.info/blog/2007/09/05/php-e-pager-paginazione-di-record-in-poco-tempo/">Php e Pager: paginazione di record in poco tempo</a> is a post from: <a href="http://www.simonevolpini.info/blog">Simone Volpini</a></p>
<h4  class="related_post_title">Continua a leggere</h4><ul class="related_post"><li>No Related Posts</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.simonevolpini.info/blog/2007/09/05/php-e-pager-paginazione-di-record-in-poco-tempo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ogame</title>
		<link>http://www.simonevolpini.info/blog/2007/05/19/ogame/</link>
		<comments>http://www.simonevolpini.info/blog/2007/05/19/ogame/#comments</comments>
		<pubDate>Sat, 19 May 2007 15:36:36 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Passatempi]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.simonevolpini.info/blog/2007/05/19/ogame/</guid>
		<description><![CDATA[Visto che ancora non ne ho mai parlato, nonostante abbia fin da subito inserito un link all&#8217;interno di questo sito, mi sembra giusto citare uno dei passatempi che ormai riempono le mie giornate da quasi due anni.
Quindi seguendo l&#8217;esempio del mio amico Pollucchero che ne ha parlato sul suo blog qualche mese fa esattamente in [...]<p><a href="http://www.simonevolpini.info/blog/2007/05/19/ogame/">Ogame</a> is a post from: <a href="http://www.simonevolpini.info/blog">Simone Volpini</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Visto che ancora non ne ho mai parlato, nonostante abbia fin da subito inserito un link all&#8217;interno di questo sito, mi sembra giusto citare uno dei passatempi che ormai riempono le mie giornate da quasi due anni.<br />
Quindi seguendo l&#8217;esempio del mio amico <a href="http://passatempimoderni.blog.kataweb.it/">Pollucchero</a> che ne ha parlato sul suo blog qualche mese fa esattamente in <a href="http://passatempimoderni.blog.kataweb.it/passatempi_moderni/2006/09/imperatore_stel.html">questo post</a>, parlerò anch&#8217;io di <a href="http://www.ogame.it">Ogame</a>.</p>
<p>Sono venuto a conoscenza di questo gioco online nel luglio del 2005 attraverso alcuni blogger che seguivo da un pò di tempo.</p>
<p><strong>Ogame</strong> è uno di qui giochi che vengono comunemente chiamati <a href="http://it.wikipedia.org/wiki/MMORPG">MMORPG</a>, ovvero <strong>Massive(ly) Multiplayer Online Role-Playing Game</strong>, che permettono a migliaia di persone di interagire tra loro in tempo reale. In questo caso, Ogame è un gioco strategico ambientato nello spazio, gratuito, che non necessita di alcuna installazione perché si può giocare con un comune browser e da qualsiasi PC, e fatto tutto in <a href="http://www.php.net">PHP</a>.</p>
<p>Come tutti i giochi di questo genere richiede un pò di tempo, soprattutto nella fase iniziale quando si è ancora <em><strong>newbie</strong></em> (in italiano niubbi: neofita, novellino): si devono costruire miniere, produrre fabbriche, fare ricerche, costruire astronavi di vario tipo, colonizzare altri pianeti e attaccare o difendere i propri pianeti e la propria flotta.</p>
<p>Il gioco continua anche quando non siamo connessi: può capitare che si impieghi 4 giorni per completare una ricerca o costruire una miniera (nelle fasi avanzate del gioco) o che si debba aspettare un paio d&#8217;ore in attesa di attaccare un pianeta e attendere che la propria flotta rientri dall&#8217;attacco e metterla in salvo.<br />
Se si ha meno tempo a disposizione si può sempre fare il <strong><em>minatore</em></strong> (dedicarsi a costruire miniere) ed in questo caso possono bastare anche pochi minuti al giorno.</p>
<p>La particolarità del gioco non è la conquista di altri pianeti, se ne possono colonizzare al massimo 9 e <strong>non</strong> si possono conquistare quelli di altri giocatori, ma depredarli per catturare le risorse presenti in esso e che magari si sono accumulate nella notte, oppure correre dietro alla flotta di un avversario per distruggerla e recuperare i <strong><em>detriti</em></strong> (spesso tanti) da utilizzare come risorse per costruire altra flotta o altre miniere. Più si consuma (si spendono risorse per costruire edifici o flotta) e più si guadagnano punti.</p>
<p>I giocatori possono oscillare dai <strong>10-15 mila nei server più nuovi</strong> (ne aprono circa uno al mese) fino ai <strong>2-4 mila in quelli più datati</strong>.<br />
Si costruiscono alleanze, si fanno nuove amicizie con persone di tutte le età e sesso, si chatta in MSN, si organizzano cene e <a href="http://board.ogame.it/board.php?boardid=57">ci si <em>pompa</em> un pò nel forum ufficiale</a> quando si mettono a segno degli attacchi di un certo livello.</p>
<p>Io gioco nell&#8217;<strong>universo 5</strong> dei server italiani. Esistono server per ogni nazione o, per chi preferisce confrontarsi con giocatori di tutto il mondo, la versione internazionale <a href="http://www.ogame.org">www.ogame.org</a>.</p>
<p>Ultima curiosità: il gioco nasce in Germania circa 4-5 anni fa e da allora il numero dei server per giocare non fanno altro che aumentare di mese in mese.</p>
<p>Quindi se vi volete divertire ci vediamo in Ogame.</p>
<p>Buona dipendenza a tutti <img src='http://www.simonevolpini.info/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://www.simonevolpini.info/blog/2007/05/19/ogame/">Ogame</a> is a post from: <a href="http://www.simonevolpini.info/blog">Simone Volpini</a></p>
<h4  class="related_post_title">Continua a leggere</h4><ul class="related_post"><li>No Related Posts</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.simonevolpini.info/blog/2007/05/19/ogame/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
