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

<channel>
	<title>Programmazione Web &#187; framework codeigniter.</title>
	<atom:link href="http://www.programmazione-web.com/tag/framework-codeigniter/feed" rel="self" type="application/rss+xml" />
	<link>http://www.programmazione-web.com</link>
	<description>il Blog open degli sviluppatori del web!</description>
	<lastBuildDate>Mon, 25 Jul 2011 16:39:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Tutorial Codeigniter per l&#8217;integrazione di ajax con jquery</title>
		<link>http://www.programmazione-web.com/tutorial-codeigniter-integrazione-ajax-jquery.php</link>
		<comments>http://www.programmazione-web.com/tutorial-codeigniter-integrazione-ajax-jquery.php#comments</comments>
		<pubDate>Sat, 07 Jun 2008 14:07:36 +0000</pubDate>
		<dc:creator>neryo</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Jquery]]></category>
		<category><![CDATA[Open-source]]></category>
		<category><![CDATA[Programmare Php]]></category>
		<category><![CDATA[Sviluppo applicazioni]]></category>
		<category><![CDATA[ajax codeigniter]]></category>
		<category><![CDATA[codeigniter ajax jquery]]></category>
		<category><![CDATA[codeigniter jquery]]></category>
		<category><![CDATA[codeigniter tutorial jquery]]></category>
		<category><![CDATA[framework codeigniter.]]></category>
		<category><![CDATA[framework php con jquery]]></category>
		<category><![CDATA[inserire jquery codeigniter]]></category>
		<category><![CDATA[jquery codeigniter ajax]]></category>

		<guid isPermaLink="false">http://www.programmazione-web.com/?p=56</guid>
		<description><![CDATA[In questo tutorial per il framework Codeigniter, tradotto parzialmente dall'articolo di Michael Wales, verrà mostrato come implementare in Codeigniter un caricamento dinamico di record da un database, utilizzando chiamate AJAX con l'usilio di Jquery.]]></description>
			<content:encoded><![CDATA[<p><strong>Tutorial Codeigniter per l&#8217;integrazione di ajax con jquery<br />
</strong></p>
<p>Negli ultimi due anni passati, AJAX è diventato velocemente uno strumento ormai necessario per ogni web developer. In effetti grazie all&#8217;utilizzo di AJAX è possibile velocizzare le applicazioni, diminuendo il consumo di banda e i tempi di caricamento delle pagine, donando inoltre una maggiore usabilità.</p>
<p>In questo tutorial per il framework Codeigniter, tradotto parzialmente dall&#8217;articolo di <a title="Michael Wales Wen site" href="http://michaelwales.com" target="_blank">Michael Wales</a>, verrà mostrato come implementare in Codeigniter un caricamento dinamico di record da un database, utilizzando chiamate AJAX con l&#8217;usilio di Jquery.</p>
<p>La nostra applicazione sarà composta da una lista di post di un blog, che sono suddivisi in due tipologie: la lista dei pubblicati o la lista delle bozze. Inizialmente la nostra applicazione funzionerà senza l&#8217;utilizzo di chiamate AJAX; poi successivamente inseriremo questa funzionalità utilizzando un semplice script jQuery, garantendo comunque la fruibilità del sito anche se l&#8217;utente non ha abilitato il supporto javascript (perdendo solamente le chiamate asincrone AJAX ma non i contenuti da visualizzare).</p>
<p><strong>Creazione dell&#8217;applicazione</strong></p>
<p>Nella nostra installazione del framework Codeigniter, creiamo una nuova classe controller che in questo tutorial chiameremo Post.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// File: ./controllers/post.php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">class</span> Post <span class="kw2">extends</span> Controller <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> Post<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; parent::<span class="me2">Controller</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> index<span class="br0">&#40;</span><span class="re0">$status</span> = <span class="kw2">NULL</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;<span class="re0">$this</span>-&gt;<span class="me1">load</span>-&gt;<span class="me1">model</span><span class="br0">&#40;</span><span class="st0">&#8216;posts&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$status</span> === <span class="kw2">NULL</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re0">$template</span><span class="br0">&#91;</span><span class="st0">&#8216;posts&#8217;</span><span class="br0">&#93;</span> = <span class="re0">$this</span>-&gt;<span class="me1">posts</span>-&gt;<span class="me1">get_where</span><span class="br0">&#40;</span><a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;id &gt;&#8217;</span>=&gt;<span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="re0">$template</span><span class="br0">&#91;</span><span class="st0">&#8216;posts&#8217;</span><span class="br0">&#93;</span> = <span class="re0">$this</span>-&gt;<span class="me1">posts</span>-&gt;<span class="me1">get_where</span><span class="br0">&#40;</span><a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;status&#8217;</span>=&gt;<span class="re0">$status</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re0">$template</span><span class="br0">&#91;</span><span class="st0">&#8216;partial&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&#8216;post/list&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re0">$this</span>-&gt;<span class="me1">load</span>-&gt;<span class="me1">view</span><span class="br0">&#40;</span><span class="st0">&#8216;view&#8217;</span>, <span class="re0">$template</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<div id="result_box" dir="ltr">Qui viene delineata la struttura di base della nostra applicazione. Il nostro metodo index() accetta un parametro facoltativo (status), che se non è definito tornera&#8217; tutti i posti all&#8217;interno del nostro blog.</div>
<div dir="ltr">Il controller attraverso il modello, effettua una query ritornando la lista dei post del blog sulla base di determinati parametri, settando una variabile chiamata partial, che verra&#8217; utilizzata anche in seguito per la visualizzazione dei risultati parziali.<br />
Ma passiamo subito al modello per comprendere completamente il funzionamento del controller visto precendentemente.</div>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// File: ./models/posts.php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">class</span> Posts <span class="kw2">extends</span> Model <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> <span class="re0">$_table</span> = <span class="st0">&#8216;posts&#8217;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> Posts<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; parent::<span class="me2">Model</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">function</span> get_where<span class="br0">&#40;</span><span class="re0">$params</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/count"><span class="kw3">count</span></a><span class="br0">&#40;</span><span class="re0">$params</span><span class="br0">&#41;</span> &gt; <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re0">$query</span> = <span class="re0">$this</span>-&gt;<span class="me1">db</span>-&gt;<span class="me1">get_where</span><span class="br0">&#40;</span><span class="re0">$this</span>-&gt;_table, <span class="re0">$params</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$query</span>-&gt;<span class="me1">num_rows</span><span class="br0">&#40;</span><span class="br0">&#41;</span> &gt; <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$query</span>-&gt;<span class="me1">result_array</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;<span class="kw1">return</span> <span class="kw2">FALSE</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<div dir="ltr">Nel metodo get_where () si nota come l&#8217;autore voleva assicurarsi che la funzione ricevesse un parametro, altrimenti restituisce inesorabilemnte un FALSE al controller al posto dell&#8217;array contenente i dati.</p>
<p>Giunti a questo punto si puo&#8217; dire che la nostra applicazione e&#8217; praticamente fatta e ora possiamo iniziare a giocare con AJAX! Inanzittutto vediamo di creare il file della vista principale, che verrà caricata insieme all header e al footer dal nostro controller.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// File: ./views/view.php</span></div>
</li>
<li class="li1">
<div class="de1">&lt; ?php <span class="re0">$this</span>-&gt;<span class="me1">load</span>-&gt;<span class="me1">view</span><span class="br0">&#40;</span><span class="st0">&#8216;_global/header&#8217;</span><span class="br0">&#41;</span>; <span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&lt; ?php <span class="re0">$this</span>-&gt;<span class="me1">load</span>-&gt;<span class="me1">view</span><span class="br0">&#40;</span><span class="re0">$partial</span><span class="br0">&#41;</span>; <span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&lt; ?php <span class="re0">$this</span>-&gt;<span class="me1">load</span>-&gt;<span class="me1">view</span><span class="br0">&#40;</span><span class="st0">&#8216;_global/footer&#8217;</span><span class="br0">&#41;</span>; <span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Questa vista come vediamo include i file header e footer che sono all&#8217;interno della directory _global, creata dall&#8217;autore con l&#8217;underscore davanti al nome per forzarla a rimanere per comodita&#8217; sempre in alto della lista dei file e direcory.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// File: ./views/_global/header.php</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;script src=<span class="st0">&quot;&lt;?php echo base_url(); ?&gt;&lt;!&#8211;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">assets/js/jquery-1.2.6.min.js&quot;</span> type=<span class="st0">&quot;text/javascript&quot;</span>&gt;&lt;!&#8211;mce:<span class="nu0">0</span>&#8211;&gt;&lt;/script&gt;</div>
</li>
<li class="li2">
<div class="de2">&lt;script src=<span class="st0">&quot;&lt;?php echo base_url(); ?&gt;&lt;!&#8211;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">assets/js/ajax_tut.js&quot;</span> type=<span class="st0">&quot;text/javascript&quot;</span>&gt;&lt;!&#8211;mce:<span class="nu0">1</span>&#8211;&gt;&lt;/script&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;div id=<span class="st0">&quot;wrapper&quot;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;div id=<span class="st0">&quot;header&quot;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;h1&gt;CodeIgniter Ajax Tutorial&lt;/h1&gt;</div>
</li>
<li class="li2">
<div class="de2">&lt;div id=<span class="st0">&quot;nav&quot;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;ul&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;li&gt;&lt; ?php <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> anchor<span class="br0">&#40;</span><span class="st0">&#8221;</span>, <span class="st0">&#8216;All Posts&#8217;</span><span class="br0">&#41;</span>; ?&gt;&lt;/li&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;li&gt;&lt; ?php <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> anchor<span class="br0">&#40;</span><span class="st0">&#8216;published&#8217;</span>, <span class="st0">&#8216;Published&#8217;</span><span class="br0">&#41;</span>; ?&gt;&lt;/li&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;li&gt;&lt; ?php <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> anchor<span class="br0">&#40;</span><span class="st0">&#8216;draft&#8217;</span>, <span class="st0">&#8216;Drafts&#8217;</span><span class="br0">&#41;</span>; ?&gt;&lt;/li&gt;</div>
</li>
<li class="li2">
<div class="de2">&lt;/ul&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;/div&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;/div&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;/div&gt;</div>
</li>
</ol>
</div>
<p>In questo file header avrete notato  l&#8217;utilizzo della funzione base_url () al fine di garantire ai file statici inclusi di avere un riferiemento assoluto che funziona sempre. Non fate caso agli utlimi 3 tags di chiusura sbagliati nel header. perche&#8217; non sono riuscito a toglierli qui nel blog, perche&#8217; il mio syntax highlighter me li continua ad aggiungere <img src='http://www.programmazione-web.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  infatti andrebbero nel footer ovvero i tag di chiusura del div wapper del body e del tag html.</p>
<p>Ecco la vista che implementa le viste dei post del blog, parziali e non:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// File: ./views/post/list.php</span></div>
</li>
<li class="li1">
<div class="de1">&lt;div id=<span class="st0">&quot;loading&quot;</span>&gt;Loading&#8230;&lt;/div&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;div id=<span class="st0">&quot;list&quot;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt; ?php</div>
</li>
<li class="li2">
<div class="de2"><span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$posts</span> <span class="kw1">as</span> <span class="re0">$post</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#8216;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&lt;h3&gt;&#8217;</span> . <span class="re0">$post</span><span class="br0">&#91;</span><span class="st0">&#8216;title&#8217;</span><span class="br0">&#93;</span> . <span class="st0">&#8216;&lt;span class=&quot;created_on&quot;&gt;Posted on: &#8216;</span> . <span class="re0">$post</span><span class="br0">&#91;</span><span class="st0">&#8216;created_on&#8217;</span><span class="br0">&#93;</span> . <span class="st0">&#8216;&lt;/span&gt;&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">?&gt;&lt;/h3&gt;</div>
</li>
<li class="li2">
<div class="de2">&lt;/div&gt;</div>
</li>
</ol>
</div>
<p>Nella vista  (post/list.php) non credo ci sia niente da chiarire, tutto quello che fa è effettuare un ciclo sull&#8217;array posts ritornato dal modello tramite il controller e stampare il titolo e la data di creazione di ogni post.</p>
<p>La nostra applicazione è praticamente completa! Ora è giunto il momente di fare gli ultimi passi e accertarsi che funzioni. Per prima cosa andremo a creare il database con la tabella e i dati per il test utilizzando il file sql di dump:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">CREATE</span> <span class="kw1">TABLE</span> <span class="kw1">IF</span> <span class="kw1">NOT</span> <span class="kw1">EXISTS</span> <span class="st0">`posts`</span> <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`id`</span> int<span class="br0">&#40;</span><span class="nu0">10</span><span class="br0">&#41;</span> <span class="kw1">UNSIGNED</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span> <span class="kw1">AUTO_INCREMENT</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`title`</span> varchar<span class="br0">&#40;</span><span class="nu0">255</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`status`</span> varchar<span class="br0">&#40;</span><span class="nu0">10</span><span class="br0">&#41;</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li2">
<div class="de2"><span class="st0">`created_on`</span> date <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">PRIMARY</span> <span class="kw1">KEY</span> &nbsp;<span class="br0">&#40;</span><span class="st0">`id`</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span> ENGINE=MyISAM &nbsp;<span class="kw1">DEFAULT</span> CHARSET=utf8 <span class="kw1">AUTO_INCREMENT</span>=<span class="nu0">4</span> ;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">INSERT</span> <span class="kw1">INTO</span> <span class="st0">`posts`</span> <span class="br0">&#40;</span><span class="st0">`id`</span>, <span class="st0">`title`</span>, <span class="st0">`status`</span>, <span class="st0">`created_on`</span><span class="br0">&#41;</span> <span class="kw1">VALUES</span></div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#40;</span><span class="nu0">1</span>, <span class="st0">&#8216;First post.&#8217;</span>, <span class="st0">&#8216;published&#8217;</span>, <span class="st0">&#8217;2008-05-27&#8242;</span><span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#40;</span><span class="nu0">2</span>, <span class="st0">&#8216;This is the second post.&#8217;</span>, <span class="st0">&#8216;published&#8217;</span>, <span class="st0">&#8217;2008-05-27&#8242;</span><span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#40;</span><span class="nu0">3</span>, <span class="st0">&#8216;This is a draft.&#8217;</span>, <span class="st0">&#8216;draft&#8217;</span>, <span class="st0">&#8217;2008-05-28&#8242;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Ora dobbiamo effettuare alcuni cambiamenti alle configurazioni, ricordando che i settaggi potrebbero essere leggermente diversi dalla vostra situazione, ma sicuramente e&#8217; un buon punto di partenza.</p>
<p>Per prima cosa accertevi che sia configurato in modo appropiato il base url</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// File: ./config/config.php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$config</span><span class="br0">&#91;</span><span class="st0">&#8216;base_url&#8217;</span><span class="br0">&#93;</span> &nbsp; &nbsp;= <span class="st0">&quot;http://localhost/ajax_tut/&quot;</span>;</div>
</li>
</ol>
</div>
<p>Ora, assicuratevi che potete connettervi al vostro database</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// File: ./config/database.php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$db</span><span class="br0">&#91;</span><span class="st0">&#8216;default&#8217;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#8216;hostname&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&quot;localhost&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$db</span><span class="br0">&#91;</span><span class="st0">&#8216;default&#8217;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#8216;username&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&quot;root&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$db</span><span class="br0">&#91;</span><span class="st0">&#8216;default&#8217;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#8216;password&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&quot;&quot;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$db</span><span class="br0">&#91;</span><span class="st0">&#8216;default&#8217;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#8216;database&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&quot;ajax_tut&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$db</span><span class="br0">&#91;</span><span class="st0">&#8216;default&#8217;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#8216;dbdriver&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&quot;mysql&quot;</span>;</div>
</li>
</ol>
</div>
<p>Dobbiamo caricare automaticamente le librerie e gli helper necessari per renderci lo sviluppo piu semplice e veloce.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// File: ./config/autoload.php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$autoload</span><span class="br0">&#91;</span><span class="st0">&#8216;libraries&#8217;</span><span class="br0">&#93;</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;database&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Infine, dobbiamo riderezionare la route di codeigniter sul nostro controller di post che chiamera&#8217; in automatico il metodo index() contenuto in esso.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// File: ./config/routes.php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$route</span><span class="br0">&#91;</span><span class="st0">&#8216;([a-zA-Z]+)&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&#8216;post/index/$1&#8242;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$route</span><span class="br0">&#91;</span><span class="st0">&#8216;default_controller&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&#8216;post&#8217;</span>;</div>
</li>
</ol>
</div>
<p>Qui sotto possiamo vedere il css agganciato alla nostra applicazione:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">// File: ./assets/css/style<span class="re1">.css</span></div>
</li>
<li class="li1">
<div class="de1">body <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">font<span class="re2">:<span class="nu0">0</span></span><span class="re1"><span class="re3">.8em</span></span> Verdana;</div>
</li>
<li class="li1">
<div class="de1">text-align<span class="re2">:center</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">a<span class="re2">:link</span>, a<span class="re2">:active</span>, a<span class="re2">:hover</span>, a<span class="re2">:visited</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">color<span class="re2">:blue</span>;</div>
</li>
<li class="li1">
<div class="de1">text-decoration<span class="re2">:none</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">#wrapper</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">margin<span class="re2">:<span class="nu0">0</span></span> <span class="kw2">auto</span>;</div>
</li>
<li class="li1">
<div class="de1">text-align<span class="re2">:left</span>;</div>
</li>
<li class="li2">
<div class="de2">width<span class="re2">:<span class="re3">600px</span></span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">#nav</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">background</span>:<span class="re0">#DDD</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">#nav</span> a <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">padding<span class="re2">:<span class="re3">10px</span></span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">#nav</span> a<span class="re2">:hover</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">background</span>:<span class="re0">#FFF</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">#nav</span> ul <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">padding<span class="re2">:<span class="re3">5px</span></span>;</div>
</li>
<li class="li1">
<div class="de1">list-style<span class="re2">:none</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">#nav</span> li <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">display<span class="re2">:inline</span>;</div>
</li>
<li class="li1">
<div class="de1">margin-right<span class="re2">:<span class="nu0">1</span></span><span class="re1"><span class="re3">.5em</span></span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">#loading</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">display<span class="re2">:none</span>;</div>
</li>
<li class="li1">
<div class="de1">font-weight<span class="re2">:bold</span>;</div>
</li>
<li class="li1">
<div class="de1">text-align<span class="re2">:center</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">#list</span> h3 <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">display<span class="re2">:inline</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="re1">.created_on</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">color</span>:<span class="re0">#AAA</span>;</div>
</li>
<li class="li1">
<div class="de1">font-size<span class="re2">:<span class="nu0">0</span></span><span class="re1"><span class="re3">.7em</span></span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<div id="result_box" dir="ltr"><strong>Ma e&#8217; AJAX?</strong><br />
Ci sono diversi modi per implementare AJAX in un sito web, soprattutto in un sito realizzato con Codeigniter. Noi potremmo tornare XML o JSON e fare poi il parsing all&#8217;interno del nostro controller, o semplicemente inviare tutto direttamente alle nostre viste e gestire solo la formattazione (se non è richiesto il parsing). Probabilmente il modo più semplice, all&#8217;interno di CodeIgniter, è semplicemente caricare un file di vista proprio come con un normale richiesta! Sappiamo tutti pero&#8217; che per caricare una vista abbiamo bisogno sempre di un metodo controller che ne implementa la logica, gestendo le eventuali chiamate verso il modello, e inviando i dati per la visualizzazione. Alcuni preferiscono creare una nuova classe, in particolare per le richieste AJAX, altri creano nuovi metodi all&#8217;interno della stessa classe che verranno utilizzate solo da AJAX.</p>
<p>L&#8217;autore, invece preferisce tenere la classe asciutta e utilizzare lo stesso controller effettuando solamente  alcune modifiche richiamando librerie esterne, dal momento che il nostro metodo attuale richiede solamente una vista (che comprende header footer e partial).</p>
<p>Per fare questo crea quindi prima una classe libreria, contenente un metodo che ci consenta di sapere se si tratta di una richiesta AJAX o meno e poi utilizzare questa libreria come una condizione per determinare che cosa fare in base al tipo di richiesta.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// File: ./libraries/request.php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">class</span> Request <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">function</span> is_ajax<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="br0">&#40;</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#8216;HTTP_X_REQUESTED_WITH&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> &amp;amp;&amp;amp; <span class="br0">&#40;</span><span class="re0">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#8216;HTTP_X_REQUESTED_WITH&#8217;</span><span class="br0">&#93;</span> == <span class="st0">&#8216;XMLHttpRequest&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>In questa classe tramite il metodo is_ajax(), semplicemente viene effettuato un controllo sulla variabile HTTP_X_REQUESTED_WITH che è un header jQuery settato quando noi effettuamo una richiesta di tipo AJAX.</p>
<p>Ora nel controller dobbiamo richiamare questa libreria per effettuare il controllo e inviare solamente i dati parziali alla vista.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// File: ./controllers/post.php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> index<span class="br0">&#40;</span><span class="re0">$status</span> = <span class="kw2">NULL</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re0">$this</span>-&gt;<span class="me1">load</span>-&gt;<span class="me1">model</span><span class="br0">&#40;</span><span class="st0">&#8216;posts&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re0">$this</span>-&gt;<span class="me1">load</span>-&gt;<span class="me1">library</span><span class="br0">&#40;</span><span class="st0">&#8216;request&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$status</span> === <span class="kw2">NULL</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re0">$template</span><span class="br0">&#91;</span><span class="st0">&#8216;posts&#8217;</span><span class="br0">&#93;</span> = <span class="re0">$this</span>-&gt;<span class="me1">posts</span>-&gt;<span class="me1">get_where</span><span class="br0">&#40;</span><a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;id &gt;&#8217;</span>=&gt;<span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re0">$template</span><span class="br0">&#91;</span><span class="st0">&#8216;posts&#8217;</span><span class="br0">&#93;</span> = <span class="re0">$this</span>-&gt;<span class="me1">posts</span>-&gt;<span class="me1">get_where</span><span class="br0">&#40;</span><a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;status&#8217;</span>=&gt;<span class="re0">$status</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re0">$template</span><span class="br0">&#91;</span><span class="st0">&#8216;partial&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&#8216;post/list&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">request</span>-&gt;<span class="me1">is_ajax</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re0">$this</span>-&gt;<span class="me1">load</span>-&gt;<span class="me1">view</span><span class="br0">&#40;</span><span class="re0">$template</span><span class="br0">&#91;</span><span class="st0">&#8216;partial&#8217;</span><span class="br0">&#93;</span>, <span class="re0">$template</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re0">$this</span>-&gt;<span class="me1">load</span>-&gt;<span class="me1">view</span><span class="br0">&#40;</span><span class="st0">&#8216;view&#8217;</span>, <span class="re0">$template</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Ora vediamo come vengono implementate in semplice stile jQuery le chiamate ajax, assicuriamoci pero&#8217; di aver scaricato la <a title="jquery library" href="http://jquery.com" target="_blank">liberia jQuery</a>, che sia nella cartella dell&#8217;applicazione in /assets/js/ e venga agganciata correttamente all&#8217;header.php in _global.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//File: ./assets/js/ajax_tut.js</span></div>
</li>
<li class="li1">
<div class="de1">$<span class="br0">&#40;</span>document<span class="br0">&#41;</span>.<span class="me1">ready</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;$<span class="br0">&#40;</span><span class="st0">&#8216;#nav a&#8217;</span><span class="br0">&#41;</span>.<span class="me1">click</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>event<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; event.<span class="me1">preventDefault</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; $<span class="br0">&#40;</span><span class="st0">&#8216;#list&#8217;</span><span class="br0">&#41;</span>.<span class="me1">load</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">href</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">$<span class="br0">&#40;</span><span class="st0">&#8216;#loading&#8217;</span><span class="br0">&#41;</span>.<span class="me1">ajaxStart</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;$<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">show</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span><span class="br0">&#41;</span>.<span class="me1">ajaxStop</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;$<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">hide</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">$<span class="br0">&#40;</span><span class="st0">&#8216;#list&#8217;</span><span class="br0">&#41;</span>.<span class="me1">ajaxStart</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;$<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">hide</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span>.<span class="me1">ajaxStop</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;$<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">show</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Javascript e jQuery sono al di fuori dello scopo di questo tutorial, quindi se avete problemi a capire quanto sopra riportato vi consiglio di fare riferimento alla documentazione ufficiale sul sito di jQuery. Spero che questo tutorial vi abbia chiarito le idee su come includere AJAX, in particolare jQuery nelle vostre applicazioni con Codeigniter, ringrazio Michael Wales per il suo tutorial che mi ha permesso di realizzare questa traduzione sul mio blog.</p>
<p>Se avete commenti, postate pure.. Vi ricordo che il codice del solo applicativo senza il framework codeigniter e&#8217; scaricabile qui sotto.</p>
</div>
<p><strong>Riferimenti</strong></p>
<p><a title="Michael Wales Codeigniter ajax with jquery" href="http://michaelwales.com/tutorials/codeigniter-ajax-with-jquery/" target="_blank">http://michaelwales.com/tutorials/codeigniter-ajax-with-jquery/</a><br />
<a title="Michael Wales Codeigniter ajax with jquery Download" href="http://www.michaelwales.com/wp-content/tutorials/codeigniter-ajax-with-jquery/codeigniter-ajax-with-jquery.zip" target="_blank">http://www.michaelwales.com/wp-content/tutorials/codeigniter-ajax-with-jquery/codeigniter-ajax-with-jquery.zip</a><br />
<a title="Codeigniter framework" href="http://www.codeigniter.com" target="_blank">http://www.codeigniter.com</a><br />
<a title="jquery library" href="http://jquery.com" target="_blank">http://jquery.com</a></p>
</div>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.programmazione-web.com%2Ftutorial-codeigniter-integrazione-ajax-jquery.php&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://www.programmazione-web.com/tutorial-codeigniter-integrazione-ajax-jquery.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Codeigniter: SEO URL rewrite con il framework php</title>
		<link>http://www.programmazione-web.com/seo-url-rewrite-framework-codeigniter.php</link>
		<comments>http://www.programmazione-web.com/seo-url-rewrite-framework-codeigniter.php#comments</comments>
		<pubDate>Mon, 31 Mar 2008 21:34:01 +0000</pubDate>
		<dc:creator>neryo</dc:creator>
				<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Sviluppo applicazioni]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[codeigniter riscrittura url]]></category>
		<category><![CDATA[framework codeigniter.]]></category>
		<category><![CDATA[rewrite url codeigniter]]></category>
		<category><![CDATA[routing codeigniter]]></category>
		<category><![CDATA[seo codeigniter]]></category>

		<guid isPermaLink="false">http://www.programmazione-web.com/seo-url-rewrite-framework-codeigniter.php</guid>
		<description><![CDATA[Questo tip per il framework codeigniter mostra come é possibile effettuare la riscrittura delle URL a scopi SEO (indicizzazione e ottimizzazione motori di ricerca) in modo molto semplice utilizzando il framework php Codeigniter.]]></description>
			<content:encoded><![CDATA[<p><strong>SEO URL rewrite con il framework php Codeigniter</strong></p>
<p>Questo tip mostra come é possibile effettuare la riscrittura delle URL a scopi SEO (indicizzazione e ottimizzazione motori di ricerca) in modo molto semplice utilizzando il framework php Codeigniter.</p>
<p>Per riscrittura delle url si intende fare un rewrite delle url inserendo parole chiavi relative alle argomentazioni della pagina e mapparle direttamente sul controller che la gestisce. Questo perché tipicamente c&#8217;é una corrispondenza  uno a uno tra le url e il corrispondente controller (classe/metodo).</p>
<p>Per effettuare le prime riscritture ipotizziamo di avere tre pagine: la &#8220;Home&#8221;, la pagina &#8220;Chi siamo&#8221; e  &#8220;Cosa facciamo&#8221; che hanno un corrispondenza con la classe controller Home, Chisiamo e la classe Cosafacciamo. All&#8217;interno della cartella <strong>/system/application/config</strong> apriamo in prima istanza il file routes.php</p>
<p>In questo file troviamo due routes riservate:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$route</span><span class="br0">&#91;</span><span class="st0">&#8216;default_controller&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&quot;home&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$route</span><span class="br0">&#91;</span><span class="st0">&#8216;scaffolding_trigger&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&quot;&quot;</span>;</div>
</li>
</ol>
</div>
<p>in quella di default_controller mettiamo il nome del controller della pagina che si deve aprire per prima quando si accede alla index del sito.</p>
<p>Poi possiamo definire infinite nuove route che ci mappano i nomi dei controller delle pagine a nuovi nomi che saranno le nuove url ottimizzate:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$route</span><span class="br0">&#91;</span><span class="st0">&#8216;azienda-vinicola&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&quot;chisiamo&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$route</span><span class="br0">&#91;</span><span class="st0">&#8216;azienda-produzione-vino&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&quot;cosafacciamo&quot;</span>;</div>
</li>
</ol>
</div>
<p>E&#8217; possibile inoltre postporre ai nomi degli url dei suffissi come .html o .php modificando sempre in <strong>/system/application/config</strong> nel file config.php.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$config</span><span class="br0">&#91;</span><span class="st0">&#8216;url_suffix&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&quot;.html&quot;</span>;</div>
</li>
</ol>
</div>
<p>In questo modo potremmo accedere alle varie pagine utilizzando url di questo tipo:</p>
<p>www.tuosito.com/index.php/azienda-vinicola.html<br />
www.tuosito.com/index.php/azienda-produzione-vino.html</p>
<p>Chiaramente se sul nostro server apache abbiamo il supporto mod_rewrite attivo, sarebbe consigliabile anche eliminare dalla url il riferimento inutile al file index.php, utilizzando un file .htaccess come questo esempio:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">RewriteEngine on</div>
</li>
<li class="li1">
<div class="de1">RewriteCond $<span class="nu0">1</span> !^<span class="br0">&#40;</span>index\.php|images|robots\.txt<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">RewriteRule ^<span class="br0">&#40;</span>.*<span class="br0">&#41;</span>$ /index.php/$<span class="nu0">1</span> <span class="br0">&#91;</span>L<span class="br0">&#93;</span></div>
</li>
</ol>
</div>
<p>In questo modo avremmo completato in modo semplice e veloce la riscrittura delle url nel nostro sito web realizzato con il framework Codeigniter e potremmo quindi accedere alle pagine in questo modo:</p>
<p>www.tuosito.com/azienda-vinicola.html<br />
www.tuosito.com/azienda-produzione-vino.html</p>
<p>Da ricordare inoltre che la funzionalitá di routing offerta da Codeigniter, permette di utilizzare anche espressioni regolari che permettono di aumentare la flessibilitá e la potenza di questo metodo. Ecco un esempio:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$route</span><span class="br0">&#91;</span><span class="st0">&#8216;products/([a-z]+)/(<span class="es0">\d</span>+)&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&quot;$1/id_$2&quot;</span>;</div>
</li>
</ol>
</div>
<p>Ogni commento, spunto, consiglio é sempre ben accetto! <img src='http://www.programmazione-web.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Riferimenti:</strong><br />
<a title="Codeigniter routing" href="http://codeigniter.com/user_guide/general/routing.html" target="_blank"> http://codeigniter.com/user_guide/general/routing.html</a><br />
<a title="Codeigniter Urls" href="http://codeigniter.com/user_guide/general/urls.html" target="_blank"> http://codeigniter.com/user_guide/general/urls.html</a></p>
<p><strong>Ringraziamenti:</strong><br />
Al mio amico omonimo che mi ha dato lo spunto per scrivere questo articolo.</p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.programmazione-web.com%2Fseo-url-rewrite-framework-codeigniter.php&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://www.programmazione-web.com/seo-url-rewrite-framework-codeigniter.php/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

