<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>php4people ... 13% refresh</title>
	<atom:link href="http://php4people.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://php4people.wordpress.com</link>
	<description>iniziamo a programmare in php, che dici ?</description>
	<lastBuildDate>Fri, 23 May 2008 19:20:13 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>it</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='php4people.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/2c9f5f03bc02bc980de7175c41fb1f96?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>php4people ... 13% refresh</title>
		<link>http://php4people.wordpress.com</link>
	</image>
			<item>
		<title>[fp12] foreach</title>
		<link>http://php4people.wordpress.com/2008/05/23/fp12-foreach/</link>
		<comments>http://php4people.wordpress.com/2008/05/23/fp12-foreach/#comments</comments>
		<pubDate>Fri, 23 May 2008 19:20:13 +0000</pubDate>
		<dc:creator>ferenir</dc:creator>
				<category><![CDATA[» foreach]]></category>
		<category><![CDATA[Fondamenti di PHP »]]></category>
		<category><![CDATA[fp » Strutture di controllo]]></category>
		<category><![CDATA[foreach]]></category>
		<category><![CDATA[unset()]]></category>

		<guid isPermaLink="false">http://php4people.wordpress.com/?p=52</guid>
		<description><![CDATA[ A quanto pare non c&#8217;è modo di risolvere la formattazione del testo&#8230; ho provato tutti (dico tutti!) i temi disponibili su WordPress e alla fine tutto quello che ho ottenuto è una mezza-soluzione che non sempre funziona. Mi dovrà bastare fino a quando non sposterò il blog su un mio dominio (per ora è [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=52&subd=php4people&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="background-color:#000000;color:#FFFFFF;padding:6px;"><img class="alignnone size-full wp-image-54" src="http://php4people.files.wordpress.com/2008/04/livello6.gif" alt="un avviso d\'importanza vitale" /> A quanto pare non c&#8217;è modo di risolvere la formattazione del testo&#8230; ho provato tutti (dico tutti!) i temi disponibili su WordPress e alla fine tutto quello che ho ottenuto è una mezza-soluzione che non sempre funziona. Mi dovrà bastare fino a quando non sposterò il blog su un mio dominio (per ora è ancora troppo presto). Questa mezza soluzione mi obbliga a modificare manualmente gli script già postati&#8230; il che richiederà giorni, perché il tempo che posso dedicare al blog in questo periodo è poco. Giusto il tempo di postare nuovi articoli&#8230; poi il lavoro chiama.</p>
<p>Scrivendo sugli <a title="array" href="http://php4people.wordpress.com/2008/04/12/array-php-costrutto/" target="_blank">array()</a> dicevo di una struttura di controllo ideale per lavorare le informazioni contenute in essi. Questa struttura è il ciclo <em>foreach</em>. La sua grammatica:</p>
<blockquote><p><strong>foreach ([array] AS [indice] =&gt; [informazione]){<br />
<span style="color:#888888;">// istruzione da eseguire<br />
</span>}</strong></p></blockquote>
<p>Tutte quelle condizioni che nel <a title="ciclo for" href="http://php4people.wordpress.com/2008/04/10/for-php-ciclo-controllo/" target="_blank">ciclo for</a> sono visibili - come la condizione iniziale del ciclo, quella di transito e l&#8217;evento ciclico &#8211; sono sottintese nel ciclo foreach. foreach inizia dal primo indice (numerico o testuale) dell&#8217;array e continua a &#8220;percorrere&#8221; l&#8217;array fino all&#8217;ultimo indice. Quindi abbiamo:</p>
<p>[array] una variabile che identifica un Array(). Esempio: $array.<br />
[chiave] una variabile a cui foreach assegna gli indici che recupera dall&#8217;array.<br />
[informazione] una variabile a cui foreach assegna l&#8217;informazione correlati a un indice.</p>
<p>Prendendo a riferimento l&#8217;array di cui scrivevo <a title="array con più indici" href="http://php4people.wordpress.com/category/fondamenti-di-php/fp-%c2%bb-costrutti-e-stringhe-speciali/array/#d2" target="_blank">qui</a>, ecco un esempio di ciclo foreach:</p>
<blockquote>
<pre>&lt;?php
<span style="color:#888888;">// definisco l'array</span>
$persona[0]['nome'] = "Paolo";
$persona[0]['altezza'] = 177;
$persona[0]['peso'] = 80;
$persona[1]['nome'] = "Francesca";
$persona[1]['altezza'] = 170;
$persona[1]['peso'] = 60;

<span style="color:#888888;">// chiamo ed eseguo il ciclo foreach
</span>foreach($persona AS $key =&gt; $value){
echo "&lt;p&gt;";
foreach($value AS $indice =&gt; $valore){
echo "indice =&gt; ".$key." &lt;b&gt; ".$indice."&lt;/b&gt; = ".$valore."&lt;br /&gt;";
}
echo "&lt;/p&gt;";
}
?&gt;</pre>
<p><img style="margin-top:12px;" src="http://php4people.files.wordpress.com/2008/04/foreach-1.jpg" alt="ciclo foreach in esecuzione" /></p></blockquote>
<p>Sono partito dall&#8217;esempio più &#8220;difficile&#8221; volutamente. Quello che mi preme far capire è che, per quanto complesso sia un array, partendo dal primo indice si può arrivare sempre &#8220;ciclicamente&#8221; all&#8217;indice più in profondità estraendo tutte le informazioni immagazzinate nell&#8217;array.</p>
<p>Una volta compreso il metodo diventa facile lavorare un array, aggiungendo o cancellando informazioni a qualsiasi profondità si voglia lavorare. Ad esempio, se volessi cancellare il gruppo &#8220;Paolo&#8221;, ecco come dovrei modificare lo script precedente:</p>
<blockquote>
<pre>&lt;?php
<span style="color:#888888;">// definisco l'array</span>
$persona[0]['nome'] = "Paolo";
$persona[0]['altezza'] = 177;
$persona[0]['peso'] = 80;
$persona[1]['nome'] = "Francesca";
$persona[1]['altezza'] = 170;
$persona[1]['peso'] = 60;

<span style="color:#888888;">// inizializzo una variabile di controllo</span>
$lock = "";

<span style="color:#888888;">// chiamo ed eseguo il ciclo foreach</span>
foreach($persona AS $key =&gt; $value){
echo "&lt;p&gt;";
foreach($value AS $indice =&gt; $valore){
if($valore == "Paolo"){
unset($persona[$key]);
echo "=&gt; Cancellato l'indice ".$key." riferito al gruppo &lt;b&gt; ".$valore."&lt;/b&gt;&lt;br /&gt;";
}
}
echo "&lt;/p&gt;";
}

<span style="color:#888888;">// pulisco gli indici vuoti dell'array
// riporto a indice 0 il puntatore dell'array</span>
reset($persona);

<span style="color:#888888;">// controllo quanti indici primari del tipo $persona[x] siano presenti nell'array</span>
echo "Adesso l'array contiene ".count($persona)." indici&lt;br /&gt;";
print_r($persona);
?&gt;</pre>
<p><img class="alignnone size-full wp-image-58" src="http://php4people.files.wordpress.com/2008/05/foreach-unset.jpg" alt="foreach e unset" /></p></blockquote>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/php4people.wordpress.com/52/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/php4people.wordpress.com/52/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/php4people.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/php4people.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/php4people.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/php4people.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/php4people.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/php4people.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/php4people.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/php4people.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/php4people.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/php4people.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=52&subd=php4people&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://php4people.wordpress.com/2008/05/23/fp12-foreach/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3cc5858f08f45361a9438ac36179d72?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ferenir</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/livello6.gif" medium="image">
			<media:title type="html">un avviso d\'importanza vitale</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/foreach-1.jpg" medium="image">
			<media:title type="html">ciclo foreach in esecuzione</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/05/foreach-unset.jpg" medium="image">
			<media:title type="html">foreach e unset</media:title>
		</media:content>
	</item>
		<item>
		<title>[ps2] refresh DIV (file PHP) via Ajax</title>
		<link>http://php4people.wordpress.com/2008/04/16/refresh-div-file-php-via-ajax/</link>
		<comments>http://php4people.wordpress.com/2008/04/16/refresh-div-file-php-via-ajax/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 08:38:45 +0000</pubDate>
		<dc:creator>ferenir</dc:creator>
				<category><![CDATA[- ps » PHP e AJAX]]></category>
		<category><![CDATA[PHP Scripts »]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[refresh]]></category>

		<guid isPermaLink="false">http://php4people.wordpress.com/?p=53</guid>
		<description><![CDATA[ Purtroppo non riesco a risolvere il problema della formattazione del testo.
Facendo il copia e incolla del codice sorgente che propongo negli articoli, ho riscontrato che i doppi apici apici singoli&#8230; e non solo mantengono la formattazione UTF-8 imposta da WordPress. Così, incollando il codice su un file notepad, occorre riscrivere gli apici. Fino ad ora [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=53&subd=php4people&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="background-color:#000000;color:#FFFFFF;padding:6px;"><a href="http://php4people.files.wordpress.com/2008/04/livello6.gif"><img class="alignnone size-full wp-image-54" src="http://php4people.files.wordpress.com/2008/04/livello6.gif" alt="un avviso d\'importanza vitale" /></a> Purtroppo non riesco a risolvere il problema della formattazione del testo.<br />
Facendo il copia e incolla del codice sorgente che propongo negli articoli, ho riscontrato che i doppi apici <sup>apici singoli&#8230; e non solo</sup> mantengono la formattazione UTF-8 imposta da WordPress. Così, incollando il codice su un file notepad, occorre riscrivere gli apici. Fino ad ora non la consideravo una priorità: pensavo che ci stava bene un piccolo sforzo da parte di chi volesse fare i propri esperimenti utilizzando gli script php4people. Un ragionamento corretto finché si parla di script brevi, ma che cozza contro codice sorgente fatto di decine o centinaia di righe.<br />
Non è mia intenzione <sup>almeno per il momento</sup> spostare WordPress su piattaforma dedicata in un mio dominio web, cosa che mi permetterebbe di risolvere velocemente il problema. Pertanto il &#8220;voler restare&#8221; sull&#8217;host di WordPress mi costringe a rivedere il template che sto utilizzando, dando la precedenza di scelta a quei template che permettono un copia e incolla non problematico.<br />
Nei prossimi giorni non scriverò molto e mi dedicherò alla scelta del template, al re-edit degli articoli già postati e alla riorganizzazione dei contenuti.</p>
<p>Uno dei visitatori di ieri è arrivato su php4people cercando via motore di ricerca la query &#8220;refresh div php&#8221;. Leggendo anche le ricerche che hanno portato visite a questo blog, mi è venuta l&#8217;idea di postare periodicamente tips che diano risposte veloci alle query &#8220;tecniche&#8221;. Non sempre queste query sono chiare. Quando non lo sono cercherò d&#8217;interpretarle. E&#8217; il caso della query &#8220;refresh div php&#8221; che interpreto così:</p>
<blockquote><p><strong>Posso impostare un refresh automatico o manuale di un tag DIV per caricarci dentro il risultato dell&#8217;esecuzione di uno script PHP ?</strong></p></blockquote>
<p>Si. In entrambi i casi (auto o manuale) hai però bisogno d&#8217;inserire uno o più script in JavaScript, perché occorre passare informazioni in tempo reale alla pagina web.</p>
<ul>
<li><strong>lato-server:</strong> utente -&gt; server -&gt; risposta</li>
<li><strong>lato-client:</strong> utente -&gt; server -&gt; risposta &lt;-&gt; utente</li>
</ul>
<p>PHP è un linguaggio lato-server: c&#8217;è una richiesta dell&#8217;utente che viene elaborata da uno script che manda su schermo la risposta. Questa risposta è il risultato di una comunicazione unidirezionale e non può essere modificata se non &#8220;ricaricando&#8221; la pagina o comunque facendo ripartire il ciclo di richiesta.</p>
<p>Un linguaggio lato-client permette invece un&#8217;interazione esterna al server: ricevo una risposta <sup>eventuale</sup> dal server e da questo momento posso interagire con questa risposta senza &#8220;parlare&#8221; con il server. Impegno delle risorse, immagazzino dei dati che poi utilizzo, utilizzando risorse client (il mio computer) e non server (il mio provider).</p>
<p>Per rispondere alla domanda iniziale sul refresh di un div utilizzando PHP &#8230; e supponendo che il contenuto da mandare in output sia il risultato dell&#8217;esecuzione di un file PHP:</p>
<p><strong><span style="color:#ff0000;">Mi serve: </span></strong><span style="text-decoration:underline;">uno script AJAX che interpreti la richiesta di aggiornamento richiamando il file PHP con cui intendo dare nuovo contenuto al DIV &#8230;</span></p>
<table style="margin-top:12px;border-width:0;" border="0" cellspacing="0" cellpadding="12" width="100%">
<tbody>
<tr>
<td style="border-right:#696969 1px dashed;border-top:#696969 1px dashed;background:#f0f0f0;border-left:#696969 1px dashed;border-bottom:#696969 1px dashed;" width="100%"><img class="alignnone size-full wp-image-26" style="border-right:#696969 1px solid;border-top:#696969 1px solid;border-left:#696969 1px solid;margin-right:6px;border-bottom:#696969 1px solid;" src="http://php4people.files.wordpress.com/2008/04/search.jpg" alt="occhio!" align="left" /><span style="color:#ff0000;"><strong>AJAX</strong></span> è acronimo di <strong><span style="color:#ff0000;">Asynchronous JavaScript and XML</span></strong> e non ha nulla a che vedere con il PHP. Non è un linguaggio di programmazione, quanto la fusione di richieste JavaScript e XML per il conseguimento di un obiettivo preciso: passare dati ad una pagina web precedentemente chiamata in output sul browser, senza bisogno di dover ricaricare l&#8217;intera pagina.</td>
</tr>
</tbody>
</table>
<blockquote><p><strong>&lt;script type=&#8221;text/javascript&#8221;&gt;</strong><strong><br />
url = <a href="http://www.urldelsito.ext">http://www.urldelsito.ext</a>;<br />
function refreshBrowser(el,nomeFile){<br />
preload = &#8220;&lt;p style=&#8217;background:#ff0000; color: #ffffff;&#8217;&gt;aggiornamento richiesta in corso&#8230;&lt;/p&gt;&#8221;;<br />
if (typeof XMLHttpRequest != &#8220;undefined&#8221;) { x = new XMLHttpRequest();}else{ <br />
try { x = new ActiveXObject(&#8220;Msxml2.XMLHTTP&#8221;);} <br />
catch (e) { try { x = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);} catch (e){x = null;}}<br />
}<br />
if (x) {<br />
el.innerHTML = preload;<br />
x.onreadystatechange = function()  {<br />
if (x.readyState == 4 &amp;&amp; x.status == 200)  {<br />
el.innerHTML = x.responseText;<br />
}<br />
}<br />
x.open(&#8220;GET&#8221;, url + nomeFile, true);<br />
x.send(null);<br />
}<br />
}<br />
 // return false;<br />
}<br />
</strong><strong>&lt;/script&gt;</strong></p></blockquote>
<p><strong><span style="color:#ff0000;">Mi serve:</span></strong> <span style="text-decoration:underline;">un JavaScript che tenga conto del browser in cui il comando passa in esecuzione &#8230;</span></p>
<table style="margin-top:12px;border-width:0;" border="0" cellspacing="0" cellpadding="12" width="100%">
<tbody>
<tr>
<td style="background:#f0f0f0;border:#696969 1px dashed;" width="100%"><img class="alignnone size-full wp-image-26" style="margin-right:6px;border:#696969 1px solid;" src="http://php4people.files.wordpress.com/2008/04/search.jpg" alt="occhio!" align="left" /><span style="color:#000000;">Quando la concorrenza impone <strong>la stupidità come prerequisito</strong> per aggredire il mercato</span>: Explorer, FireFox, Opera etc. sono tutti browser concorrenti che hanno pregi e difetti di cui non stò a sindacare. Ognuno di questi browser ha delle regole sintattiche che lo differenziano dagli altri browser concorrenti con il solo risultato di creare problemi a chi sviluppa applicazioni per il web. Troppo semplice utilizzare le stesse regole sintattiche &#8230;</td>
</tr>
</tbody>
</table>
<blockquote><p><strong>&lt;script type=&#8221;text/javascript&#8221;&gt;</strong><strong><br />
if (document.getElementById) {<br />
var el=document.getElementById(id);<br />
} else if (document.layers) {<br />
var el=document.layers[id];<br />
} elseif (document.all) {<br />
var el=document.all.id;<br />
</strong><strong>}</strong><strong><br />
&lt;/script&gt;</strong></p></blockquote>
<p><strong><span style="color:#ff0000;">Mi serve:</span></strong> <span style="text-decoration:underline;">un JavaScript per controllare il runtime &#8230; i secondi che mancano al prossimo refresh</span></p>
<table style="margin-top:12px;border-width:0;" border="0" cellspacing="0" cellpadding="12" width="100%">
<tbody>
<tr>
<td style="background:#f0f0f0;border:#696969 1px dashed;" width="100%"><img class="alignnone size-full wp-image-26" style="margin-right:6px;border:#696969 1px solid;" src="http://php4people.files.wordpress.com/2008/04/search.jpg" alt="occhio!" align="left" /><span style="color:#000000;">Questo è un esempio di script lato-client che una volta chiamato in esecuzione non ha alcun bisogno d&#8217;interagire con il server d&#8217;origine per le sue successive esecuzioni. Parte da un valore di partenza (5&#8221;) per arrivare a 0 e chiamare refresh(id,nomeFile) che recupera il valore del tag con l&#8217;id di riferimento facendo partire la chiamata Ajax.</span></td>
</tr>
</tbody>
</table>
<blockquote><p><strong>&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
function load(){<br />
 setTimeout(&#8220;refreshBrowser(&#8216;tagDaModificare&#8217;,'prova.php?a=1&#8242;)&#8221;,5000);<br />
}<br />
&lt;/script&gt;</strong></p></blockquote>
<p><strong><span style="color:#ff0000;">Mi serve: </span></strong><span style="text-decoration:underline;">un tag div di riferimento su cui è chiamata ad agire la funzione load &#8230;</span></p>
<table style="margin-top:12px;border-width:0;" border="0" cellspacing="0" cellpadding="12" width="100%">
<tbody>
<tr>
<td style="background:#f0f0f0;border:#696969 1px dashed;" width="100%"><img class="alignnone size-full wp-image-26" style="margin-right:6px;border:#696969 1px solid;" src="http://php4people.files.wordpress.com/2008/04/search.jpg" alt="occhio!" align="left" />E&#8217; possibile assegnare un id a qualsiasi tag HTML. Se utilizzi i tag &lt;TABLE&gt; &lt;TR&gt; &lt;TD&gt; per le tue pagine HTML &#8230; se utilizzi il tag &lt;P&gt; o il tag &lt;B&gt; &#8230; fai delle prove assegnando un id ad uno di essi. Ad esempio: &lt;TABLE id=&#8221;nome&#8221;&gt; &#8230; otterrai lo stesso risultato dell&#8217;esempio che propongo in questa pagina.</td>
</tr>
</tbody>
</table>
<blockquote><p><strong>&lt;div id=&#8221;tagDaModificare&#8221;&gt;contenuto iniziale da modificare ogni 5 secondi&lt;/div&gt;</strong></p></blockquote>
<p> Poi, naturalmente, il file PHP da chiamare &#8230;</p>
<blockquote><p><strong>&lt;?php<br />
</strong><strong><span style="color:#888888;">// mando in stampa il contenuto<br />
</span>echo &#8220;DIV aggiornato &#8230; tempo Unix: &lt;b&gt;&#8221;.time().&#8221;&lt;/b&gt;&#8221;;<br />
exit;<br />
?&gt;</strong></p></blockquote>
<p><strong><span style="color:#ff0000;">Nota bene:</span></strong> la funzione <strong>time()</strong> - su cui scriverò presto un post &#8211; serve per recuperare data e ora attuale in formato Unix &#8230; una sequenza di 11 numeri &#8230; ci ritornerò.</p>
<p>Accorpo tutti i &#8220;mi serve&#8221; in un unico file PHP e questo è il risultato&#8230; che prima &#8221;spezzo&#8221; per descrivere i passaggi fondamentali necessari per una corretta esecuzione del refresh&#8230; e poi propongo integrale per un rapido copia e incolla.</p>
<blockquote><p>&lt;?php<br />
header (&#8220;cache-control: no-cache, must-revalidate&#8221;);</p>
<p>// mando in stampa il contenuto<br />
if(trim($_GET['a']) == 1){<br />
 echo &#8220;&lt;h3 style=&#8217;background: #000000; color:#FFFFFF; font-weight: normal;&#8217;&gt;DIV aggiornato &#8230; tempo Unix: &lt;b&gt;&#8221;.time().&#8221;&lt;/b&gt;&lt;/h3&gt;&#8221;;<br />
<strong>exit;</strong><br />
};<br />
?&gt;</p></blockquote>
<p>La chiamata no-cache in <em>header</em> è necessaria per istruire browser &#8220;abituati&#8221; a memorizzare le pagine caricate. In questo modo s&#8217;impedisce il salvataggio in cache della pagina e una corretta esecuzione del refresh. Non è un&#8217;istruzione necessaria, ma suggerita ad esempio con le ultime versioni del browser Explorer. In grassetto l&#8217;istruzione <em>exit;</em> che interrompe l&#8217;esecuzione dello script php impedendo il reload completo dell&#8217;HTML. Il blocco di esecuzione è chiamato al primo caricamento del file PHP via AJAX.</p>
<blockquote><p>&lt;html&gt;<br />
<strong>&lt;head&gt;</strong><br />
&lt;title&gt;refresh automatico di un file PHP in un DIV&lt;/title&gt;</p></blockquote>
<p>Dopo aver impostato l&#8217;intestazione della pagina HTML inserisco lo script AJAX e JavaScript all&#8217;interno dell&#8217; header. Sopra puoi vedere l&#8217;apertura del tag evidenziata in grassetto.</p>
<blockquote><p>&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
var <strong>url</strong> = &#8220;<a href="http://localhost/test/">http://localhost/test/</a>&#8220;;</p></blockquote>
<p>La variabile URL deve contenere l&#8217;indirizzo internet o intranet della cartella in cui si trova il file che intendi far chiamare da AJAX.</p>
<blockquote><p>var <strong>preload</strong> = &#8220;&lt;p style=&#8217;background:#ff0000; color: #ffffff;&#8217;&gt;aggiornamento richiesta in corso&#8230;&lt;/p&gt;&#8221;;</p></blockquote>
<p>La variabile preload contiene il testo da far apparire su schermo alla chiamata di reload, in attesa che il file PHP venga ricaricato.</p>
<blockquote><p>function refreshBrowser(id,nomeFile){<br />
 if (document.getElementById) {<br />
  var el=document.getElementById(id);<br />
 }else if (document.layers) {<br />
  var el=document.layers[id];<br />
 }else if (document.all) {<br />
  var el=document.all.id;<br />
 }<br />
 if (typeof XMLHttpRequest != &#8220;undefined&#8221;) {<br />
  x = new XMLHttpRequest();<br />
 }else {<br />
  try {<br />
   x = new ActiveXObject(&#8220;Msxml2.XMLHTTP&#8221;);<br />
  }<br />
      catch (e) {<br />
   try {<br />
    x = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);<br />
   }<br />
   catch (e){<br />
    x = null;<br />
   }<br />
  }<br />
 }<br />
 if (x) {<br />
  el.innerHTML = preload;<br />
      x.onreadystatechange = function()  {<br />
    if (x.readyState == 4 &amp;&amp; x.status == 200)  {<br />
    el.innerHTML = x.responseText;<br />
    load();<br />
    }<br />
  }<br />
   x.open(&#8220;GET&#8221;, url + nomeFile, true);<br />
  x.send(null);<br />
   }<br />
 // return false;<br />
}</p></blockquote>
<p>La funzione refreshBrowser contiene tutte le informazioni necessarie per chiamare il file PHP e riempire il contenitore DIV cercando di soddisfare le sintassi di browser differenti.</p>
<blockquote><p>function load(){<br />
 <strong>setTimeout</strong>(&#8220;refreshBrowser(&#8216;tagDaModificare&#8217;,'prova.php?a=1&#8242;)&#8221;,<strong>5000</strong>);<br />
}<br />
&lt;/script&gt;</p></blockquote>
<p>La funzione load() è il cuore dello script. Si tratta di una funzione JavaScript che richiama il comando setTimeout che a sua volta richiamerà ogni 5 secondi (5000 millisecondi) la funzione refreshBrowser.</p>
<blockquote><p>&lt;/head&gt;<br />
&lt;body <strong>onload</strong>=&#8221;load()&#8221;&gt;</p></blockquote>
<p>Chiuso l&#8217;head apro il &lt;body&gt; della pagina HTML, chiamando la funzione load() a caricamento pagina completato (onload). Quindi inserisco il layout HTML incluso del DIV con il contenuto da modificare. Per finire chiudo &lt;/body&gt; e &lt;/html&gt;.</p>
<blockquote><p>&#8212; &gt; inizio contenuto<br />
&lt;div id=&#8221;tagDaModificare&#8221;&gt;&lt;h3&gt;contenuto iniziale da modificare ogni 30 secondi&lt;/h3&gt;&lt;/div&gt;<br />
&lt; &#8212; fine contenuto<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p></blockquote>
<p>e il file refresh.php è pronto per essere eseguito:</p>
<blockquote>
<pre>&lt;?php
header ("cache-control: no-cache, must-revalidate");
// mando in stampa il contenuto
if(trim($_GET['a']) == 1){
 echo "&lt;h3 style='background: #000000; color:#FFFFFF; font-weight: normal;'&gt;DIV aggiornato ... tempo Unix: &lt;b&gt;".time()."&lt;/b&gt;&lt;/h3&gt;";
 exit;
};
?&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;refresh automatico di un file PHP in un DIV&lt;/title&gt;
&lt;script type="text/javascript"&gt;
var url = "<a href="http://localhost/test/">http://localhost/test/</a>";
var preload = "&lt;p style='background:#ff0000; color: #ffffff;'&gt;aggiornamento richiesta in corso...&lt;/p&gt;";
function refreshBrowser(id,nomeFile){
 if (document.getElementById) {
  var el=document.getElementById(id);
 }else if (document.layers) {
  var el=document.layers[id];
 }else if (document.all) {
  var el=document.all.id;
 }
 if (typeof XMLHttpRequest != "undefined") {
  x = new XMLHttpRequest();
 }else {
  try {
   x = new ActiveXObject("Msxml2.XMLHTTP");
  }
      catch (e) {
   try {
    x = new ActiveXObject("Microsoft.XMLHTTP");
   }
   catch (e){
    x = null;
   }
  }
 }
 if (x) {
  el.innerHTML = preload;
      x.onreadystatechange = function()  {
    if (x.readyState == 4 &amp;&amp; x.status == 200)  {
    el.innerHTML = x.responseText;
    load();
    }
  }
   x.open("GET", url + nomeFile, true);
  x.send(null);
   }
 // return false;
}
function load(){
 setTimeout("refreshBrowser('tagDaModificare','prova.php?a=1')",5000);
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body onload="load()"&gt;
--- &gt; inizio contenuto
&lt;div id="tagDaModificare"&gt;&lt;h3&gt;contenuto iniziale da modificare ogni 30 secondi&lt;/h3&gt;&lt;/div&gt;
&lt; --- fine contenuto
&lt;/body&gt;
&lt;/html&gt;</pre>
</blockquote>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/php4people.wordpress.com/53/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/php4people.wordpress.com/53/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/php4people.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/php4people.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/php4people.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/php4people.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/php4people.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/php4people.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/php4people.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/php4people.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/php4people.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/php4people.wordpress.com/53/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=53&subd=php4people&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://php4people.wordpress.com/2008/04/16/refresh-div-file-php-via-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3cc5858f08f45361a9438ac36179d72?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ferenir</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/livello6.gif" medium="image">
			<media:title type="html">un avviso d\'importanza vitale</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/search.jpg" medium="image">
			<media:title type="html">occhio!</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/search.jpg" medium="image">
			<media:title type="html">occhio!</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/search.jpg" medium="image">
			<media:title type="html">occhio!</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/search.jpg" medium="image">
			<media:title type="html">occhio!</media:title>
		</media:content>
	</item>
		<item>
		<title>[fp11] array()</title>
		<link>http://php4people.wordpress.com/2008/04/12/array-php-costrutto/</link>
		<comments>http://php4people.wordpress.com/2008/04/12/array-php-costrutto/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 09:27:01 +0000</pubDate>
		<dc:creator>ferenir</dc:creator>
				<category><![CDATA[» array()]]></category>
		<category><![CDATA[- fp » Costrutti e stringhe speciali]]></category>
		<category><![CDATA[- fp » Funzioni]]></category>
		<category><![CDATA[Fondamenti di PHP »]]></category>
		<category><![CDATA[» funzioni per array()]]></category>
		<category><![CDATA[array_keys()]]></category>
		<category><![CDATA[array_push()]]></category>
		<category><![CDATA[asort()]]></category>
		<category><![CDATA[count()]]></category>
		<category><![CDATA[in_array()]]></category>
		<category><![CDATA[ksort()]]></category>
		<category><![CDATA[rsort()]]></category>
		<category><![CDATA[unset()]]></category>

		<guid isPermaLink="false">http://php4people.wordpress.com/?p=36</guid>
		<description><![CDATA[array() è una funzione o un costrutto del linguaggio PHP ? array() è un costrutto atipico. Atipico perché non è possibile omettere le parentesi in cui inserire le istruzioni. Fin qui sembrerebbe avere tutte le caratteristiche di una funzione, ma le similitudini terminano con le parentesi: la dichiarazione di un array prevede l&#8217;eventuale inserimento di [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=36&subd=php4people&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><em>array()</em> è una <a title="definizione di funzione in php" href="http://php4people.wordpress.com/2008/04/02/definizione-funzione-php/" target="_blank">funzione</a> o un <a title="definizione di costrutto in php" href="http://php4people.wordpress.com/2008/04/03/definizione-costrutto-php/" target="_blank">costrutto</a> del linguaggio PHP ? array() è un costrutto atipico. Atipico perché non è possibile omettere le parentesi in cui inserire le istruzioni. Fin qui sembrerebbe avere tutte le caratteristiche di una funzione, ma le similitudini terminano con le parentesi: la dichiarazione di un array prevede l&#8217;eventuale inserimento di una o più informazioni che l&#8217;array è chiamato a custodire. Perché si possa agire su queste informazioni occorre utilizzare delle funzioni standard create apposta per interagire con il contenuto di questo costrutto&#8230; atipico anche perché in fase di dichiarazione un array è chiamato ad eseguire un solo comando e per di più interno: l&#8217;archiviazione di una o più informazioni.</p>
<p>Ci sono tre tipi di dichiarazioni iniziali di un array:</p>
<ol>
<li>la creazione di un array vuoto:<br />
<blockquote><p><strong>$variabile = array();</strong></p></blockquote>
</li>
<li>la creazione di un array inserendo &#8220;manualmente&#8221; x informazioni:<br />
<blockquote><p><strong>$variabile = array([istruzione],&#8230;);</strong></p></blockquote>
</li>
<li>la creazione di un array &#8220;in automatico&#8221;, che porta comunque al risultato del punto 2.</li>
</ol>
<p><span style="color:#ff0000;"><strong>Nota bene:</strong></span> un array deve essere sempre dichiarato in una variabile&#8230; sempre che se ne voglia fare un uso costruttivo <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Ogni [istruzione] inserita in un array è definita da un indice (chiave) e dall&#8217;informazione vera e propria:</p>
<blockquote><p><strong>$array = array(1=&gt;&#8221;a&#8221;,2=&gt;&#8221;b&#8221;,3=&gt;&#8221;c&#8221;);</strong></p></blockquote>
<p>$array è un array che contiene tre informazioni, ognuna delle quali è assegnata ad una chiave univoca (1,2,3). Da questo momento utilizzo $array per gli esempi seguenti. <sup>dichiarato sempre esempio per esempio, con tutte le modifiche che subirà in corso d&#8217;opera</sup> Gli esempi che propongo non sono altro che risposte alle domande a cui bisogna saper rispondere per iniziare ad usare questo costrutto con le <a title="funzioni standard per operare sugli array" href="http://it.php.net/manual/it/ref.array.php" target="_blank">funzioni standard create apposta dal PHP Group per lavorare su array()</a>.</p>
<p><span style="color:#ff0000;"><strong>Nota bene:</strong></span> è impensabile che riporti tutte le funzioni o le strutture di controllo capaci di agire su un array. Per questo c&#8217;è php.net (vedi il link precedente). In questo articolo riporto quelle funzioni fondamentali per iniziare a lavorare con gli array. In futuro potrei proporre altre funzioni standard, o strutture di controllo che &#8220;sono portate&#8221; meglio di altre a lavorare con array(). Questo articolo rimane aperto e suscettibile a future modifiche.<br />
<a name="indice"></a></p>
<table style="margin-top:12px;border-width:0;" border="0" cellspacing="0" cellpadding="12" width="100%">
<tbody>
<tr>
<td style="border-right:#696969 1px dashed;border-top:#696969 1px dashed;background:#f0f0f0;border-left:#696969 1px dashed;border-bottom:#696969 1px dashed;" width="100%"><img class="alignnone size-full wp-image-26" style="border-right:#696969 1px solid;border-top:#696969 1px solid;border-left:#696969 1px solid;margin-right:6px;border-bottom:#696969 1px solid;" src="http://php4people.files.wordpress.com/2008/04/search.jpg" alt="occhio!" align="left" /><strong>SOMMARIO DELLE DOMANDE E RISPOSTE SUGLI ARRAY</strong><br />
<sup>Se non trovi risposte alle tue domande, <a title="fai la tua domanda sugli array" href="#comment" target="_self">lascia un commento</a> e cercherò di darti le informazioni che cerchi.</sup></p>
<p><strong>Domanda 1:</strong> <a title="domanda 1" href="#d1" target="_self">Che tipo d&#8217;informazioni posso inserire in un array ?</a><br />
<strong>Domanda 2:</strong> <a title="domanda 2" href="#d2" target="_self">Quante informazioni posso assegnare ad un indice ?</a><br />
<strong>Domanda 3:</strong> <a title="domanda 3" href="#d3" target="_self">Come faccio a sapere quanti indici sono stati inseriti all&#8217;interno di un array ?</a><br />
<strong>Domanda 4:</strong> <a title="domanda 4" href="#d4" target="_self">Come faccio a sapere se un’informazione è già presente in un array ?</a><br />
<strong>Domanda 5:</strong> <a title="domanda 5" href="#d5" target="_self">Come faccio ad estrarre le informazioni contenute in un array ?</a><br />
<strong>Domanda 6:</strong> <a title="domanda 6" href="#d6" target="_self">Come posso ordinare (ad esempio in ordine alfabetico) le informazioni di un array ?</a><br />
<strong>Domanda 7:</strong> <a title="domanda 7" href="#d7" target="_self">Come faccio a popolare un array senza dover inserire manualmente le informazioni ?</a><br />
<strong>Domanda 8:</strong> <a title="domanda 8" href="#d8" target="_self">Come faccio a cancellare le informazioni contenute in un array ?</a></td>
</tr>
</tbody>
</table>
<p> <br />
<a name="d1"></a><br />
<span style="text-decoration:underline;">Domanda 1 &#8211; Che tipo d&#8217;informazioni posso inserire in un array ?</span></p>
<p>Stringe fuori variabili, variabili e altri array. Un array è un contenitore di dati e come ogni buon database può contenere tutte le informazioni previste dal linguaggio di programmazione in cui opera.</p>
<p> <a href="#indice">torna al Sommario delle Domande »</a></p>
<p><a name="d2"></a><br />
<span style="text-decoration:underline;">Domanda 2 &#8211; Quante informazioni posso assegnare ad un indice ?</span></p>
<p>Non c&#8217;è nessun limite. Supponendo di voler assegnare all&#8217;indice 0 &#8211; <span style="color:#ff0000;">il primo indice di un array è sempre zero, per default</span> - tre informazioni (nome, altezza, peso), questa è la sintassi da seguire:</p>
<blockquote><p><strong>$persona[0]['nome'] = &#8220;Paolo&#8221;;<br />
$persona[0]['altezza'] = 177;<br />
$persona[0]['peso'] = 80;</strong></p>
<p><strong>$persona[1]['nome'] = &#8220;Francesca&#8221;;<br />
$persona[1]['altezza'] = 170;<br />
$persona[1]['peso'] = 60;</strong></p></blockquote>
<p><sup>Questo array lo utilizzo in alcuni degli esempi seguenti.</sup></p>
<p><a href="#indice">torna al Sommario delle Domande »</a><br />
 </p>
<p><a name="d3"></a><br />
<span style="text-decoration:underline;">Domanda 3 &#8211; Come faccio a sapere quanti indici sono stati inseriti all&#8217;interno di un array?</span></p>
<p>Utilizza la funzione <em>count()</em> :</p>
<blockquote><p>&lt;?php<br />
<span style="color:#808080;">// definisco l&#8217;array di lavoro<br />
</span>$array = array(0=&gt;&#8221;a&#8221;,1=&gt;&#8221;b&#8221;,2=&gt;&#8221;c&#8221;);</p>
<p><span style="color:#ff0000;"><span style="color:#808080;">// recupero il numero d&#8217;informazioni presenti in array</span><br />
</span><strong>$tot = count($array);</strong><br />
echo &#8220;l&#8217;array ha &#8220;.$tot.&#8221; informazioni al suo interno&#8221;;<br />
?&gt;<br />
<img class="alignnone size-full wp-image-37" style="margin-top:12px;" src="http://php4people.files.wordpress.com/2008/04/array-count.jpg" alt="output del numero di informazioni presenti in un array" /></p>
<p><span style="color:#ff0000;"><strong>Nota bene:</strong></span> la funzione count() conta il numero di indici presenti nell&#8217;array e non il numero effettivo d&#8217;informazioni assegnate ad ogni indice.</p></blockquote>
<p><a href="#indice">torna al Sommario delle Domande »</a><br />
 </p>
<p><a name="d4"></a><br />
<span style="text-decoration:underline;">Domanda 4 &#8211; Come faccio a sapere se un&#8217;informazione è già presente in un array ?</span></p>
<p>Utilizza la funzione <em>in_array()</em> per array come $array:</p>
<blockquote><p>&lt;?php<br />
<span style="color:#808080;">// definisco l&#8217;array di lavoro<br />
</span>$array = array(0=&gt;&#8221;a&#8221;,1=&gt;&#8221;b&#8221;,2=&gt;&#8221;c&#8221;);</p>
<p><span style="color:#ff0000;"><span style="color:#808080;">// recupero il numero d&#8217;informazioni presenti in array</span><br />
</span>$tot = count($array);<br />
echo &#8220;l&#8217;array ha &#8220;.$tot.&#8221; indici al suo interno&#8221;;</p>
<p><span style="color:#808080;">// verifico se sono presenti in array due informazioni</span><br />
if(<strong>!in_array(&#8220;z&#8221;,$array)</strong>) echo &#8221; &#8230; l&#8217;array non contiene l&#8217;informazione &lt;b&gt;z&lt;/b&gt;&#8221;;<br />
if(<strong>in_array(&#8220;a&#8221;,$array)</strong>) echo &#8221; ma contiene l&#8217;informazione &lt;b&gt;a&lt;/b&gt;!&#8221;;<br />
?&gt;<br />
<img class="alignnone size-full wp-image-45" style="margin-top:12px;margin-bottom:12px;" src="http://php4people.files.wordpress.com/2008/04/array-inarray1.jpg" alt="output funzione in_array" /><br />
<strong><span style="color:#ff0000;">Nota bene:</span></strong> la funzione in_array() <strong>non è in grado</strong> di trovare informazioni in array con più informazioni per indice.</p></blockquote>
<p>E per verificare la presenza o meno di una informazione all&#8217;interno di array come quel $persona della Domanda 2 ? occorre creare una funzione custom (non standard) che chiami in esecuzione in_array() all&#8217;interno di un ciclo. Esiste una struttura di controllo ciclica che è l&#8217;ideale ma che introdurrò nel prossimo post. Pertanto per ora non propongo lo script d&#8217;esempio su array alla $persona. Modificherò queste righe una volta presentato il ciclo di cui parlo.</p>
<p><a href="#indice">torna al Sommario delle Domande »</a></p>
<p><a name="d5"></a><br />
<span style="text-decoration:underline;">Domanda 5 &#8211; Come faccio ad estrarre le informazioni contenute in un array ?</span></p>
<p>Hai bisogno di una struttura di controllo ciclica come il ciclo for. Esistono cicli migliori del ciclo for per estrarre informazioni da un array uno di questi (già accennato in risposta alla domanda precedente) lo &#8220;presento&#8221; la prossima settimana, ma il ciclo for è in grado di fornire &#8220;prestazioni&#8221; accettabili.</p>
<p>Script d&#8217;esempio con l&#8217;array di lavoro $array:</p>
<blockquote><p>&lt;?php<br />
<span style="color:#808080;">// definisco l&#8217;array di lavoro<br />
</span>$array = array(0=&gt;&#8221;a&#8221;,1=&gt;&#8221;b&#8221;,2=&gt;&#8221;c&#8221;);</p>
<p><span style="color:#ff0000;"><span style="color:#808080;">// recupero il numero d&#8217;informazioni presenti in array</span><br />
</span>$tot = count($array);<br />
echo &#8220;l&#8217;array ha &#8220;.$tot.&#8221; indici al suo interno&#8221;;</p>
<p><span style="color:#808080;">// verifico se sono presenti in array due informazioni</span><br />
if(!in_array(&#8220;z&#8221;,$array)) echo &#8221; &#8230; l&#8217;array non contiene l&#8217;informazione &lt;b&gt;z&lt;/b&gt;&#8221;;<br />
if(in_array(&#8220;a&#8221;,$array)) echo &#8221; ma contiene l&#8217;informazione &lt;b&gt;a&lt;/b&gt;!&#8221;;</p>
<p><span style="color:#888888;">// estraggo le informazioni dell&#8217;array con il ciclo for<br />
</span><strong>for($x=0;$x&lt;$tot;$x++){<br />
echo &#8220;&lt;br /&gt; &lt;b&gt;indice&lt;/b&gt; &#8220;.$x.&#8221; &#8211; &lt;b&gt;informazione&lt;/b&gt; &#8220;.$array[$x];<br />
}</strong><br />
?&gt;<br />
<img class="alignnone size-full wp-image-47" style="margin-top:12px;" src="http://php4people.files.wordpress.com/2008/04/array-ciclo-for.jpg" alt="ciclo for su array" /></p></blockquote>
<p>Per lo Script d&#8217;esempio con l&#8217;array di lavoro $persona &#8230; stesso discorso della risposta alla Domanda precedente.</p>
<p><a href="#indice">torna al Sommario delle Domande »</a><br />
 </p>
<p><a name="d6"></a><br />
<span style="text-decoration:underline;">Domanda 6 - Come posso ordinare (ad esempio in ordine alfabetico) le informazioni di un array ?</span></p>
<p>Ci sono tre funzioni dedicate per questo:</p>
<ul>
<li><em>asort();</em> » ordina in modalità &#8220;ascendente&#8221; A-Z 0-x</li>
<li><em>rsort();</em> » ordina in modalità &#8220;discendente&#8221; Z-A x-0</li>
<li><em>ksort();</em> » ordina per indice ascendente: 0-x se numero, oppure A-Z se lettere</li>
</ul>
<p>Dopo aver ordinato l&#8217;array come desideri ricordati di resettare il puntatore all&#8217;indice iniziale. Il puntatore &#8220;dice&#8221; al motore PHP da che indice inizare ad elaborare le informazioni di un array. La funzione dedicata è <em>reset();</em></p>
<p>Lo script di esempio con array del tipo $array:</p>
<blockquote><p>&lt;?php<br />
<span style="color:#808080;">// definisco l&#8217;array di lavoro<br />
</span>$array = array(0=&gt;&#8221;a&#8221;,1=&gt;&#8221;b&#8221;,2=&gt;&#8221;c&#8221;);</p>
<p><span style="color:#ff0000;"><span style="color:#808080;">// recupero il numero d&#8217;informazioni presenti in array</span><br />
</span>$tot = count($array);<br />
echo &#8220;l&#8217;array ha &#8220;.$tot.&#8221; indici al suo interno&#8221;;</p>
<p><span style="color:#808080;">// verifico se sono presenti in array due informazioni</span><br />
if(!in_array(&#8220;z&#8221;,$array)) echo &#8221; &#8230; l&#8217;array non contiene l&#8217;informazione &lt;b&gt;z&lt;/b&gt;&#8221;;<br />
if(in_array(&#8220;a&#8221;,$array)) echo &#8221; ma contiene l&#8217;informazione &lt;b&gt;a&lt;/b&gt;!&#8221;;</p>
<p><span style="color:#888888;">// estraggo le informazioni dell&#8217;array con il ciclo for<br />
</span>for($x=0;$x&lt;$tot;$x++){<br />
echo &#8220;&lt;br /&gt; &lt;b&gt;indice&lt;/b&gt; &#8220;.$x.&#8221; &#8211; &lt;b&gt;informazione&lt;/b&gt; &#8220;.$array[$x];<br />
}</p>
<p><span style="color:#888888;">// ordino l&#8217;array in ordine alfabetico decrescente e resetto il puntatore<br />
</span><strong>rsort($array);<br />
reset($array);<br />
</strong>echo &#8220;&lt;p&gt;&#8212;&lt;/p&gt;Le informazioni sono state riordinate in ordine alfabetico decrescente&#8221;;</p>
<p><span style="color:#888888;">// estraggo le informazioni nel nuovo ordine<br />
</span>for($x=0;$x&lt;$tot;$x++){<br />
echo &#8220;&lt;br /&gt; &lt;b&gt;indice&lt;/b&gt; &#8220;.$x.&#8221; &#8211; &lt;b&gt;informazione&lt;/b&gt; &#8220;.$array[$x];<br />
}<br />
?&gt;<br />
<img class="alignnone size-full wp-image-48" style="margin-top:12px;" src="http://php4people.files.wordpress.com/2008/04/array-sort.jpg" alt="utilizzo di rsort per ordinare un array" /></p></blockquote>
<p><span style="color:#ff0000;"><strong>Nota bene:</strong></span> Tutte queste funzioni lavorano l&#8217;array dall&#8217;interno. Questo vuol dire che non c&#8217;è bisogno di assegnare la chiamata della funzione ad una variabile.</p>
<p>Lo script mostrato è ridondante: al suo interno è chiamato in esecuzione lo stesso ciclo for per due volte. Negli script d&#8217;esempio seguenti le chiamate a questo ciclo aumentano, per questo motivo è logico &#8220;trasferire&#8221; il ciclo all&#8217;interno di una funzione creata ad hoc da chiamare in esecuzione quando necessario. Nello script d&#8217;esempio alla Domanda seguente dichiaro la funzione echoArray() e sostituisco le righe &#8230;</p>
<blockquote><p><strong>$tot = count($array);<br />
for($x=0;$x&lt;$tot;$x++){<br />
echo &#8220;&lt;br /&gt; &lt;b&gt;indice&lt;/b&gt; &#8220;.$x.&#8221; &#8211; &lt;b&gt;informazione&lt;/b&gt; &#8220;.$array[$x];<br />
}</strong></p></blockquote>
<p>&#8230; con la chiamata in esecuzione della funzione:</p>
<blockquote><p><strong>echoArray($array);</strong></p></blockquote>
<p>Per lo Script d&#8217;esempio con l&#8217;array di lavoro $persona &#8230; stesso discorso della risposta alla Domanda 5.</p>
<p><a href="#indice">torna al Sommario delle Domande »</a></p>
<p><a name="d7"></a><br />
<span style="text-decoration:underline;">Domanda 7 &#8211; Come faccio a popolare un array senza dover inserire manualmente le informazioni ?</span></p>
<p>Usa la funzione <em>array_push()</em> :</p>
<blockquote><p>&lt;?php<br />
<span style="color:#888888;">// dichiaro la funzione echoArray che manda in stampa il contenuto degli indici dell&#8217;array</span><br />
function echoArray ($array) {<br />
$tot = count($array);<br />
for($x=0;$x&lt;$tot;$x++){<br />
echo &#8220;&lt;br /&gt; &lt;b&gt;indice&lt;/b&gt; &#8220;.$x.&#8221; &#8211; &lt;b&gt;informazione&lt;/b&gt; &#8220;.$array[$x];<br />
}<br />
}</p>
<p><span style="color:#808080;">// definisco l&#8217;array di lavoro<br />
</span>$array = array(0=&gt;&#8221;a&#8221;,1=&gt;&#8221;b&#8221;,2=&gt;&#8221;c&#8221;);</p>
<p><span style="color:#ff0000;"><span style="color:#808080;">// recupero il numero d&#8217;informazioni presenti in array</span><br />
</span>$tot = count($array);<br />
echo &#8220;l&#8217;array ha &#8220;.$tot.&#8221; indici al suo interno&#8221;;</p>
<p><span style="color:#808080;">// verifico se sono presenti in array due informazioni</span><br />
if(!in_array(&#8220;z&#8221;,$array)) echo &#8221; &#8230; l&#8217;array non contiene l&#8217;informazione &lt;b&gt;z&lt;/b&gt;&#8221;;<br />
if(in_array(&#8220;a&#8221;,$array)) echo &#8221; ma contiene l&#8217;informazione &lt;b&gt;a&lt;/b&gt;!&#8221;;</p>
<p><span style="color:#888888;">// estraggo le informazioni dell&#8217;array<br />
</span>echoArray ($array);</p>
<p><span style="color:#888888;">// ordino l&#8217;array in ordine alfabetico decrescente e resetto il puntatore<br />
</span>rsort($array);<br />
reset($array);<br />
echo &#8220;&lt;p&gt; &#8212; &lt;/p&gt;Le informazioni sono state riordinate in ordine alfabetico decrescente&#8221;;</p>
<p><span style="color:#888888;">// estraggo le informazioni nel nuovo ordine<br />
</span>echoArray($array);</p>
<p><span style="color:#888888;">// esempio d&#8217;inserimento automatico d&#8217;informazioni nell&#8217;array: il ciclo for utilizzato serve per creare una stringa d&#8217;esempio.<br />
</span>for($x=1;$x&lt;3;$x++){<br />
$stringa = &#8220;stringa&#8221;.$x;<br />
<strong>array_push($array,$stringa);<br />
</strong>echo &#8220;&lt;br /&gt;&#8212; la stringa &lt;b&gt;$stringa&lt;/b&gt; è stata inserita in array&#8221;;<br />
}<br />
rsort($array);<br />
reset($array);</p>
<p><span style="color:#888888;">// estraggo le informazioni dell&#8217;array modificato, recupero il numero di indici presenti nell&#8217;array e mando in output</span><br />
echo &#8220;&lt;p&gt;&#8212;&lt;/p&gt;Nuovo elenco delle informazioni presenti in array:&#8221;;<br />
echoArray ($array);<br />
?&gt;<br />
<img class="alignnone size-full wp-image-49" style="margin-top:12px;" src="http://php4people.files.wordpress.com/2008/04/array-push.jpg" alt="array push e output" width="499" height="571" /></p></blockquote>
<p>Per lo Script d&#8217;esempio con l&#8217;array di lavoro $persona &#8230; stesso discorso della risposta alla Domanda 5.</p>
<p><a href="#indice">torna al Sommario delle Domande »</a></p>
<p><a name="d8"></a><br />
<span style="text-decoration:underline;">Domanda 8 &#8211; Come faccio a cancellare le informazioni contenute in un array ?</span></p>
<p>Usa <em>array_keys()</em> per trovare l&#8217;indice contenitore dell&#8217;informazione e poi <em>unset()</em> per cancellare l&#8217;informazione :</p>
<p>Supponendo di voler cancellare l&#8217;informazione &#8220;stringa2&#8243; contenuta nell&#8217;array $array &#8230;</p>
<blockquote><p>&lt;?php<br />
<span style="color:#888888;">// dichiaro la funzione echoArray che manda in stampa il contenuto degli indici dell&#8217;array</span><br />
function echoArray ($array) {<br />
$tot = count($array);<br />
for($x=0;$x&lt;$tot;$x++){<br />
echo &#8220;&lt;br /&gt; &lt;b&gt;indice&lt;/b&gt; &#8220;.$x.&#8221; &#8211; &lt;b&gt;informazione&lt;/b&gt; &#8220;.$array[$x];<br />
}<br />
}</p>
<p><span style="color:#808080;">// definisco l&#8217;array di lavoro<br />
</span>$array = array(0=&gt;&#8221;a&#8221;,1=&gt;&#8221;b&#8221;,2=&gt;&#8221;c&#8221;);</p>
<p><span style="color:#ff0000;"><span style="color:#808080;">// recupero il numero d&#8217;informazioni presenti in array</span><br />
</span>$tot = count($array);<br />
echo &#8220;l&#8217;array ha &#8220;.$tot.&#8221; indici al suo interno&#8221;;</p>
<p><span style="color:#808080;">// verifico se sono presenti in array due informazioni</span><br />
if(!in_array(&#8220;z&#8221;,$array)) echo &#8221; &#8230; l&#8217;array non contiene l&#8217;informazione &lt;b&gt;z&lt;/b&gt;&#8221;;<br />
if(in_array(&#8220;a&#8221;,$array)) echo &#8221; ma contiene l&#8217;informazione &lt;b&gt;a&lt;/b&gt;!&#8221;;</p>
<p><span style="color:#888888;">// estraggo le informazioni dell&#8217;array<br />
</span>echoArray ($array);</p>
<p><span style="color:#888888;">// ordino l&#8217;array in ordine alfabetico decrescente e resetto il puntatore<br />
</span>rsort($array);<br />
reset($array);<br />
echo &#8220;&lt;p&gt; &#8212; &lt;/p&gt;Le informazioni sono state riordinate in ordine alfabetico decrescente&#8221;;</p>
<p><span style="color:#888888;">// estraggo le informazioni nel nuovo ordine<br />
</span>echoArray($array);</p>
<p><span style="color:#888888;">// esempio d&#8217;inserimento automatico d&#8217;informazioni nell&#8217;array: il ciclo for utilizzato serve per creare una stringa d&#8217;esempio.<br />
</span>for($x=1;$x&lt;3;$x++){<br />
$stringa = &#8220;stringa&#8221;.$x;<br />
array_push($array,$stringa);<br />
echo &#8220;&lt;br /&gt;&#8212; la stringa &lt;b&gt;$stringa&lt;/b&gt; è stata inserita in array&#8221;;<br />
}<br />
rsort($array);<br />
reset($array);</p>
<p><span style="color:#888888;">// estraggo le informazioni dell&#8217;array modificato, recupero il numero di indici presenti nell&#8217;array e mando in output</span><br />
echo &#8220;&lt;p&gt;&#8212;&lt;/p&gt;Nuovo elenco delle informazioni presenti in array:&#8221;;<br />
echoArray ($array);</p>
<p><span style="color:#000000;"><span style="color:#888888;">// elimino l&#8217;informazione &#8220;stringa2&#8243;<br />
</span><strong>$indice = array_keys($array,&#8221;stringa2&#8243;);<br />
unset($array[$indice[0]]);</strong> echo &#8220;&lt;br /&gt; -&gt; l&#8217;indice &#8220;.$indice[0].&#8221; contenitore dell&#8217;informazione &lt;b&gt;stringa2&lt;/b&gt; è stato cancellato dall&#8217;array&#8221;;</span></p>
<p><span style="color:#000000;"><span style="color:#000000;"><span style="color:#888888;">// estraggo le informazioni dell’array modificato</span><br />
echo &#8220;&lt;p&gt;&#8212;&lt;/p&gt;Nuovo elenco delle informazioni presenti in array:&#8221;;<br />
echoArray ($array,$tot);<br />
?&gt;<br />
<img class="alignnone size-full wp-image-50" style="margin-top:12px;" src="http://php4people.files.wordpress.com/2008/04/abstract-array-output.jpg" alt="abstract-array-output" /></span></span></p>
<p><strong><span style="color:#ff0000;">Nota bene:</span></strong> la funzione array_keys() restituisce i risultati in un array. L&#8217;array $indice a cui ho assegnato il risultato di array_keys() contiene una sola informazione all&#8217;indice zero. Ecco perché ho scritto l&#8217;istruzione <strong>unset($array[$indice[0]]);</strong> per &#8220;dire&#8221; alla funzione unset() di cancellare l&#8217;informazione contenuta nell&#8217;indice 0 dell&#8217;array $array.</p></blockquote>
<p>Per lo Script d&#8217;esempio con l&#8217;array di lavoro $persona &#8230; stesso discorso della risposta alla Domanda 5.</p>
<p><a href="#indice">torna al Sommario delle Domande »</a></p>
<p> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/php4people.wordpress.com/36/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/php4people.wordpress.com/36/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/php4people.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/php4people.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/php4people.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/php4people.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/php4people.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/php4people.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/php4people.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/php4people.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/php4people.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/php4people.wordpress.com/36/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=36&subd=php4people&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://php4people.wordpress.com/2008/04/12/array-php-costrutto/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3cc5858f08f45361a9438ac36179d72?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ferenir</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/search.jpg" medium="image">
			<media:title type="html">occhio!</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/array-count.jpg" medium="image">
			<media:title type="html">output del numero di informazioni presenti in un array</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/array-inarray1.jpg" medium="image">
			<media:title type="html">output funzione in_array</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/array-ciclo-for.jpg" medium="image">
			<media:title type="html">ciclo for su array</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/array-sort.jpg" medium="image">
			<media:title type="html">utilizzo di rsort per ordinare un array</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/array-push.jpg" medium="image">
			<media:title type="html">array push e output</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/abstract-array-output.jpg" medium="image">
			<media:title type="html">abstract-array-output</media:title>
		</media:content>
	</item>
		<item>
		<title>[fp10] if &#8230; else</title>
		<link>http://php4people.wordpress.com/2008/04/11/if-else-php-controllo/</link>
		<comments>http://php4people.wordpress.com/2008/04/11/if-else-php-controllo/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 06:54:30 +0000</pubDate>
		<dc:creator>ferenir</dc:creator>
				<category><![CDATA[Fondamenti di PHP »]]></category>
		<category><![CDATA[fp » Strutture di controllo]]></category>
		<category><![CDATA[if .. else]]></category>

		<guid isPermaLink="false">http://php4people.wordpress.com/?p=38</guid>
		<description><![CDATA[if &#8230; else è una struttura di controllo come lo è il ciclo for e come quest ultimo il suo compito è quello di verificare l&#8217;avverarsi o meno di una o più condizioni durante l&#8217;esecuzione di uno script. La grammatica di questa struttura è flessibile. Tutto dipende dalle chiamate (linee di codice) che s&#8217;intendono legare alla struttura. La [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=38&subd=php4people&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><em>if &#8230; else</em> è una struttura di controllo come lo è il <a title="ciclo for" href="http://php4people.wordpress.com/2008/04/10/for-php-ciclo-controllo/" target="_blank">ciclo for</a> e come quest ultimo il suo compito è quello di verificare l&#8217;avverarsi o meno di una o più condizioni durante l&#8217;esecuzione di uno script. La grammatica di questa struttura è flessibile. Tutto dipende dalle chiamate (linee di codice) che s&#8217;intendono legare alla struttura. La grammatica base:</p>
<blockquote><p><strong>if ([[espressione]])<br />
<span style="color:#888888;">// allora esegui questa riga</span> <br />
else<br />
<span style="color:#888888;">// esegui quest&#8217;altra riga</span></strong></p></blockquote>
<p>[espressione] indica un&#8217;espressione algebrica in cui si comparano almeno due valori. Se l&#8217;espressione è soddisfatta allora il motore PHP passa ad eseguire le righe incluse nella struttura, altrimenti le ignora, oppure in presenza del controllo <strong>else</strong> passa ad eseguire le altre righe incluse in struttura. Il controllo &#8220;else&#8221; non è obbligatorio.</p>
<table style="margin-top:12px;border-width:0;" border="0" cellspacing="0" cellpadding="12" width="100%">
<tbody>
<tr>
<td style="background:#f0f0f0;border:#696969 1px dashed;" width="100%"><img class="alignnone size-full wp-image-26" style="margin-right:6px;border:#696969 1px solid;" src="http://php4people.files.wordpress.com/2008/04/search.jpg" alt="occhio!" align="left" />Le <strong><span style="color:#ff0000;">espressioni algebriche</span></strong> comparano almeno due elementi tra loro, oppure la &#8220;condizione&#8221; di un unico elemento. Considerando due variabili, <strong>$a</strong> e <strong>$b</strong>, queste possono dar luogo alle seguenti espressioni:</p>
<ul>
<li><span style="background-color:#f0f0f0;">$a = $b</span></li>
<li><span style="background-color:#f0f0f0;">$a &gt;= $b</span></li>
<li><span style="background-color:#f0f0f0;">$a &lt;= $b</span></li>
<li><span style="background-color:#f0f0f0;">$a &gt; $b</span></li>
<li><span style="background-color:#f0f0f0;">$a &lt; $b</span></li>
</ul>
<p><span style="background-color:#f0f0f0;"><strong>$a = $b</strong> diventa <strong>$a == $b</strong> se l&#8217;espressione si trova inclusa tra le parentesi di dichiarazione della struttura if &#8230; else.</span><br />
<span style="background-color:#f0f0f0;">Per indicare <strong>$a diverso da $b</strong>, io utilizzo la sintassi <strong>$a != $b</strong></span></td>
</tr>
</tbody>
</table>
<p>Per comodità riprendo lo script utilizzato per l&#8217;esempio sul ciclo for. Ci aggiungo la struttura if &#8230; else e ottengo questo nuovo script:</p>
<blockquote><p>&lt;?php<br />
$echo = “”;<br />
for ($x=1;$x&lt;=10;$x++){<br />
<strong>if ($x==3)</strong><br />
$echo .= ”- il valore di &lt;b&gt;$/x&lt;/b&gt; è &lt;b&gt;$x&lt;/b&gt; &lt;br /&gt;”;<br />
<strong>else if ($x &gt; 7)<br />
</strong>$echo .= &#8220;- il valore di &lt;b&gt;$/x&lt;/b&gt; è &lt;b&gt;maggiore di 7&lt;/b&gt;&lt;br /&gt;&#8221;;<br />
<strong>else<br />
</strong>$echo .= &#8220;- condizione non verificata&lt;br /&gt;&#8221;;<br />
};<br />
echo str_replace(”$/”,”$”,$echo);<br />
?&gt;</p></blockquote>
<p><span style="color:#ff0000;"><strong>Nota bene:</strong></span> se vuoi fare anche tu i tuoi esperimenti con questi script d’esempio… dopo aver copiato e incollato il codice potrebbe essere necessario riscrivere gli apici e i doppi apici per una corretta esecuzione dello script. Ciò dipende dal <a title="CSS - w3c" href="http://www.w3schools.com/Css/default.asp" target="_blank">CSS</a> utilizzato con questo layout… che non cambio! <img class="wp-smiley" src="http://php4people.wordpress.com/wp-includes/images/smilies/icon_razz.gif" alt="P" /></p>
<p>Mando in esecuzione lo script:<br />
<img class="alignnone size-medium wp-image-39" style="margin-top:12px;margin-bottom:12px;" src="http://php4people.files.wordpress.com/2008/04/for-if-else1.jpg" alt="controllo if-else annidato nel controllo for" /></p>
<p><strong><span style="color:#ff0000;">Nota bene:</span></strong> tra le parentesi della struttura if &#8230; else possono essere inserite una o più informazioni da verificare: stringhe non in variabile, variabili, come anche chiamate di funzioni standard o create dal programmatore.</p>
<p>Scrivevo all&#8217;inizio di &#8220;grammatica flessibile&#8221;. Quando è necessario includere più righe di codice all&#8217;interno di un if &#8230; else occorre far capire al motore PHP <sup>riga per riga</sup> di essere ancora &#8220;dentro&#8221; la struttura di controllo. Questo si può fare delimitando il confine entro cui il motore PHP è chiamato a &#8220;capire&#8221; di essere all&#8217;interno. Il metodo descritto ricorda molto da vicino la sintassi utilizzata per dichiarare una <a title="definizione di funzione in php" href="http://php4people.wordpress.com/2008/04/02/definizione-funzione-php/" target="_blank">funzione</a> o un ciclo for: il codice viene incluso tra due parentesi graffe.</p>
<p>Considera questo script:</p>
<blockquote><p><strong>&lt;?php<br />
$variabile = 3;<br />
$stringa = &#8220;$/php&#8221;;</strong></p>
<p><strong><span style="color:#888888;">// lo script verifica che la chiamata della funzione str_replace() su $stringa dia &#8220;php&#8221; e che $variabile sia uguale a 2<br />
</span>if (str_replace(&#8220;$/&#8221;,&#8221;",$stringa) == &#8220;php&#8221; AND $variabile == 2){<br />
echo &#8220;- contenuti riconosciuti&#8221;;<br />
$variabile = $variabile/2;</strong></p>
<p><strong><span style="color:#888888;">// se la condizione non è verificata, lo script verifica se $variabile &gt; 2<br />
</span>}elseif($variabile &gt; 2){<br />
echo &#8220;- stringa non riconosciuta&lt;br /&gt;<br />
-valore della variabile uguale a 3&#8243;;<br />
$variabile = $variabile/3;<br />
}<br />
?&gt;</strong></p></blockquote>
<p>Questo è l&#8217;output:<br />
<img class="alignnone size-full wp-image-41" style="margin-top:12px;margin-bottom:12px;" src="http://php4people.files.wordpress.com/2008/04/if-else.jpg" alt="if else in esecuzione" /><br />
<strong><span style="color:#ff0000;">Nota bene:</span></strong> ripeto un&#8217;informazione già data in precedenza. Il marcatore d&#8217;isturzione <strong>punto e virgola -</strong> obbligatorio perché il motore PHP capisca di dover passare alla prossima istruzione - non è necessario nel caso delle parentesi graffe. Scrivere <strong>}</strong> oppure <strong>};</strong> non fa differenza per il motore PHP, che considera la <strong>}</strong> come marcatore d&#8217;istruzione.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/php4people.wordpress.com/38/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/php4people.wordpress.com/38/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/php4people.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/php4people.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/php4people.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/php4people.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/php4people.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/php4people.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/php4people.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/php4people.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/php4people.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/php4people.wordpress.com/38/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=38&subd=php4people&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://php4people.wordpress.com/2008/04/11/if-else-php-controllo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3cc5858f08f45361a9438ac36179d72?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ferenir</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/search.jpg" medium="image">
			<media:title type="html">occhio!</media:title>
		</media:content>

		<media:content url="http://php4people.wordpress.com/wp-includes/images/smilies/icon_razz.gif" medium="image">
			<media:title type="html">P</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/for-if-else1.jpg" medium="image">
			<media:title type="html">controllo if-else annidato nel controllo for</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/if-else.jpg" medium="image">
			<media:title type="html">if else in esecuzione</media:title>
		</media:content>
	</item>
		<item>
		<title>[fp9] for</title>
		<link>http://php4people.wordpress.com/2008/04/10/for-php-ciclo-controllo/</link>
		<comments>http://php4people.wordpress.com/2008/04/10/for-php-ciclo-controllo/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 01:46:07 +0000</pubDate>
		<dc:creator>ferenir</dc:creator>
				<category><![CDATA[Fondamenti di PHP »]]></category>
		<category><![CDATA[fp » Strutture di controllo]]></category>
		<category><![CDATA[» for]]></category>
		<category><![CDATA[for]]></category>

		<guid isPermaLink="false">http://php4people.wordpress.com/?p=33</guid>
		<description><![CDATA[for è un ciclo di eventi PHP.



Un ciclo di eventi in PHP è una serie di azioni che si ripete ciclicamente fino al soddisfarsi di almeno una condizione richiesta. Si tratta di una delle strutture di controllo incluse di default nel motore PHP allo scopo di risolvere situazioni come: il verificarsi o meno di x condizioni imposte [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=33&subd=php4people&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><em>for</em> è un <em>ciclo di eventi</em> PHP.</p>
<table style="border:0;margin-top:12px;" border="0" cellspacing="0" cellpadding="12" width="100%">
<tbody>
<tr>
<td style="border:1px dashed #696969;background:#F0F0F0;" width="100%"><img class="alignnone size-full wp-image-26" style="border:1px solid #696969;margin-right:6px;" src="http://php4people.files.wordpress.com/2008/04/search.jpg" alt="occhio!" align="left" />Un <strong><span style="color:#ff0000;">ciclo di eventi</span></strong> in PHP è una serie di azioni che si ripete ciclicamente fino al soddisfarsi di almeno una condizione richiesta. Si tratta di una delle <em>strutture di controllo</em> incluse di default nel motore PHP allo scopo di risolvere situazioni come: il verificarsi o meno di x condizioni imposte dal programmatore per dare <sup>a seconda del verificarsi o meno di tali condizioni</sup> un indirizzo coerente all&#8217;esecuzione dello script.</td>
</tr>
</tbody>
</table>
<p>La grammatica &#8220;for&#8221;:</p>
<blockquote><p><strong>for ([condizioneIniziale]; [condizioneTransito]; [eventoTransito]) {<br />
<span style="color:#888888;">// chiamata del ciclo</span><br />
};</strong></p></blockquote>
<ul>
<li>[condizioneIniziale] è una espressione del tipo <strong>$variabile</strong> oppure <strong>$variabile=numero</strong> che dichiara la condizione iniziale del ciclo.</li>
<li>[condizioneTransito] è una espressione del tipo <strong>$variabile&lt;numero</strong>, con il simbolo <strong>&lt;</strong> che può essere sostituito da <strong>&lt;=</strong> oppure <strong>&gt;=</strong>, che indica le condizioni entro cui può essere eseguito il cilo.</li>
<li>[eventoTransito] è una espressione che indica il tipo di evento ciclico che modifica, ciclo dopo ciclo, la condizioneIniziale. Ad esempio: <strong>$variabile++</strong> ($variabile=$variabile+1).</li>
</ul>
<p>Ecco un esempio di ciclo for. Considera questo script:</p>
<blockquote><p><strong>&lt;?php<br />
$echo = &#8220;&#8221;;<br />
for ($x=1;$x&lt;=10;$x++){<br />
$echo .= &#8221;- il valore di &lt;b&gt;$/x&lt;/b&gt; è &lt;b&gt;$x&lt;/b&gt; &lt;br /&gt;&#8221;;<br />
};<br />
echo str_replace(&#8220;$/&#8221;,&#8221;$&#8221;,$echo);<br />
?&gt;</strong></p></blockquote>
<p><span style="color:#ff0000;"><strong>Nota bene:</strong></span> se vuoi fare anche tu i tuoi esperimenti con questi script d’esempio… dopo aver copiato e incollato il codice potrebbe essere necessario riscrivere gli apici e i doppi apici per una corretta esecuzione dello script. Ciò dipende dal <a title="CSS - w3c" href="http://www.w3schools.com/Css/default.asp" target="_blank">CSS</a> utilizzato con questo layout… che non cambio! <img class="wp-smiley" src="http://php4people.wordpress.com/wp-includes/images/smilies/icon_razz.gif" alt="P" /></p>
<p>Mandando in esecuzione lo script ottengo l&#8217;output del ciclo:<br />
<img style="margin-top:12px;margin-bottom:12px;" src="http://php4people.files.wordpress.com/2008/04/ciclo-for.jpg" alt="output di un ciclo for in php" /><br />
All&#8217;interno di un ciclo possono essere annidati altri cicli, anche se non cicli &#8220;for&#8221;. Il motore PHP allora assegna la prima chiusura che incontra al ciclo annidato più in profondità e così via a salire.</p>
<p>Sebbene spesso considerato come il ciclo più complesso che il linguaggio PHP mette a disposizione del programmatore, in realtà <sup>opinone personale</sup> si tratta del ciclo più semplice a livello di ciclo stesso, d&#8217;apprendimento e di memorizzazione. Il ciclo for opera su quelle regole che invece altri cicli <sup>più flessibili fanno &#8220;scorrere&#8221; in background. </sup></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/php4people.wordpress.com/33/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/php4people.wordpress.com/33/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/php4people.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/php4people.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/php4people.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/php4people.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/php4people.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/php4people.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/php4people.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/php4people.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/php4people.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/php4people.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=33&subd=php4people&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://php4people.wordpress.com/2008/04/10/for-php-ciclo-controllo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3cc5858f08f45361a9438ac36179d72?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ferenir</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/search.jpg" medium="image">
			<media:title type="html">occhio!</media:title>
		</media:content>

		<media:content url="http://php4people.wordpress.com/wp-includes/images/smilies/icon_razz.gif" medium="image">
			<media:title type="html">P</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/ciclo-for.jpg" medium="image">
			<media:title type="html">output di un ciclo for in php</media:title>
		</media:content>
	</item>
		<item>
		<title>[fp8] str_replace()</title>
		<link>http://php4people.wordpress.com/2008/04/09/str_replace-php-funzione/</link>
		<comments>http://php4people.wordpress.com/2008/04/09/str_replace-php-funzione/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 22:51:34 +0000</pubDate>
		<dc:creator>ferenir</dc:creator>
				<category><![CDATA[- fp » Funzioni]]></category>
		<category><![CDATA[Fondamenti di PHP »]]></category>
		<category><![CDATA[» str_replace()]]></category>
		<category><![CDATA[str_replace()]]></category>

		<guid isPermaLink="false">http://php4people.wordpress.com/?p=31</guid>
		<description><![CDATA[La funzione str_replace() si incontra spesso tanto in script &#8220;amatoriali&#8221; quanto in script di alto livello. La sua utilità sta nella possibilità di modificare parte del contenuto di una informazione (variabile, stringa non in variabile, etc.) o tutto il suo contenuto con una nuova informazione. Questa è la sua grammatica:
str_replace(([infoParteOrigine],[infoNuova],[infoOrigine]]);

il risultato di str_replace() può essere assegnato ad [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=31&subd=php4people&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>La <a title="definizione di funzione in php" href="http://php4people.wordpress.com/2008/04/02/definizione-funzione-php/" target="_blank">funzione</a> <em>str_replace()</em> si incontra spesso tanto in script &#8220;amatoriali&#8221; quanto in script di alto livello. La sua utilità sta nella possibilità di modificare parte del contenuto di una informazione (variabile, stringa non in variabile, etc.) o tutto il suo contenuto con una nuova informazione. Questa è la sua grammatica:</p>
<blockquote><p><strong>str_replace(([infoParteOrigine],[infoNuova],[infoOrigine]]);</strong></p></blockquote>
<ul>
<li>il risultato di str_replace() può essere assegnato ad una variabile - il cui nome può coincidere con il nome dell&#8217;eventuale &#8220;vecchia&#8221; variabile su cui s&#8217;intende far agire la funzione &#8211; oppure può essere mandato direttamente in output su schermo (<a title="echo" href="http://php4people.wordpress.com/2008/04/07/echo-php-costrutto/" target="_blank">echo</a>).</li>
<li>Le prime due informazioni richieste da str_replace() servono per definire i limiti entro cui la funzione è chiamata a lavorare il terzo parametro.</li>
<li>[infoParteOrigine] può essere una stringa di qualsiasi tipo o una variabile definita da un qualsiasi tipo d&#8217;informazione <strong>non necessariamente</strong> riconducibile al concetto di stringa. <sup>per il discorso &#8220;stringa&#8221; ti rimando alla <a title="definizione di variabile in php" href="http://php4people.wordpress.com/2008/04/01/definizione-variabile-php/" target="_blank">definizione di variabile</a> e a <a title="heredoc" href="http://php4people.wordpress.com/2008/04/08/heredoc-php-stringa-costrutto/" target="_blank">heredoc</a></sup></li>
<li>[infoNuova] stesso discorso di [stringaOrigine].</li>
<li>[infoOrigine] può essere una variabile, come scritto al primo punto, come anche una stringa non in variabile. In entrambi i casi, contenitori di un qualche tipo d&#8217;informazione&#8230; in caso contrario non avrebbe senso la chiamata in esecuzione della funzione.</li>
</ul>
<p>Riporto un passaggio del post di ieri (heredoc, già linkato qualche riga sopra):</p>
<blockquote><p>ho inserito <strong>$/php</strong> invece di <strong>$php</strong> perché altrimenti il motore PHP l’avrebbe interpretata come una chiamata di variabile, mandando in stampa la stringa <strong>=&lt;&lt;&lt;EOP testo EOP;</strong></p></blockquote>
<p>Su questo passaggio tiro su uno script:</p>
<blockquote><p><strong>&lt;?php<br />
$esempio =&lt;&lt;&lt;EOF<br />
$/php = 123;<br />
EOF;<br />
echo str_replace(&#8220;$/&#8221;,&#8221;$&#8221;,$esempio);<br />
?&gt;</strong></p></blockquote>
<p><span style="color:#ff0000;"><strong>Nota bene:</strong></span> se vuoi fare anche tu i tuoi esperimenti con questi script d&#8217;esempio&#8230; dopo aver copiato e incollato il codice potrebbe essere necessario riscrivere gli apici e i doppi apici per una corretta esecuzione dello script. Ciò dipende dal <a title="CSS - w3c" href="http://www.w3schools.com/Css/default.asp" target="_blank">CSS</a> utilizzato con questo layout&#8230; che non cambio! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Mando in esecuzione lo script:<br />
<img class="alignnone size-full wp-image-32" style="margin-top:12px;margin-bottom:12px;" src="http://php4people.files.wordpress.com/2008/04/str_replace-1.jpg" alt="str_replace" /><br />
L&#8217;output è corretto. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
La funzione cerca <strong>$/</strong> all&#8217;interno dell&#8217; heredoc <strong>$esempio</strong> e, trovandolo, esegue la richiesta di sostituirlo con <strong>$</strong>. Finito il compito, il motore PHP passa ad eseguire la chiamata del costrutto echo e manda in stampa su schermo la stringa <strong>$php = 123;</strong>. $php non è più una variabile ma semplice testo. Discorso diverso sarebbe stato se avessi scritto $php all&#8217;interno dell&#8217; heredoc. <sup><a title="heredoc" href="http://php4people.wordpress.com/2008/04/08/heredoc-php-stringa-costrutto/" target="_blank">argomento già trattato in heredoc</a></sup></p>
<p>All&#8217;inizio di questo post ho scritto che str_replace() è in grado di lavorare su una variabile, quale che sia l&#8217;informazione che la definisce. Questo perché una variabile può anche non essere definita da una stringa. E&#8217; il caso di variabili a cui sono assegnati insiemi d&#8217;informazioni: gli <a title="array" href="http://php4people.wordpress.com/2008/04/12/array/" target="_blank">array</a>.</p>
<p>Considera questo script:</p>
<blockquote><p><strong>&lt;?php<br />
</strong><strong><span style="color:#888888;">// imposto un array contenente le &#8220;vecchie&#8221; informazioni e uno contenente le nuove<br />
</span>$array1 = Array(&#8220;3&#8243;,&#8221;4&#8243;,&#8221;5&#8243;);<br />
$array2 = Array(&#8220;:::&#8221;,&#8221;::::&#8221;,&#8221;:::::&#8221;);</strong></p>
<p><strong><span style="color:#888888;">// l&#8217;array &#8220;madre&#8221; che intendo modificare<br />
</span>$array = Array(&#8220;3&#8243;,&#8221;4&#8243;,&#8221;5&#8243;);</strong></p>
<p><strong><span style="color:#888888;">// modifico il contenuto dell&#8217;array madre e mando in output le informazioni presenti in array</span><br />
$array = str_replace($array1,$array2,$array);<br />
for ($x=0;$x&lt;count($array);$x++){<br />
echo &#8220;&lt;br /&gt;sequenza in array: &#8220;.$array[$x];<br />
}</strong></p>
<p><strong><span style="color:#888888;">// imposto la stringa che intendo modificare<br />
</span>$stringa = &#8220;sequenza 3-4-5&#8243;;</strong></p>
<p><strong><span style="color:#888888;">// modifico la stringa e mando in output<br />
</span>$stringa = str_replace($array1,$array2,$stringa);<br />
echo &#8220;&lt;br /&gt;&lt;br /&gt; sequenza in stringa: $stringa&#8221;;<br />
?&gt;<br />
</strong><img class="alignnone size-full wp-image-51" style="margin-top:12px;margin-bottom:12px;" src="http://php4people.files.wordpress.com/2008/04/array-str_replace.jpg" alt="output di uno str_replace su array" /></p></blockquote>
<p>L&#8217;utilizzo corretto di str_replace() assieme agli array richiede la conoscenza di almeno queste info:</p>
<ol>
<li>Il vecchio Array e il nuovo devono avere lo stesso numero di indici. Questo discorso vale anche nel caso in cui [infoOrigine] sia anch&#8217;esso un array.</li>
<li>Nel caso in cui [infoParteOrigine] sia un array e [infoNuova] no&#8230; s&#8217;incasina il motore PHP e nient altro <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </li>
<li>Nel caso in cui s&#8217;invertano le parti (punto 2), stesso discorso&#8230;</li>
</ol>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/php4people.wordpress.com/31/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/php4people.wordpress.com/31/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/php4people.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/php4people.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/php4people.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/php4people.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/php4people.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/php4people.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/php4people.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/php4people.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/php4people.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/php4people.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=31&subd=php4people&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://php4people.wordpress.com/2008/04/09/str_replace-php-funzione/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3cc5858f08f45361a9438ac36179d72?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ferenir</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/str_replace-1.jpg" medium="image">
			<media:title type="html">str_replace</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/array-str_replace.jpg" medium="image">
			<media:title type="html">output di uno str_replace su array</media:title>
		</media:content>
	</item>
		<item>
		<title>[fp7] heredoc</title>
		<link>http://php4people.wordpress.com/2008/04/08/heredoc-php-stringa-costrutto/</link>
		<comments>http://php4people.wordpress.com/2008/04/08/heredoc-php-stringa-costrutto/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 22:42:08 +0000</pubDate>
		<dc:creator>ferenir</dc:creator>
				<category><![CDATA[» heredoc]]></category>
		<category><![CDATA[- fp » Costrutti e stringhe speciali]]></category>
		<category><![CDATA[Fondamenti di PHP »]]></category>
		<category><![CDATA[heredoc]]></category>

		<guid isPermaLink="false">http://php4people.wordpress.com/?p=27</guid>
		<description><![CDATA[heredoc è ufficialmente una stringa PHP. Secondo me però il termine più appropriato è stringa-costrutto. Per comodità lo inserisco nella categoria &#8220;costrutto&#8221;. Premesso questo&#8230; heredoc è un costrutto PHP utilizzato per separare il codice PHP dal codice HTML, dai CSS (fogli di stile), dal JavaScript etc. In pratica da tutto ciò che incide sul layout (grafica) di una pagina [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=27&subd=php4people&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><em>heredoc</em> è ufficialmente <a title="stringa heredoc" href="http://us2.php.net/manual/it/language.types.string.php#language.types.string.syntax.heredoc" target="_blank">una stringa PHP</a>. Secondo me però il termine più appropriato è stringa-<a title="definizione di costrutto in php" href="http://php4people.wordpress.com/2008/04/03/fp4-definizione-costrutto-php/" target="_blank">costrutto</a>. Per comodità lo inserisco nella categoria &#8220;costrutto&#8221;. Premesso questo&#8230; heredoc è un costrutto PHP utilizzato per separare il codice PHP dal codice HTML, dai CSS (fogli di stile), dal JavaScript etc. In pratica da tutto ciò che incide sul layout (grafica) di una pagina senza essere &#8220;lavorato&#8221; dal linguaggio PHP. Questo costrutto ha una grammatica unica, differente da tutti gli altri:</p>
<blockquote><p><strong>$valore =&lt;&lt;&lt;EOF<br />
// contenuto: variabili, HTML, CSS, JavaScript &#8230; etc.<br />
EOF;</strong></p></blockquote>
<p>heredoc ha una grammatica tutta sua non riscontrabile in nessun altro tipo di stringa e che invece lo avvicina molto ai costrutti PHP, sebbene ci siano profonde differenze tra un costrutto standard come <a title="echo" href="http://php4people.wordpress.com/2008/04/07/echo-php-costrutto/" target="_blank">echo</a> e heredoc.</p>
<ol>
<li>La chiamata del costrutto avviene scrivendo al posto del suo nome (heredoc) il tag di dichiarazione <strong>&lt;&lt;&lt;</strong> seguito da <strong>tre lettere</strong>. <sup>chiamale stringa eccezionale o costante. Il significato (per me) è lo stesso</sup> Il tag di chiusura è invece rappresentato dalle stesse tre lettere seguite dal punto e virgola. <sup>indispensabile come sempre per chiudere l&#8217;istruzione</sup></li>
<li>Il motore PHP tratta gli spazi che seguono l&#8217;apertura del tag di dichiarazione o la sua chiusura con una &#8220;sensibilità&#8221; eccessiva. Anche un solo spazio dopo <strong>&lt;&lt;&lt;EOF</strong> o <strong>EOF;</strong> è sufficiente per mandare in tilt il motore PHP, che riconosce nello spazio un errore di linguaggio&#8230; ovvero di essere in presenza di uno script difettoso. Il risultato è che nemmeno la funzione <a title="error_reporting()" href="http://php4people.wordpress.com/2008/04/05/error-reporting-php-funzione/" target="_blank">error_reporting()</a> è in grado di mandare in output questo tipo di errore. Chiamando in esecuzione lo script &#8220;difettoso&#8221;, il programmatore si troverà a fissare una tristissima pagina bianca.</li>
<li>Esiste una evidente difficoltà d&#8217;interpretazione da parte del motore PHP nel trattare due heredoc consecutivi non separati da almeno una riga vuota. <sup>a volte sono necessarie anche due righe d&#8217;intervallo</sup> Un esempio per chiarire:<br />
<blockquote><p><strong>&lt;?php<br />
error_reporting (E_ALL);<br />
$html =&lt;&lt;&lt;EOF<br />
testo<br />
EOF;$html2 =&lt;&lt;&lt;EOF<br />
spazio<br />
EOF;<br />
echo $html.$html2;<br />
?&gt;</strong></p></blockquote>
<p>Mando in esecuzione lo script e ottengo questo output:<br />
<img class="alignnone size-full wp-image-28" style="margin-top:12px;margin-bottom:12px;" src="http://php4people.files.wordpress.com/2008/04/heredoc-1.jpg" alt="heredoc" /><br />
Il motore PHP è andato in &#8220;pappa&#8221; ma non ha bloccato l&#8217;esecuzione dello script: mi ha notificato che la variabile $html2 non è stata dichiarata&#8230; una notifica falsa perché la variabile è stata dichiarata allo stregua della variabile $html; ha mandato in output la stringa <strong>testo EOF; =&lt;&lt;&lt;EOF spazio</strong> &#8230; il che è tutto dire! Ok. Cambio la seconda dichiarazione. <strong>$html2 =&lt;&lt;&lt;EOP</strong> e <strong>EOP; </strong>magari&#8230; il risultato è che non ho output da mostrare: pagina bianca. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  Il motore ha collassato! Per lui l&#8217;unica vera dichiarazione è <strong>$html =&lt;&lt;&lt;EOF</strong> e la riga <strong>EOF;$html2 =&lt;&lt;&lt;EOP</strong> la legge (erroneamente) come l&#8217;apertura di un tag di dichiarazione heredoc all&#8217;interno di un heredoc ancora aperto. Un baco (bug) interessante&#8230; ci tornerò tra brevissimo.</li>
<li>La chiamata heredoc (&lt;&lt;&lt;ETC) deve essere seguita da almeno una &#8220;andata a capo&#8221;, così come la chiusura heredoc (ETC;).</li>
</ol>
<p>Scrivevo di &#8220;bug interessante&#8221;. Non è vero che non è possibile annidare heredoc all&#8217;interno di un heredoc. E&#8217; possibile ma c&#8217;è una differenza sostanziale tra la dichiarazione del primo heredoc e quella dell&#8217;heredoc annidato. Il primo è considerato un costrutto dal motore, il secondo è considerato come informazione contenuta nel costrutto e trattata come tale, a patto che la stringa eccezionale (costante) che l&#8217;identifica sia differente. In caso contrario il motore PHP non riuscirebbe ad eseguire correttamente l&#8217;istruzione.</p>
<p>Mando in esecuzione questo script:</p>
<blockquote><p><strong>&lt;?php<br />
error_reporting (E_ALL);<br />
$html =&lt;&lt;&lt;EOF<br />
$/php =&lt;&lt;&lt;EOP<br />
testo<br />
EOP;<br />
EOF;<br />
?&gt;</strong></p></blockquote>
<p>ottenendo questo output:<br />
<img class="alignnone size-full wp-image-29" style="margin-top:12px;margin-bottom:12px;" src="http://php4people.files.wordpress.com/2008/04/heredoc-2.jpg" alt="heredoc" /><br />
esecuzione perfetta! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong><span style="color:#ff0000;">Nota bene:</span></strong> ho inserito <strong>$/php</strong> invece di <strong>$php</strong> perché altrimenti il motore PHP l&#8217;avrebbe interpretata come una chiamata di variabile, mandando in stampa la stringa <strong>=&lt;&lt;&lt;EOP testo EOP;</strong> Lo slash (/) tra il simbolo $ e il nome della variabile è un espediente utile nel caso in cui si volesse creare un file PHP con uno script&#8230; argomento oggetto di quel <a title="accenni allo script php4write.php" href="http://php4people.wordpress.com/?s=php4write.php" target="_blank">php4write.php cui ogni tanto accenno</a> e a cui mi sto avvicinando un giorno dopo l&#8217;altro :)<br />
 <br />
Fin qui la &#8220;grammatica&#8221; heredoc. Ora un esempio pratico.</p>
<p>Se volessi pubblicare una pagina formattata con codice HTML, CSS etc. avrei due possibili strade da seguire: aprire e chiudere i tag di dichiarazione di PHP <sup>lavorando dentro e fuori lo script, etc.</sup> oppure utilizzare il costrutto heredoc.</p>
<p>Considera il contenuto di questo file PHP:</p>
<blockquote><p>&lt;HTML&gt;<br />
&lt;HEAD&gt;<br />
&lt;TITLE&gt;Titolo della Pagina&lt;/TITLE&gt;<br />
&lt;STYLE&gt;<br />
BODY {<br />
  margin: 0px;<br />
  padding: 0px;<br />
  background: #000000;<br />
}<br />
DIV {<br />
  clear: both;<br />
  width: 90%;<br />
  margin: 0px;<br />
  padding: 12px;<br />
  font-family: Arial;<br />
  font-size: 12px;<br />
  color: #FFF;<br />
}<br />
&lt;/STYLE&gt;<br />
&lt;/HEAD&gt;<br />
&lt;BODY&gt;<br />
&lt;DIV&gt;<br />
<strong>&lt;?php<br />
<span style="color:#999999;">// lo script lavora su una o più azioni e il risultato è<br />
</span>$nome = &#8220;php4people&#8221;;<br />
$alert = &#8220;Bentornato&#8221;;<br />
echo $alert.&#8221; &#8220;.$nome;<br />
?&gt;</strong><br />
&lt;P&gt;&lt;a href=&#8221;profilo.php?user=<strong>&lt;?=$nome?&gt;</strong>&#8220;&gt;modifica il tuo profilo&lt;/a&gt;&lt;/P&gt;<br />
&lt;/DIV&gt;<br />
&lt;/BODY&gt;<br />
&lt;/HTML&gt;</p></blockquote>
<p><strong><span style="color:#ff0000;">Nota bene:</span></strong> Per poter mandare in output fuori da uno script il contenuto di una variabile&#8230; bisogna riaprire lo script! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Non ci sono alternative. La grammatica è quella proposta nell&#8217;esempio precedente: <strong>&lt;?=$nome?&gt;</strong>.</p>
<p>Ora modifico il file utilizzando il costrutto heredoc e trasferendo tutto all&#8217;interno dello script PHP:</p>
<blockquote><p><strong>&lt;?php<br />
<span style="color:#888888;">// lo script lavora su una o più azioni e il risultato è</span><br />
$nome = &#8220;php4people&#8221;;</strong></p>
<p><strong><span style="color:#888888;">// qui c&#8217;è una chiamata che verifica che $nome contenga effettivamente qualcosa, se è così:<br />
</span>$alert = &#8220;Bentornato &#8220;.$nome;<br />
$link_Profilo =&lt;&lt;&lt;EOF<br />
&lt;P&gt;&lt;a href=&#8221;profilo.php?user=$nome&#8221;&gt;modifica il tuo profilo&lt;/a&gt;&lt;/P&gt;<br />
EOF;</strong></p>
<p><strong><span style="color:#888888;">// assegno alla variabile $html, l&#8217;html, i fogli di stile e il contenuto delle altre variabili<br />
</span>$html =&lt;&lt;&lt;EOF<br />
 &lt;HTML&gt;<br />
&lt;HEAD&gt;<br />
&lt;TITLE&gt;Titolo della Pagina&lt;/TITLE&gt;<br />
&lt;STYLE&gt;<br />
BODY {<br />
  margin: 0px;<br />
  padding: 0px;<br />
  background: #000000;<br />
}<br />
DIV {<br />
  clear: both;<br />
  width: 90%;<br />
  margin: 0px;<br />
  padding: 12px;<br />
  font-family: Arial;<br />
  font-size: 12px;<br />
  color: #FFF;<br />
}<br />
&lt;/STYLE&gt;<br />
&lt;/HEAD&gt;<br />
&lt;BODY&gt;<br />
&lt;DIV&gt;<br />
$alert<br />
$link_Profilo<br />
&lt;/DIV&gt;<br />
&lt;/BODY&gt;<br />
&lt;/HTML&gt;<br />
EOF;</strong></p>
<p><strong><span style="color:#888888;">// mando in stampa l&#8217;HTML</span><br />
echo $html;<br />
?&gt;</strong></p></blockquote>
<p>Il risultato, in entrambi i casi, è sempre lo stesso:<br />
<img class="alignnone size-full wp-image-30" style="margin-top:12px;margin-bottom:12px;" src="http://php4people.files.wordpress.com/2008/04/heredoc-3.jpg" alt="heredoc" /></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/php4people.wordpress.com/27/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/php4people.wordpress.com/27/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/php4people.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/php4people.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/php4people.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/php4people.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/php4people.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/php4people.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/php4people.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/php4people.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/php4people.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/php4people.wordpress.com/27/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=27&subd=php4people&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://php4people.wordpress.com/2008/04/08/heredoc-php-stringa-costrutto/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3cc5858f08f45361a9438ac36179d72?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ferenir</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/heredoc-1.jpg" medium="image">
			<media:title type="html">heredoc</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/heredoc-2.jpg" medium="image">
			<media:title type="html">heredoc</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/heredoc-3.jpg" medium="image">
			<media:title type="html">heredoc</media:title>
		</media:content>
	</item>
		<item>
		<title>[fp6] echo</title>
		<link>http://php4people.wordpress.com/2008/04/07/echo-php-costrutto/</link>
		<comments>http://php4people.wordpress.com/2008/04/07/echo-php-costrutto/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 23:45:55 +0000</pubDate>
		<dc:creator>ferenir</dc:creator>
				<category><![CDATA[» echo]]></category>
		<category><![CDATA[- fp » Costrutti e stringhe speciali]]></category>
		<category><![CDATA[Fondamenti di PHP »]]></category>
		<category><![CDATA[echo]]></category>
		<category><![CDATA[print]]></category>

		<guid isPermaLink="false">http://php4people.wordpress.com/?p=20</guid>
		<description><![CDATA[


Cerchi un hosting professionale, di qualità e a prezzi competitivi per far girare le tue applicazioni PHP ?
Dai un&#8217;occhiata alla fine di questo articolo&#8230; un suggerimento (niente di più) per te.



L&#8217;utilità del costrutto echo sta nel mandare su schermo (in output) il contenuto di stringhe e variabili contenute in uno script PHP. Ripeto dai un&#8217;occhiata al link precedente. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=20&subd=php4people&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><table style="border:0;margin-top:12px;" border="0" cellspacing="0" cellpadding="12" width="100%">
<tbody>
<tr>
<td style="border:1px dashed #696969;background:#F0F0F0;" width="100%"><img class="alignnone size-full wp-image-26" style="border:1px solid #696969;margin-right:6px;" src="http://php4people.files.wordpress.com/2008/04/search.jpg" alt="occhio!" align="left" />Cerchi un <strong>hosting professionale</strong>, di qualità e a prezzi competitivi per far girare le tue applicazioni PHP ?<br />
Dai un&#8217;occhiata alla fine di questo articolo&#8230; un suggerimento (niente di più) per te.</td>
</tr>
</tbody>
</table>
<p>L&#8217;utilità del <a title="definizione di costrutto" href="http://php4people.wordpress.com/2008/04/03/fp4-definizione-costrutto-php/" target="_blank">costrutto</a> <em>echo </em>sta nel mandare su schermo (in output) il contenuto di <a title="definizione di variabile in php" href="http://php4people.wordpress.com/2008/04/01/definizione-variabile-php/">stringhe e variabili</a> contenute in uno <a title="creare ed eseguire uno script php" href="http://php4people.wordpress.com/2008/04/04/ps1-creare-ed-eseguire-uno-script-php-come/" target="_blank">script PHP</a>. Ripeto <sup>dai un&#8217;occhiata al link precedente. Oppure <a title="creare uno script in php" href="http://php4people.wordpress.com/2008/04/04/ps1-creare-ed-eseguire-uno-script-php-come/" target="_blank">clicca qui</a> se proprio ti fa fatica! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </sup> che qualsiasi script inizia e finisce con i tag <strong>&lt;?</strong><em>php</em><strong> </strong>&#8230;<strong> ?&gt;</strong> che ne delimitano i confini di esecuzione. Tutto ciò che non è compresto tra questi tag viene mandato in output &#8220;al passaggio&#8221;, vale a dire nel momento esatto in cui il motore ci &#8220;arriva&#8221; sopra:</p>
<blockquote><p><strong>&lt;?php<br />
$nome = &#8220;php4people&#8221;;<br />
?&gt;<br />
$nome ciao!</strong></p></blockquote>
<p>Provo a mandare in esecuzione lo script:<br />
<img style="margin-top:12px;margin-bottom:12px;" src="http://php4people.files.wordpress.com/2008/04/stampa-su-schermo-1.jpg" alt="stampa su schermo" /></p>
<p>Il risultato è ridicolo. &gt;:(<br />
$nome, che PHP considera una variabile se inclusa in uno script, al di fuori dello script è trattata alla stregua di &#8220;ciao!&#8221; come una semplice parola. Qui entra in gioco il costrutto &#8220;echo&#8221;:</p>
<blockquote><p><strong>&lt;?php<br />
$nome = &#8220;php4people&#8221;;<br />
echo $nome;<br />
?&gt;<br />
 ciao!</strong></p></blockquote>
<p><img style="margin-top:12px;margin-bottom:12px;" src="http://php4people.files.wordpress.com/2008/04/stampa-su-schermo-2.jpg" alt="stampa su schermo 2" /><br />
Lo script manda su video la stringa contenuta nella variabile $nome (&#8220;php4people&#8221;), subito seguita dal &#8221; ciao!&#8221;. Tra i doppi apici che ho utilizzato per evidenziare la parola e la prima lettera della parola stessa c&#8217;è uno spazio. Lo stesso spazio che ho lasciato in notepad quando ho scritto il file PHP. Senza uno spazio, l&#8217;output sarebbe stato &#8220;php4peopleciao!&#8221;.</p>
<p><strong>Nota bene:</strong> se avessi aggiunto due o più spazi prima della parola (&#8221; ciao!&#8221;), questi sarebbero stati trattati alla stregua di un singolo spazio (&#8221; ciao!&#8221;). Per aggiungere più di uno spazio tra una parola e l&#8217;altra è necessario utilizzare l&#8217;entità HTML <strong>&amp;nbsp;</strong> che lo rappresenta. In questo contesto non interessa cosa significhi &#8220;entità HTML&#8221;. E&#8217; sufficiente sapere che aggiungendo questa entità dentro e fuori lo script così &#8230;</p>
<blockquote><p><strong>&lt;?php<br />
$nome = &#8220;php4people &amp;nbsp; &amp;nbsp;&#8221;;<br />
echo $nome;<br />
?&gt;<br />
&amp;nbsp; &amp;nbsp; ciao!</strong></p></blockquote>
<p>&#8230; significa aggiungere complessivamente 8 spazi tra le due parole che finiranno in output all&#8217;esecuzione del file PHP:<br />
<img style="margin-top:12px;margin-bottom:12px;" src="http://php4people.files.wordpress.com/2008/04/stampa-su-schermo-3.jpg" alt="stampa su schermo 3" /></p>
<p>Esiste un costrutto simile, <em>print</em>, di cui non tratterò qui per due motivi: perché preferisco echo a print e perché print è, opinione personale, una &#8220;brutta copia&#8221; del costrutto echo.</p>
<p>In merito alle differenze (?) tra i due costrutti ti <a title="discussione in inglese sulle differenze tra i costrutti echo e print" href="http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40" target="_blank">rimando ad una breve discussione</a> (in inglese) su FAQTs, già segnalata dal <a title="PHP Group è php.net" href="http://it.php.net" target="_blank">PHP Group</a> sulla <a title="costrutto print su php.net" href="http://it.php.net/manual/it/function.print.php" target="_blank">pagina dedicata al costrutto print</a>.</p>
<table style="border:0;margin-top:12px;" border="0" cellspacing="0" cellpadding="12" width="100%">
<tbody>
<tr>
<td style="border:1px dashed #696969;background:#F0F0F0;" width="100%"><a title="EhiWeb.it Logo" href="http://advmagazine.ehiweb.it" target="_blank"><img style="border:1px solid #696969;margin-right:6px;" src="http://php4people.files.wordpress.com/2008/04/ehiweb2.gif" alt="EhiWeb.it Logo" align="left" /></a>A parità di servizi e garanzie entra in gioco il fattore <em>prezzo</em> e la competitività sul mercato. Un Provider competitivo che offra garanzie adeguate è cosa rara. Sono Cliente, Referente e <strong>[ <span style="color:#ff0000;">partner</span> ]</strong> di <a title="EhiWeb.it - Internet Provider" href="http://advmagazine.ehiweb.it" target="_blank">EhiWeb.it</a> da circa tre anni. EhiWeb.it è il provider che consiglio ai miei Clienti alla ricerca di una fornitura web (hosting) professionale e competitiva e che qui suggerisco a chi necessita di server condivisi o server dedicati per far girare software e applicazioni PHP.<br />
<a title="EhiWeb.it - provider italiano a 5 stelle" href="http://php4people.wordpress.com/2008/04/06/pr1-ehiwebit-provider-italiano-a-5-stelle/" target="_self"><strong>Qui trovi qualche info in più »</strong></a>.</td>
</tr>
</tbody>
</table>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/php4people.wordpress.com/20/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/php4people.wordpress.com/20/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/php4people.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/php4people.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/php4people.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/php4people.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/php4people.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/php4people.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/php4people.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/php4people.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/php4people.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/php4people.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=20&subd=php4people&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://php4people.wordpress.com/2008/04/07/echo-php-costrutto/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3cc5858f08f45361a9438ac36179d72?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ferenir</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/search.jpg" medium="image">
			<media:title type="html">occhio!</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/stampa-su-schermo-1.jpg" medium="image">
			<media:title type="html">stampa su schermo</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/stampa-su-schermo-2.jpg" medium="image">
			<media:title type="html">stampa su schermo 2</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/stampa-su-schermo-3.jpg" medium="image">
			<media:title type="html">stampa su schermo 3</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/ehiweb2.gif" medium="image">
			<media:title type="html">EhiWeb.it Logo</media:title>
		</media:content>
	</item>
		<item>
		<title>[pr1] EhiWeb.it &#187; provider italiano a 5 stelle</title>
		<link>http://php4people.wordpress.com/2008/04/06/pr1-ehiwebit-provider-italiano-a-5-stelle/</link>
		<comments>http://php4people.wordpress.com/2008/04/06/pr1-ehiwebit-provider-italiano-a-5-stelle/#comments</comments>
		<pubDate>Sat, 05 Apr 2008 22:16:01 +0000</pubDate>
		<dc:creator>ferenir</dc:creator>
				<category><![CDATA[PHP Servizi e Risorse »]]></category>
		<category><![CDATA[dominio]]></category>
		<category><![CDATA[EhiWeb.it]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[housing]]></category>
		<category><![CDATA[php4]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[spazio web]]></category>

		<guid isPermaLink="false">http://php4people.wordpress.com/?p=16</guid>
		<description><![CDATA[


La domenica la dedico (tempo permettendo) alla pubblicazione di un articolo separato dal contesto di questo blog (programmazione, script, applicazioni etc.) ma eventualmente utile per chi necessita d&#8217;info sulla promozione on-line del proprio lavoro. Quindi: Provider (indispensabile per eseguire uno script on-line&#8230;) , Web Directory dedicate, brevi info sulle strategie di promozione via motori di ricerca o [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=16&subd=php4people&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><table style="border:0;margin-top:12px;" border="0" cellspacing="0" cellpadding="12" width="100%">
<tbody>
<tr>
<td style="border:1px dashed #696969;background:#F0F0F0;" width="100%">La domenica la dedico (tempo permettendo) alla pubblicazione di un articolo separato dal contesto di questo blog (programmazione, script, applicazioni etc.) ma eventualmente utile per chi necessita d&#8217;info sulla promozione on-line del proprio lavoro. Quindi: Provider (indispensabile per eseguire uno script on-line&#8230;) , Web Directory dedicate, brevi info sulle strategie di promozione via motori di ricerca o piattaforme blog (WordPress e Blogger per iniziare) etc. Mai da prendere come consigli, le info che pubblicherò sono semplici suggerimenti opinabili e niente di più.</p>
<p><strong>Nota bene:</strong> quando scrivo di servizi, non tutti sono gratuiti. Potrei presentare, come in questo caso, servizi a pagamento. Servizi di cui mi autorizzo a scrivere solo dopo averli testati per lunghi periodi (dai 6 mesi in su). Inoltre, il fatto che li proponga significa che ci sono ancora rapporti in essere con i fornitori dei suddetti&#8230; servizi di cui continuo entusiasticamente a servirmi per il mio lavoro. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Nota bene (2): </strong>può essere che tra i servizi a pagamento che propongo ci siano servizi di miei partner. Il fatto che siano miei partner non incide sulla qualità del servizio proposto! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Parlo di partner d&#8217;affari e i miei affari riguardano (tra l&#8217;altro) lo sviluppo di applicazioni per la veicolazione e il movimento d&#8217;informazioni on-line. Comunque, visto che mi piace la trasparenza, quando scrivo di servizi proposti da partner, ci affiancherò una bella scritta rossa in grassetto: <strong>[ <span style="color:#ff0000;">partner</span> ]</strong>.</td>
</tr>
</tbody>
</table>
<p>Un <em>Provider</em> è un fornitore di servizi internet quali dominio, spazio web, server, e-mail, voip etc.<br />
Avere un buon Provider di servizi è indispensabile per garantire un buon livello alla propria attività on-line. Che si apra un sito per piacere o per fare/proporre business&#8230; che si gesticano risorse on-line conto terzi&#8230; è fondamentale servirsi da provider che offrano un rapporto qualità/prezzo adeguato al proprio portafogli e alle proprie esigenze. Un Provider deve garantire al suo Cliente:</p>
<ul>
<li>
<div>Un offerta di servizi che sia in grado di coprire al 100% le esigenze del Cliente. </div>
</li>
<li>
<div>Un&#8217; affidabilità e continuità dei servizi erogati che non dia sorprese di banda, interruzione di servizi, etc.</div>
</li>
<li>
<div>Un supporto tecnico competente che garantisca una velocità di risposta al massimo di ore e non di giorni.</div>
</li>
<li>
<div>Una flessibilità amministrativa che si adegui al tipo di Cliente e alle situazioni contingenti.</div>
</li>
<li>
<div>Una gestione commerciale delle offerte che sia sempre trasparente.</div>
</li>
</ul>
<p><a title="EhiWeb.it Logo" href="http://advmagazine.ehiweb.it" target="_blank"><img src="http://php4people.files.wordpress.com/2008/04/ehiweb2.gif" alt="EhiWeb.it Logo" align="left" /></a>A parità di servizi e garanzie entra in gioco il fattore <em>prezzo</em> e la competitività sul mercato. Un Provider competitivo che offra garanzie adeguate è cosa rara. Sono Cliente, Referente e <strong>[ <span style="color:#ff0000;">partner</span> ]</strong> di <a title="EhiWeb.it - Internet Provider" href="http://advmagazine.ehiweb.it" target="_blank">EhiWeb.it</a> da circa tre anni. EhiWeb.it è il provider che consiglio ai miei Clienti alla ricerca di una fornitura web (hosting) professionale e competitiva e che qui suggerisco a chi necessita di server condivisi o server dedicati per far girare software e applicazioni PHP.</p>
<p>La suggerisco a webmaster e programmatori che vogliano pubblicare un sito, un blog o un wiki in <a title="hosting Linux" href="http://advmagazine.ehiweb.it/hosting/linux.php" target="_blank">ambiente Linux</a> o <a title="hosting Windows" href="http://advmagazine.ehiweb.it/hosting/windows.php" target="_blank">ambiente Windows</a> &#8230; in entrambi gli ambienti PHP gira che è una meraviglia! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  &#8230; e la suggerisco alle aziende che propongono o intendono proporre la propria attività on-line.</p>
<p><a title="EhiWeb.it Hosting" href="http://advmagazine.ehiweb.it/hosting" target="_blank"><img src="http://php4people.files.wordpress.com/2008/04/ehiweb-hosting.jpg" alt="EhiWeb.it Hosting" /></a></p>
<p>Gli <strong>strumenti di controllo</strong> per tutte le soluzioni Hosting di EhiWeb.it &#8211; hanno un totale di 14 soluzioni: 7 in ambiente Linux e 7 in ambiente Windows &#8211; sono: Pannello Plesk 8.0 (<a title="Anteprima Plesk" href="http://advmagazine.ehiweb.it/hosting/plesk.php" target="_blank">anteprima</a>), File Manager, Protezione directory, BackUp programmabile, Accesso ai file di Log, Report gestione hosting e naturalmente un servizio di Statistiche.</p>
<p><strong>Posta elettronica</strong> che garantisce: Caselle POP3 e IMAP, Webmail, Mail Alias illimitati, Mail Forward illimitati, Mail Group illimitati, Mail Autoresponder, Filtri AntiSpam e AntiVirus.</p>
<p>Un <strong>Ambiente di sviluppo</strong> (Linux o Windows) in PHP, con accesso FTP e pagine di errore personalizzabili. Nel caso in cui si sviluppino applicazioni su più ambienti di sviluppo, EhiWeb.it affianca (sempre) al PHP questi ambienti di sviluppo: ASP.Net 2.0, PERL, Python&#8230; oltre all&#8217;immancabile CGI.</p>
<p>Il <strong>Supporto tecnico</strong> (affiancato dalle <a title="EhiWeb.it - FAQ domande/rispote comuni" href="http://advmagazine.ehiweb.it/faq.php" target="_blank">FAQ con le domande/risposte più comuni</a>) è raggiungibile tramite numero verde, e-mail oppure <a title="Ticket System di EhiWeb.it" href="http://advmagazine.ehiweb.it/cliente/supporto.php" target="_blank">on-line via ticket system</a>.</p>
<p>Le <strong>scadenze amministrative</strong> sono monitorate da un sistema automatizzato (tecnologia <a title="EhiWeb.it BeSMS" href="http://advmagazine.ehiweb.it/besms/" target="_blank">EhiWeb.it BeSMS</a>) che invia un SMS al Cliente quando il suo contratto è in odore di scadenza.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/php4people.wordpress.com/16/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/php4people.wordpress.com/16/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/php4people.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/php4people.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/php4people.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/php4people.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/php4people.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/php4people.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/php4people.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/php4people.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/php4people.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/php4people.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=16&subd=php4people&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://php4people.wordpress.com/2008/04/06/pr1-ehiwebit-provider-italiano-a-5-stelle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3cc5858f08f45361a9438ac36179d72?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ferenir</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/ehiweb2.gif" medium="image">
			<media:title type="html">EhiWeb.it Logo</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/ehiweb-hosting.jpg" medium="image">
			<media:title type="html">EhiWeb.it Hosting</media:title>
		</media:content>
	</item>
		<item>
		<title>[fp5] error_reporting()</title>
		<link>http://php4people.wordpress.com/2008/04/05/error-reporting-php-funzione/</link>
		<comments>http://php4people.wordpress.com/2008/04/05/error-reporting-php-funzione/#comments</comments>
		<pubDate>Sat, 05 Apr 2008 11:22:55 +0000</pubDate>
		<dc:creator>ferenir</dc:creator>
				<category><![CDATA[» error_reporting()]]></category>
		<category><![CDATA[- fp » Funzioni]]></category>
		<category><![CDATA[Fondamenti di PHP »]]></category>
		<category><![CDATA[error_reporting()]]></category>

		<guid isPermaLink="false">http://php4people.wordpress.com/?p=7</guid>
		<description><![CDATA[Si è già accennato a come il linguaggio PHP sia &#8220;pignolo&#8221; in fatto di grammatica. Basta un punto e virgola non messo e accade il disastro. non sempre è così. Ad esempio con le parentesi graffe della dichiarazione di una funzione&#8230; cosa che per ora non deve interessare. Esiste una funzione che permette di mandare su schermo eventuali errori [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=7&subd=php4people&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Si è già accennato a come il linguaggio PHP sia &#8220;pignolo&#8221; in fatto di grammatica. Basta un punto e virgola non messo e accade il disastro. <sup>non sempre è così. Ad esempio con le parentesi graffe della <a title="definizione di funzione" href="http://php4people.wordpress.com/2008/04/02/definizione-funzione-php/" target="_blank">dichiarazione di una funzione</a>&#8230; cosa che per ora non deve interessare</sup>. Esiste una funzione che permette di mandare su schermo eventuali errori presenti nel codice sorgente. Questa funzione ha dei limiti ma è utilissima per monitorare diverse situazioni. Si tratta di una delle funzioni standard (ne esistono centinaia) che PHP ha già dichiarate di default ad uso e consumo del programmatore.</p>
<blockquote><p><strong>error_reporting();</strong></p></blockquote>
<p>Le informazioni inseribili tra le parentesi sono <em>stringe eccezionali</em> <sup>il termine comune è <em>costante</em> ma io preferisco questo</sup> che definiscono il tipo di avvisi d&#8217;errore da stampare su schermo. Per &#8220;stringa eccezionale&#8221; intendo una stringa che non necessita di apici per essere dichiarata anche nel caso in cui contenga lettere. Si tratta di informazioni preimpostate a cui corrispondono azioni definite.</p>
<p>E&#8217; possibile &#8220;spegnere&#8221; ogni stampa di errore settando a 0 la variabile di report:</p>
<blockquote><p><strong>error_reporting (0); </strong></p></blockquote>
<p>Oppure è possibile definire il tipo di errore da riportare. Se lo zero blocca ogni report di errore, il suo opposto <strong>E_ALL </strong>manda in output su schermo non solo gli errori ma anche note significative (a detta del motore PHP) sull&#8217;esecuzione dello script:</p>
<blockquote><p><strong>error_reporting (E_ALL); </strong></p></blockquote>
<p> L&#8217;immagine seguente, presa dalla pagina di riferimento della funzione di <a title="error_reporting su php.net" href="http://it.php.net/manual/it/function.error-reporting.php" target="_blank">error_reporting() su php.net</a> &#8211; sito ufficiale del Linguaggio PHP - riporta tutte le informazioni accettate dalla funzione:<br />
<a title="error_reporting" href="http://it.php.net/manual/it/function.error-reporting.php" target="_blank"><img style="margin-top:12px;margin-bottom:12px;" src="http://php4people.files.wordpress.com/2008/04/error_reporting.jpg" alt="error_reporting" /></a><br />
Se hai necessità di report d&#8217;errori più selettivi per i tuoi script ti consiglio di darci un&#8217;occhiata. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
L&#8217;utilità di un &#8220;rapporto di errore&#8221; durante la programmazione di uno script è fuori discussione.<br />
Gestire l&#8217;informazione d&#8217;errore è semplice, grazie alla dichiarazione della funzione impostata dal <a title="The PHP Group" href="http://it.php.net/copyright.php" target="_blank">PHP Group</a>.<br />
Provo a mandare in esecuzione questo script:</p>
<blockquote><p><strong>&lt;?php<br />
error_reporting(E_ALL);<br />
$a = $a + 1;<br />
esempio();<br />
?&gt;</strong></p></blockquote>
<p>E ottengo due avvisi differenti:</p>
<p><img style="margin-top:12px;margin-bottom:12px;" src="http://php4people.files.wordpress.com/2008/04/error_reporting_output.jpg" alt="error_reporting_output" /></p>
<p>Il primo dei due (<strong>Notice:</strong>) è una &#8220;notifica&#8221; che non pregiudica l&#8217;esecuzione dello script: c&#8217;è una variabile ($a) coinvolta in un&#8217;operazione aritmetica ma che non è stata <a title="definizione di variabile" href="http://php4people.wordpress.com/2008/04/01/definizione-variabile-php/" target="_blank">definita</a> prima.  In realtà PHP la &#8220;definisce&#8221; nel momento stesso in cui è chiamato ad operare su di essa ma mi notifica comunque il &#8220;difetto&#8221;.<br />
Una notifica del genere è utile in script con centinaia di righe di codice dove potrebbe sfuggire l&#8217;assegnazione di un valore predefinito ad una variabile fondamentale.</p>
<p>Il secondo (<strong>Fatal error:</strong>) è un &#8220;errore fatale&#8221; che blocca l&#8217;esecuzione dello script: si è tentato di chiamare in esecuzione una funzione mai dichiarata. Lo script non la trova e blocca tutto <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/php4people.wordpress.com/7/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/php4people.wordpress.com/7/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/php4people.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/php4people.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/php4people.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/php4people.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/php4people.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/php4people.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/php4people.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/php4people.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/php4people.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/php4people.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=php4people.wordpress.com&blog=3338780&post=7&subd=php4people&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://php4people.wordpress.com/2008/04/05/error-reporting-php-funzione/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e3cc5858f08f45361a9438ac36179d72?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ferenir</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/error_reporting.jpg" medium="image">
			<media:title type="html">error_reporting</media:title>
		</media:content>

		<media:content url="http://php4people.files.wordpress.com/2008/04/error_reporting_output.jpg" medium="image">
			<media:title type="html">error_reporting_output</media:title>
		</media:content>
	</item>
	</channel>
</rss>