<?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; rapid application development</title>
	<atom:link href="http://www.programmazione-web.com/tag/rapid-application-development/feed" rel="self" type="application/rss+xml" />
	<link>http://www.programmazione-web.com</link>
	<description>il Blog open degli sviluppatori del web!</description>
	<lastBuildDate>Tue, 10 Nov 2009 21:04:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tutorial con il Framework CodeIgniter</title>
		<link>http://www.programmazione-web.com/tutorial-con-il-framework-codeigniter.php</link>
		<comments>http://www.programmazione-web.com/tutorial-con-il-framework-codeigniter.php#comments</comments>
		<pubDate>Sun, 09 Mar 2008 18:23:34 +0000</pubDate>
		<dc:creator>neryo</dc:creator>
				<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Programmare Php]]></category>
		<category><![CDATA[RAD]]></category>
		<category><![CDATA[Sviluppo applicazioni]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[codeigniter rad]]></category>
		<category><![CDATA[framework php]]></category>
		<category><![CDATA[programmare codeigniter]]></category>
		<category><![CDATA[rapid application development]]></category>

		<guid isPermaLink="false">http://www.programmazione-web.com/tutorial-con-il-framework-codeigniter.php</guid>
		<description><![CDATA[semplice tutorial per l'implementazione di applicazioni con il framework codeigniter, guida codeigniter in italiano.]]></description>
			<content:encoded><![CDATA[<p><strong>Tutorial con il Framework CodeIgniter </strong><strong>Perché dovrei usare CodeIgniter?<br />
</strong>Come detto in precedenza nell&#8217;articolo &#8220;<a title="programmaew web seguendo mvc" rel="bookmark" href="http://www.programmazione-web.com/programmare-web-seguendo-mvc.php" target="_blank">Programmare il Web seguendo MVC</a>&#8221; ci sono tantissime scelte per sviluppare applicazioni PHP con dei framework che permettono una programmazione di tipo RAD (Rapid Application Development), basta dare un&#8217;occhiata a questa <a href="http://phpframeworks.com/" target="_blank">lista</a>, ognuno di essi avrá sicuramente vantaggi e svantaggi discutibili. Molti framework offrono ORM (Object-relational Mapping); alcuni sistemi di autenticazione o interfaccie con AJAX. In ogni caso comunque, quello che solitamente si vuole, é un ambiente che permetta di programmare velocemente senza dover affrontare librerie troppo complesse, <a title="Code Igniter Framework" href="http://codeigniter.com/" target="_blank">CodeIgniter</a> sembra permettere questo offrendo comunque molteplici ed utili funzionalità!</p>
<p><strong>Un esempio concreto:<br />
</strong>In questo esempio vi introduco una semplice implementazione di un piccolo software utilizzando come base di sviluppo il framework CodeIgniter, costruiremo una semplice &#8220;job board&#8221;. I Jobs per questo esempio, saranno inseriti manualmente tramite phpmyadmin o direttamente da una shell mysql nella tabella del database chiamata &#8220;<code>jobs</code>&#8221; creata opportunamente con questa query SQL:</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="st0">`jobs`</span> <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`id`</span> INT <span class="kw1">UNSIGNED</span> <span class="kw1">NOT</span> <span class="kw1">NULL</span> <span class="kw1">AUTO_INCREMENT</span> <span class="kw1">PRIMARY</span> <span class="kw1">KEY</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`title`</span> TEXT <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">`company`</span> TEXT <span class="kw1">NOT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li2">
<div class="de2"><span class="st0">`description`</span> TEXT <span class="kw1">NOT</span> <span class="kw1">NULL</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Nella semplice applicazione ci saranno sostanzialmente due semplici pagine:</p>
<ul>
<li> La lista di tutti i jobs;</li>
<li>Visuale del job in dettaglio;</li>
</ul>
<h3>Configurazione di CodeIgniter</h3>
<p>Ovviamente si presuppone che abbiate installato sulla vostra postazione un server PHP e MySQL.  Innanzitutto scaricate, <a title="Download Code Igniter Framework" href="http://codeigniter.com/download.php" target="_blank">CodeIgniter</a>, estraete il contenuto dentro la vostra cartella di root del vostro web server tutti i files contenuti nel pacchetto; Per il test io ho rinominato la cartella in <code>/CodeIgniter, </code>questo perché poi nella configurazione non dovete editare la configurazione del <em>base_url</em>.  Aprite il file <code>system/application/config.php</code> nella cartella CodeIgniter estratta. E&#8217; molto semplice capire cosa c&#8217;é in questo file perché é ben commentato. Se avete estratto la cartella nella root e l&#8217;avete chiamata come sopra non dovete toccare nulla.</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;base_url&#8217;</span><span class="br0">&#93;</span> &nbsp; &nbsp;= <span class="st0">&quot;http://127.0.0.1/CodeIgniter/&quot;</span>;</div>
</li>
</ol>
</div>
<p>Inoltre bisogna configurare l&#8217;accesso per permettere al framework di parlare con il database Mysql, quindi aprite  system/application/database.php e scorrete finché non trovate le configurazioni del database da settare con le vostre locali.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<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="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;database&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&quot;test&quot;</span>;</div>
</li>
<li class="li2">
<div class="de2">&#8230;</div>
</li>
</ol>
</div>
<p>Io per effettuare il test ho creato un database chiamato test sul mio DBMS mysql locale inserendo la tabella jobs.<br />
Possiamo notare come CodeIgniter con questa tipologia di configurazione ci permetta, nel caso lo volessimo, di passare velocemente la configurazione tra differenti server con differenti database. Per maggiori dettagli e implementazioni sulle configurazione fate riferimento al <a href="http://codeigniter.com/user_guide/database/configuration.html" target="_blank">manuale online</a>.</p>
<h3>Realizzazione dell&#8217;applicazione</h3>
<p>Per realizzare la nostra job board implementeremo un controller, un modello e due viste. Il controller gestirá sia la lista principale dei jobs, sia il dettagli del signolo job, con un modello di metodo e per ogni vista. In questo modo,  chiaramente verranno distinte le diverse parti della nostra applicazione.</p>
<p>Vi faccio notare come CodeIgniter abbia una convenzione con i nomi dei file: tutti i nomi dei files sono composti da caratteri minuscoli, tutte i nomi delle classi iniziano con una lettera maiuscola e sono poste in file con lo stesso nome piu il nome dell&#8217;estensione .php.</p>
<h3>Il controller</h3>
<p>Il Controller é una classe con alcuni metodi che gestiscono le varie richieste direzionandole opportunamente ove necessario. La classe estende la classe base di CodeIgniter &#8220;Controller&#8221; fornendo quindi l&#8217;accesso a tutte le funzionalitá del framework.  Nel controller noi andremo a caricare tutte le risorse di cui avremo bisogno, in particolare un modello e le due viste. Niente verrá caricato di default, questo perché CodeIgniter é stato progettato per essere un framework molto leggero ed essenziale. L&#8217;oggetto <code>$this-&gt;load</code> consente al sistema di caricare le risorse di cui abbiamo bisogno, qui sotto il codice del controller:<strong> system/application/controllers/jobs.php</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt; ?php</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">class</span> Jobs <span class="kw2">extends</span> Controller <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">function</span> index<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="co1">// This gives us redirect()</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">load</span>-&gt;<span class="me1">helper</span><span class="br0">&#40;</span><span class="st0">&#8216;url&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; redirect<span class="br0">&#40;</span><span class="st0">&#8216;jobs/list_jobs&#8217;</span><span class="br0">&#41;</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="kw2">function</span> list_jobs<span class="br0">&#40;</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"><span class="re0">$this</span>-&gt;<span class="me1">load</span>-&gt;<span class="me1">database</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><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;jobs_model&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$data</span><span class="br0">&#91;</span><span class="st0">&#8216;jobs&#8217;</span><span class="br0">&#93;</span> = <span class="re0">$this</span>-&gt;<span class="me1">jobs_model</span>-&gt;<span class="me1">get_jobs</span><span class="br0">&#40;</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="co1">// This gives us anchor() &#8211; see the view at the end</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$this</span>-&gt;<span class="me1">load</span>-&gt;<span class="me1">helper</span><span class="br0">&#40;</span><span class="st0">&#8216;url&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><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;jobs_view&#8217;</span>, <span class="re0">$data</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> view_job<span class="br0">&#40;</span><span class="re0">$id</span> = <span class="kw2">false</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"><span class="re0">$this</span>-&gt;<span class="me1">load</span>-&gt;<span class="me1">helper</span><span class="br0">&#40;</span><span class="st0">&#8216;url&#8217;</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="kw1">if</span> <span class="br0">&#40;</span>!<span class="re0">$id</span><span class="br0">&#41;</span> redirect<span class="br0">&#40;</span><span class="st0">&#8216;jobs/list_jobs&#8217;</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="re0">$this</span>-&gt;<span class="me1">load</span>-&gt;<span class="me1">database</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><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;jobs_model&#8217;</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="re0">$data</span><span class="br0">&#91;</span><span class="st0">&#8216;job&#8217;</span><span class="br0">&#93;</span> = <span class="re0">$this</span>-&gt;<span class="me1">jobs_model</span>-&gt;<span class="me1">get_job</span><span class="br0">&#40;</span><span class="re0">$id</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><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;job_view&#8217;</span>, <span class="re0">$data</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Come potete vedere, il controller é molto semplice, si incarica di prendere i dati dal modello e di inviarli alla vista.  Ogni metodo inizia con la chiamata alla routine <code>$this-&gt;load-&gt;database()</code>, la quale si connetterá al database e preparerá  le librerie per interfacciarsi utilizzando i settaggi precedentemente definiti.  Questo é l&#8217;approcio di  CodeIgniter al modello  <code>$this-&gt;load-&gt;model('classname')</code> caricherá il file<code> system/application/models/classname.php</code> inizializzando l&#8217;instanza della classe <code>Classname</code> (non cé bisogno di includere altri files).  Essa restituirá un riferimento al nuovo oggettto <code>$this-&gt;classname</code>. E&#8217; possibile sovrascrivere questo comportamento passando un secondo argomento, che potrá essere usato come proprietá del nome dell&#8217;oggetto. Ad esempio, si puo chiamare  <code>$this-&gt;load-&gt;model('someclass', 'data');</code> e accedere cosí al modello della classe <code>$this-&gt;data </code>invece di<code> $this-&gt;someclass</code>.</p>
<h3>Il modello</h3>
<p>Come per il controller il Modello estenderá la classe predefinita &#8220;Model&#8221;. Una volta che il database sará inizializzato tramite la chiamata a <code>$this-&gt;load-&gt;database()</code>,  avremo accesso completo alla classe dei <a href="http://codeigniter.com/user_guide/database/examples.html" target="_blank">database di CodeIgniter</a> .  Come sappiamo dal controller, nel nostro modello avremo due metodi, uno per recuperare tutti i jobs del database, da noi chiamato <code>get_jobs()</code>,  e l&#8217;altro per recuperare i dettagli di un job, chiamato <code>get_job($job_id)</code>. Non ci sono particolari convenzioni dei nomi per il modello, comunque é tipico usare il nome del controller con in aggiunta <code>_model</code> alla fine.  Il manuale di CodeIgniter ha un eccellente guida veloce alle <a href="http://codeigniter.com/user_guide/database/examples.html" target="_blank">librerie del database</a>, che potete leggere prima di procedere oltre.<br />
Ecco a voi il codice del modello:<strong> system/application/models/jobs_model.php</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt; ?php</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">class</span> Jobs_model <span class="kw2">extends</span> Model <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">function</span> get_jobs<span class="br0">&#40;</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="re0">$query</span> = <span class="re0">$this</span>-&gt;<span class="me1">db</span>-&gt;<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">&#8216;jobs&#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">foreach</span> <span class="br0">&#40;</span><span class="re0">$query</span>-&gt;<span class="me1">result_array</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw1">as</span> <span class="re0">$row</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="re0">$result</span><span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="re0">$row</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="kw1">return</span> <span class="re0">$result</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="kw2">function</span> get_job<span class="br0">&#40;</span><span class="re0">$job_id</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="re0">$query</span> = <span class="re0">$this</span>-&gt;<span class="me1">db</span>-&gt;<span class="me1">where</span><span class="br0">&#40;</span><span class="st0">&#8216;id&#8217;</span>, <span class="re0">$job_id</span><span class="br0">&#41;</span>-&gt;<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">&#8216;jobs&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re0">$result</span> = <span class="re0">$query</span>-&gt;<span class="me1">row_array</span><span class="br0">&#40;</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">return</span> <span class="re0">$result</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>
<p>Prendiamoci un attimo per esaminare questo codice che per certi versi é la parte piú complessa di questo tutorial. CodeIgniter ha una classe Active Record che consente agli sviluppatori di accedere ai database in <a href="http://en.wikipedia.org/wiki/Active_record_pattern" target="_blank">Active Record</a>-style.  Si puó scrivere la query SQL e passarla a <code>$this-&gt;db-&gt;query()</code>, ma ci sono molte casistiche in cui conviene utilizzare la classe Active Record, ricordando che CodeIgniter gestirá automaticamente l&#8217;eventuale prefisso delle tabelle che avrete settato nel file di configurazione del database. Un esempio di query di selezione tipo <code>SELECT * FROM table WHERE id='0'</code>, utilizzando la classe Active Record:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$this</span>-&gt;<span class="me1">db</span>-&gt;<span class="me1">select</span><span class="br0">&#40;</span><span class="st0">&#8216;*&#8217;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt;<span class="me1">from</span><span class="br0">&#40;</span><span class="st0">&#8216;table&#8217;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt;<span class="me1">where</span><span class="br0">&#40;</span><span class="st0">&#8216;id&#8217;</span>, <span class="st0">&#8216;0&#8242;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt;<span class="me1">get</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Da notare il metodo <code>get()</code>che alla chiamata interroga la libreria costruendo la query e se non gli vengono date ulteriori informazioni, assume che sia di default una SELECT * FROM &#8216;table&#8217;, eseguendo la query ritornando un oggetto result che é possibile maneggiare con  molta facilitá ad esempio applicandogli il metodo <code>result_array()</code> oppure <code>row_array()</code> che é simile solo che restituisce una singola riga.</p>
<h3>La vista</h3>
<p>Questo é l&#8217;ultimo passo, che serve per presentarci l&#8217;applicazione. Noi abbiamo preso tutti i dati di cui avevamo bisogno dal database attraverso il modello e li dobbiamo passare attraverso il controllore  ad una vista.  La nostra vista si chiamerá jobs_view. L&#8217;abbiamo deciso quando abbiamo scritto questa riga di codice nel controller:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><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;jobs_view&#8217;</span>, <span class="re0">$data</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Questa sostanzialmente dice a  CodeIgniter di caricare la vista in <code>system/application/views/jobs_view.php</code>,  e di recuperare l&#8217;array associativo <code>$data</code> e creare una variabile con la vista <code>$data['jobs']</code> che ci dará accesso alla variabile <code>$jobs</code>. Per verificarlo basta creare un file nel path delle viste chiamandolo <code>jobs_view.php</code> ed insererire la stampa del vettore <code>&lt; ?=print_r($jobs)?&gt;</code>. Il risultato dovrebbe essere qualcosa di questo stampo:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><a href="http://www.php.net/array"><span class="kw3">Array</span></a></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> =&gt; <a href="http://www.php.net/array"><span class="kw3">Array</span></a><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>id<span class="br0">&#93;</span> =&gt; <span class="nu0">1</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>title<span class="br0">&#93;</span> =&gt; Web Developer</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>company<span class="br0">&#93;</span> =&gt; Google</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>description<span class="br0">&#93;</span> =&gt; Develop kick-ass web applications</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">for</span> the mighty Google.</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> =&gt; Arra <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>id<span class="br0">&#93;</span> =&gt; <span class="nu0">2</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>title<span class="br0">&#93;</span> =&gt; Sr. Web Developer</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>company<span class="br0">&#93;</span> =&gt; Ellis Lab</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>description<span class="br0">&#93;</span> =&gt; Help the world develop kick-ass web</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;applications with our software.</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Ora forse, si potrebbe affermare che sarebbero bastati dei semplici <code>mysql_query()</code> e <code>mysql_fetch_array()</code> per fare tutto questo, ma sicuramente se si vorrá poi esterndere l&#8217; applicazione in modo semplice e veloce mantenendone il controllo, e questo é sicuramente uno dei framework adatti per semplificarci notevolmente la vita.</p>
<p>Di seguito il file vista inserendo i dati nel codice html:<strong> system/application/views/jobs_view.php</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;table style=<span class="st0">&quot;border-collapse: collapse;&quot;</span> border=<span class="st0">&quot;1&quot;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;thead&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;tr&gt;</div>
</li>
<li class="li2">
<div class="de2">&lt;th&gt;Job Title&lt;/th&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;th&gt;Company&lt;/th&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;th&gt;View&lt;/th&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;/tr&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;/thead&gt;</div>
</li>
<li class="li2">
<div class="de2">&lt;tbody&gt;&lt; ?php <span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$jobs</span> <span class="kw1">as</span> <span class="re0">$job</span><span class="br0">&#41;</span>: <span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&lt;tr&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;td&gt;&lt; ?=<span class="re0">$job</span><span class="br0">&#91;</span><span class="st0">&#8216;title&#8217;</span><span class="br0">&#93;</span>?&gt;&lt;/td&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;td&gt;&lt; ?=<span class="re0">$job</span><span class="br0">&#91;</span><span class="st0">&#8216;company&#8217;</span><span class="br0">&#93;</span>?&gt;&lt;/td&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;td&gt;&lt; ?=anchor<span class="br0">&#40;</span><span class="st0">&#8216;jobs/view_job/&#8217;</span>.<span class="re0">$job</span><span class="br0">&#91;</span><span class="st0">&#8216;id&#8217;</span><span class="br0">&#93;</span>, <span class="st0">&#8216;View&#8217;</span><span class="br0">&#41;</span>?&gt;&lt;/td&gt;</div>
</li>
<li class="li2">
<div class="de2">&lt;/tr&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt; ?php <span class="kw1">endforeach</span>; ?&gt;&lt;/tbody&gt;&lt;/table&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>La vista per un dettaglio di un job:<strong> system/application/views/job_view.php</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;h1&gt;Viewing Job: &lt; ?=<span class="re0">$job</span><span class="br0">&#91;</span><span class="st0">&#8216;title&#8217;</span><span class="br0">&#93;</span>?&gt;&lt;/h1&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;strong&gt;&lt; ?=<span class="re0">$job</span><span class="br0">&#91;</span><span class="st0">&#8216;company&#8217;</span><span class="br0">&#93;</span>?&gt;&lt;/strong&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&lt; ?=<span class="re0">$job</span><span class="br0">&#91;</span><span class="st0">&#8216;description&#8217;</span><span class="br0">&#93;</span><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Ora abbiamo terminato di creare la nostra  prima applicazione con il framework MVC CodeIgniter.</p>
<p>Ci basta caricare  http://localhost/CodeIgniter/index.php/jobs/list_jobs per vedere il risultato finito!!</p>
<p>Per eventuali dubbi o segnalazioni commentate pure!</p>
<p><strong>Traduzione parziale dell&#8217;articolo:</strong> <em><br />
Rapid Development with CodeIgniter<strong> </strong>del 17-02-2008 » <a title="Rapid Developemente with codeigniter" href="http://www.developertutorials.com/tutorials/php/rapid-application-development-with-codeigniter-8-02-17" target="_blank">http://www.developertutorials.com</a></em><br />
a cura di Valerio Giacomelli (neryo)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmazione-web.com/tutorial-con-il-framework-codeigniter.php/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
