<?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>Nukium &#187; Acicrud</title>
	<atom:link href="http://nukium.com/tag/acicrud/feed/" rel="self" type="application/rss+xml" />
	<link>http://nukium.com</link>
	<description>Ressources et tutoriaux : Web 2.0 - PHP - CodeIgniter - Webdesign</description>
	<lastBuildDate>Wed, 08 Feb 2012 23:34:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>CodeIgniter &amp; Acicrud : Erreur &#8216;DB_driver.php on line 837&#8242;</title>
		<link>http://nukium.com/developpement-php/codeigniter/codeigniter-acicrud-erreur-db_driver-php-line-837/</link>
		<comments>http://nukium.com/developpement-php/codeigniter/codeigniter-acicrud-erreur-db_driver-php-line-837/#comments</comments>
		<pubDate>Tue, 07 Jun 2011 09:55:46 +0000</pubDate>
		<dc:creator>Nukium</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Acicrud]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://nukium.com/?p=1776</guid>
		<description><![CDATA[Voici un titre de billet un peu barbare mais il s&#8217;agit ici de parler d&#8217;une erreur très spécifique qui peut survenir avec la version 2.0.2 de CodeIgniter lors de l&#8217;utilisation d&#8217;Acicrud. Le cas de figure est le suivant, vous tentez de lire une entrée en base de données avec la méthode read($primary_key) (par exemple) et [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_silver" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fnukium.com%252Fdeveloppement-php%252Fcodeigniter%252Fcodeigniter-acicrud-erreur-db_driver-php-line-837%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22CodeIgniter%20%26%20Acicrud%20%3A%20Erreur%20%27DB_driver.php%20on%20line%20837%27%22%20%7D);"></div>
<p>Voici un titre de billet un peu barbare mais il s&#8217;agit ici de parler d&#8217;une erreur très spécifique qui peut survenir avec la version <strong>2.0.2 de CodeIgniter</strong> lors de l&#8217;utilisation d&#8217;<a href="http://nukium.com/acicrud/">Acicrud</a>.</p>
<p>Le cas de figure est le suivant, vous tentez de lire une entrée en base de données avec la méthode <strong>read($primary_key)</strong> (par exemple) et une erreur fatale est levée :</p>
<p><strong>Call to a member function result_array() on a non-object in /system/database/DB_driver.php on line 837</strong></p>
<p>La cause probable de cette erreur est une mauvaise configuration au niveau de la base de données ou au niveau d&#8217;Acicrud.</p>
<p>Voici une procédure de vérification qui vous permettra très certainement de corriger l&#8217;erreur :</p>
<ul>
<li>Si vous utilisez un préfixe de table, vous devez l&#8217;indiquer dans /application/config/database.php dans $db['default']['dbprefix'], <strong>assurez-vous d&#8217;avoir spécifié l&#8217;underscore final</strong>, par exemple &laquo;&nbsp;mon_prefixe_&nbsp;&raquo;.</li>
<li>Vérifiez ensuite que le modèle incriminé instancie bien la librairie Acicrud avec le nom de la table liée <strong>sans le préfixe</strong> et que le nom de la table est correct. Par exemple, pour une table nommée &laquo;&nbsp;my_prefix_users&nbsp;&raquo;, l&#8217;appel du constructeur doit être le suivant : <strong>parent::__construct(&#8216;users&#8217;);</strong></li>
<li>Dernière possibilité, vérifiez que la requête SQL générée <strong>par le driver de CodeIgniter</strong> est correcte, pour cela ouvrez /system/database/DB_driver.php et faîtes un echo de $sql en ligne 833 juste avant le $query = $this->query($sql);</li>
</ul>

 <p><a href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=1776&amp;md5=7a2dc841b9561a7bb0798975b46670b0" title="Flattr" target="_blank"><img src="http://nukium.com/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://nukium.com/developpement-php/codeigniter/codeigniter-acicrud-erreur-db_driver-php-line-837/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=1776&amp;md5=7a2dc841b9561a7bb0798975b46670b0" type="text/html" />"
	</item>
		<item>
		<title>Acicrud library v1.2 for CodeIgniter released !</title>
		<link>http://nukium.com/developpement-php/codeigniter/acicrud-library-v1-2-codeigniter-released/</link>
		<comments>http://nukium.com/developpement-php/codeigniter/acicrud-library-v1-2-codeigniter-released/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 13:19:07 +0000</pubDate>
		<dc:creator>Nukium</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Acicrud]]></category>
		<category><![CDATA[gratuit]]></category>
		<category><![CDATA[librairie]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[telechargement]]></category>

		<guid isPermaLink="false">http://nukium.com/?p=1689</guid>
		<description><![CDATA[Let me announce you the immediate availability of the 1.2 stable version of the Acicrud (Automatic CodeIgniter Create Read Update Delete) library for CodeIgniter. The release 1.2 which the Git commit number is b6602b8889da7f18519a07678a5c935a4b118371 brings the support for CodeIgniter 2.0.x. The Acicrud library can fully manage a table for which at least the first normal [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_silver" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fnukium.com%252Fdeveloppement-php%252Fcodeigniter%252Facicrud-library-v1-2-codeigniter-released%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Acicrud%20library%20v1.2%20for%20CodeIgniter%20released%20%21%22%20%7D);"></div>
<div lang="en" xml:lang="en">
<p>Let me announce you the immediate availability of the 1.2 stable version  of the Acicrud (Automatic CodeIgniter Create Read Update Delete) library for CodeIgniter. The release 1.2 which the Git commit number is b6602b8889da7f18519a07678a5c935a4b118371 brings the support for CodeIgniter 2.0.x.</p>
<p>The Acicrud library can fully manage a table for which at least the  first normal form is applicable.</p>
<p>Feel free to send your feedback on the Acicrud downloading page :</p>
<ul class="charte">
<li><a href="http://www.nukium.com/acicrud-english/">Go to the Acicrud&#8217;s  English page </a></li>
<li><a href="http://www.nukium.com/acicrud/">Aller sur la page d&#8217;Acicrud  en Français</a></li>
</ul>
<h2>Changelog</h2>
<p>The changelog of the b6602b8889da7f18519a07678a5c935a4b118371 (<strong>v 1.2</strong>) is available below :</p>
<ul class="charte">
<li>Added support for CodeIgniter 2.0.x</li>
</ul>
</div>

 <p><a href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=1689&amp;md5=e3295b24517f891acf9434aed717fb53" title="Flattr" target="_blank"><img src="http://nukium.com/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://nukium.com/developpement-php/codeigniter/acicrud-library-v1-2-codeigniter-released/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<atom:link rel="payment" href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=1689&amp;md5=e3295b24517f891acf9434aed717fb53" type="text/html" />"
	</item>
		<item>
		<title>Tutoriel Acicrud : Utiliser plusieurs bases de données</title>
		<link>http://nukium.com/developpement-php/codeigniter/tutoriel-acicrud-utiliser-plusieurs-base-de-donnees/</link>
		<comments>http://nukium.com/developpement-php/codeigniter/tutoriel-acicrud-utiliser-plusieurs-base-de-donnees/#comments</comments>
		<pubDate>Sat, 08 May 2010 13:31:13 +0000</pubDate>
		<dc:creator>Nukium</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Acicrud]]></category>
		<category><![CDATA[librairie]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[tutoriel]]></category>

		<guid isPermaLink="false">http://nukium.com/?p=1009</guid>
		<description><![CDATA[Tutoriel ACICRUD #5 Depuis la version 1.1, Acicrud est capable de se connecter à n&#8217;importe qu&#8217;elle base de données configurée dans le fichier system/application/database.php. Veuillez noter que cette fonctionnalité est totalement facultative et que la librairie travaillera avec votre base de données par défaut si vous ne définissez aucune base de travail dans votre modèle. [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_silver" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fnukium.com%252Fdeveloppement-php%252Fcodeigniter%252Ftutoriel-acicrud-utiliser-plusieurs-base-de-donnees%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Tutoriel%20Acicrud%20%3A%20Utiliser%20plusieurs%20bases%20de%20donn%C3%A9es%22%20%7D);"></div>
<h2>Tutoriel ACICRUD #5</h2>
<p>Depuis la version 1.1, Acicrud est capable de se connecter à n&#8217;importe qu&#8217;elle base de données configurée dans le fichier <em>system/application/database.php</em>.</p>
<p>Veuillez noter que cette fonctionnalité est totalement facultative et que la librairie travaillera avec votre base de données par défaut si vous ne définissez aucune base de travail dans votre modèle.</p>
<p>Afin d&#8217;utiliser une base de données différente de votre base de données par défaut, il suffit de spécifier le <strong>group</strong> à utiliser au constructeur d&#8217;<a href="http://www.nukium.com/acicrud/">ACICRUD</a>. Dans notre exemple il s&#8217;agiera d&#8217;une base de données nommée &laquo;&nbsp;<strong>rescue_database</strong>&laquo;&nbsp;.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1009code2'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p10092"><td class="code" id="p1009code2"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Exemple_Model <span style="color: #000000; font-weight: bold;">extends</span> Acicrud <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//CONSTRUCTOR   </span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        parent<span style="color: #339933;">::</span>__construct<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'table_name'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'rescue_database'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//CUSTOM METHODS</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>


 <p><a href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=1009&amp;md5=f363ecc13d17fff441c7c64f3354d97e" title="Flattr" target="_blank"><img src="http://nukium.com/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://nukium.com/developpement-php/codeigniter/tutoriel-acicrud-utiliser-plusieurs-base-de-donnees/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=1009&amp;md5=f363ecc13d17fff441c7c64f3354d97e" type="text/html" />"
	</item>
		<item>
		<title>Tutoriel Acicrud : ajouter des custom methods à vos modèles</title>
		<link>http://nukium.com/developpement-php/codeigniter/tutoriel-acicrud-ajouter-des-custom-methods-a-vos-modeles/</link>
		<comments>http://nukium.com/developpement-php/codeigniter/tutoriel-acicrud-ajouter-des-custom-methods-a-vos-modeles/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 18:48:12 +0000</pubDate>
		<dc:creator>Nukium</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Acicrud]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[tutoriel]]></category>

		<guid isPermaLink="false">http://nukium.com/?p=848</guid>
		<description><![CDATA[Tutoriel ACICRUD #5 Dans ce cinquième tutoriel d’utilisation de la librairie ACICURD pour CodeIgniter, nous allons voir comment définir de nouvelles méthodes dans les modèles utilisant ACICRUD et comment profiter de certaines méthodes de la librairie. Création d&#8217;une méthode spécifique Imaginons que vous désiriez sélectionner un champ username dans une table user à partir de [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_silver" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fnukium.com%252Fdeveloppement-php%252Fcodeigniter%252Ftutoriel-acicrud-ajouter-des-custom-methods-a-vos-modeles%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Tutoriel%20Acicrud%20%3A%20ajouter%20des%20custom%20methods%20%C3%A0%20vos%20mod%C3%A8les%20%22%20%7D);"></div>
<h2>Tutoriel ACICRUD #5</h2>
<p>Dans ce cinquième tutoriel d’utilisation de la librairie <a href="http://www.nukium.com/acicrud/" target="_blank">ACICURD</a> pour CodeIgniter, nous allons voir comment définir de nouvelles méthodes dans les modèles utilisant ACICRUD et comment profiter de certaines méthodes de la librairie.</p>
<h2>Création d&#8217;une méthode spécifique</h2>
<p>Imaginons que vous désiriez sélectionner un champ <em>username</em> dans une table <em>user</em> à partir de l&#8217;identifiant de l&#8217;utilisateur <em>id</em>. Nous allons pour cela ajouter une nouvelle méthode dans notre modèle ayant exactement le fonctionnement que nous désirons et s&#8217;appuyant sur la méthode <em>$this-&gt;row()</em> qui exécute la requête <strong>Active Record</strong> et retourne un objet résultat.</p>
<p>Notez qu&#8217;il serait également possible d&#8217;utiliser la méthode <em>getAll()</em> d&#8217;ACICRUD pour arriver à ce résultat.</p>
<p>Voici le code du fichier user.php à placer dans le répertoire models :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p848code4'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p8484"><td class="code" id="p848code4"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> User <span style="color: #000000; font-weight: bold;">extends</span> Acicrud <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//CONSTRUCTOR</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		parent<span style="color: #339933;">::</span>__construct<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'user'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//CUSTOM METHODS</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * Return the username of an user identified by his id
	 *
	 * @param int $id
	 * @return Object
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> get_username<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		try <span style="color: #009900;">&#123;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">// Checking if $id is a valid primary key value</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">checkId</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">// Building the query</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">select</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'username'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">from</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">table</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">where</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">key</span><span style="color: #339933;">,</span> <span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">// Returning the result</span>
			<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">row</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		
&nbsp;
		<span style="color: #009900;">&#125;</span> catch<span style="color: #009900;">&#40;</span>Exception <span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
			<span style="color: #b1b100;">throw</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Throws the ACICRUD's exception</span>
&nbsp;
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Il vous est donc tout à fait possible d&#8217;ajouter vos propres comportements au sein d&#8217;un modèle héritant de la librairie ACICRUD. Notez que dans cet exemple, la méthode s&#8217;appuie également sur le système d&#8217;exceptions géré par ACICRUD. Je vous conseille donc d&#8217;inclure l&#8217;appel de la méthode <em>get_username</em> dans votre contrôleur au sein d&#8217;un bloc try/catch.</p>
<h2>Tutoriel suivant</h2>
<p>» <a href="http://www.nukium.com/codeigniter/tutoriel-acicrud-utiliser-plusieurs-base-de-donnees/">Utiliser plusieurs bases de données</a></p>

 <p><a href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=848&amp;md5=55dccd96e21338a551672b5dffbf673e" title="Flattr" target="_blank"><img src="http://nukium.com/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://nukium.com/developpement-php/codeigniter/tutoriel-acicrud-ajouter-des-custom-methods-a-vos-modeles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=848&amp;md5=55dccd96e21338a551672b5dffbf673e" type="text/html" />"
	</item>
		<item>
		<title>Bonnes pratiques sur la gestion de bases de données sous CodeIgniter</title>
		<link>http://nukium.com/developpement-php/codeigniter/bonnes-pratiques-sur-la-gestion-de-base-de-donnees-sous-codeigniter/</link>
		<comments>http://nukium.com/developpement-php/codeigniter/bonnes-pratiques-sur-la-gestion-de-base-de-donnees-sous-codeigniter/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 22:16:59 +0000</pubDate>
		<dc:creator>Nukium</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Acicrud]]></category>
		<category><![CDATA[Bonnes pratiques]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmation Orientée Objet]]></category>
		<category><![CDATA[SGBD]]></category>
		<category><![CDATA[tutoriel]]></category>

		<guid isPermaLink="false">http://nukium.com/?p=767</guid>
		<description><![CDATA[Cet article illustre trois bonnes pratiques et astuces concernant la gestion et la configuration de bases de données sous le framework PHP CodeIgniter au travers de la création de modèles utilisant la classe Active Record.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_silver" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fnukium.com%252Fdeveloppement-php%252Fcodeigniter%252Fbonnes-pratiques-sur-la-gestion-de-base-de-donnees-sous-codeigniter%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Bonnes%20pratiques%20sur%20la%20gestion%20de%20bases%20de%20donn%C3%A9es%20sous%20CodeIgniter%22%20%7D);"></div>
<p>Je vous propose au travers de ce tutoriel de mettre en évidence <strong>3 bonnes pratiques</strong> concernant la gestion de base de données sous <strong>CodeIgniter</strong> et plus particulièrement par rapport à la création de modèles basés sur la classe Active Record.</p>
<p>Je précise avant tout que les points évoqués ci-après sont pleinement compatibles avec <strong>ACICRUD</strong>, ma <a title="Acicrud library" href="http://www.nukium.com/acicrud/" target="_blank">librairie d&#8217;abstraction de modèles pour CodeIgniter</a>.</p>
<h2>Gérer efficacement les préfixes de tables</h2>
<p>Afin de débuter cet article, parlons des préfixes de tables pour vos applications. Puisqu&#8217;il est admit par le simple fait d&#8217;utiliser une librairie d&#8217;abstraction de base de données comme Active Record sous CodeIgniter, que votre base de données est abstraite, c&#8217;est à dire que l&#8217;on ne connaît pas en théorie quel système de gestion de base de données est utilisé en production, je considère également admit que vous ne devriez pas connaître la liste des tables présentes dans la base de données de production (ou du moins qu&#8217;il ne faut pas en tenir compte lors de la création du schéma de base de données de votre application).</p>
<p>Ainsi, afin d&#8217;éviter toute collision de table avec un autre système utilisant la même base de données, il devient très utile de préfixer l&#8217;ensemble des tables de notre application par une chaîne unique mais explicite.</p>
<p>Pour illustrer ceci, nous allons partir du principe que nous concevons une application nommée &laquo;&nbsp;Gestion&nbsp;&raquo; pour un client donné. Nous ne pouvons pas connaître à l&#8217;avance la liste des tables dans la base de données qu&#8217;utilise déjà notre client pour ses autres applications.</p>
<p>Aussi, afin d&#8217;éviter toute collision sur les noms de tables, nous allons choisir de préfixer nos tables avec la chaîne &laquo;&nbsp;gestion_&nbsp;&raquo;.</p>
<p>C&#8217;est ainsi que toutes nos tables SQL devront être créées avec ce préfixe, comme par exemple &laquo;&nbsp;gestion_user&nbsp;&raquo;, &laquo;&nbsp;gestion_user_acl&nbsp;&raquo;, etc. De cette manière, si la base de données de production comporte déjà une table nommée &laquo;&nbsp;user&nbsp;&raquo;, cela ne générera aucun conflit.</p>
<p>Ceci est très facilement gérable avec <strong>CodeIgniter</strong>, en effet il suffit d&#8217;indiquer le préfixe de table à utiliser dans le fichier de configuration <em>database.php</em>. Ainsi, <strong>Active Record </strong>utilisera automatiquement le préfixe de nos tables pour lors de la <strong>génération de requêtes SQL</strong>.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p767code5'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p7675"><td class="code" id="p767code5"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'production'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'hostname'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;localhost&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'production'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'username'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;root&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'production'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'password'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;password&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'production'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'database'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;the_production_database&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'production'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'dbdriver'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;mysql&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'production'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'dbprefix'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;gestion_&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'production'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'pconnect'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'production'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'db_debug'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'production'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cache_on'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'production'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cachedir'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'production'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'char_set'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;utf8&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'production'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'dbcollat'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;utf8_general_ci&quot;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h2>Ne pas coder en dur les noms de table !</h2>
<p>Voici une règle simple mais souvent oubliée : <strong>éviter de coder en dur</strong>. Ceci est particulièrement valable pour les noms de tables !</p>
<p>Voici comment profiter simplement de la programmation orientée objet afin de transformer notre nom de table en attribut de classe de notre modèle.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p767code6'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p7676"><td class="code" id="p767code6"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> User <span style="color: #000000; font-weight: bold;">extends</span> Model <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000088;">$table</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'user'</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        parent<span style="color: #339933;">::</span>__construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> example<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    	<span style="color: #666666; font-style: italic;">//$this-&gt;table is used instead of the 'user' string.</span>
        <span style="color: #666666; font-style: italic;">//Active Record will use `gestion_user`</span>
    	<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">select</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">from</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">table</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    	<span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">result</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Ainsi, à chaque fois que nous aurons besoin d&#8217;appeler la table utilisée par le modèle, il suffira d&#8217;utiliser <em>$this-&gt;table,</em> ce qui aura également comme avantage de rendre les <strong>méthodes du modèle plus génériques</strong>.</p>
<h2>Utiliser un préfixe de table avec la classe Database</h2>
<p>Il existe certains cas de figures ou les méthodes évoquées ci-dessus ne suffisent pas totalement. C&#8217;est notamment le cas lorsqu&#8217;une requête SQL doit être effectuée sur plusieurs tables ou lorsque le <strong>query builder d&#8217;Active Record</strong> n&#8217;est plus utilisé.</p>
<p>Prenons un exemple concret en sélectionnant des données dans la table gestion_user via la méthode <em>query()</em>. Dans ce cas précis, le préfixe de table ne sera pas automatiquement ajouté par <strong>CodeIgniter</strong> puisque <em>query()</em> permet justement d&#8217;écrire manuellement une requête SQL.</p>
<p>Il faut alors utiliser <em>$this->db->dbprefix()</em> afin de générer le préfixe de table adéquat.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p767code7'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p7677"><td class="code" id="p767code7"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> User <span style="color: #000000; font-weight: bold;">extends</span> Model <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000088;">$table</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'user'</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        parent<span style="color: #339933;">::</span>__construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> manuel_query<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    	<span style="color: #666666; font-style: italic;">//One way</span>
    	<span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'SELECT * FROM `'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">dbprefix</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">table</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'` LIMIT 0 , 30'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    	<span style="color: #666666; font-style: italic;">//Second way</span>
    	<span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'SELECT * FROM `'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">dbprefix</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">table</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'` LIMIT 0 , 30'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><em>Notez que les deux méthodes produisent un résultat identique.</em></p>
<h2>Conclusion</h2>
<p>Il existe de nombreuses méthodes permettant d&#8217;améliorer la <strong>qualité et la généricité des modèles sous CodeIgniter</strong>, et nous n&#8217;abordons même pas les notions <strong>d&#8217;ORM</strong> ou de <strong>CRUD</strong> dans cet article. Quoiqu&#8217;il en soit, je suis sûr que chaque <strong>développeur CodeIgniter</strong> utilise ses propres techniques, aussi n&#8217;hésitez pas à partager les vôtres en commentant ce billet <img src='http://nukium.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

 <p><a href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=767&amp;md5=330c1a5efa849f198a125e6a0f2cba02" title="Flattr" target="_blank"><img src="http://nukium.com/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://nukium.com/developpement-php/codeigniter/bonnes-pratiques-sur-la-gestion-de-base-de-donnees-sous-codeigniter/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<atom:link rel="payment" href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=767&amp;md5=330c1a5efa849f198a125e6a0f2cba02" type="text/html" />"
	</item>
		<item>
		<title>Supprimer des données avec ACICRUD</title>
		<link>http://nukium.com/developpement-php/codeigniter/supprimer-des-donnees-avec-acicrud/</link>
		<comments>http://nukium.com/developpement-php/codeigniter/supprimer-des-donnees-avec-acicrud/#comments</comments>
		<pubDate>Tue, 26 May 2009 18:05:50 +0000</pubDate>
		<dc:creator>Nukium</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Acicrud]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[tutoriel]]></category>

		<guid isPermaLink="false">http://nukium.com/?p=254</guid>
		<description><![CDATA[Tutoriel #4 d'utilisation de la librairie ACICRUD pour CodeIgniter, dans ce tutoriel nous allons voir comment supprimer simplement une ligne en base de données.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_silver" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fnukium.com%252Fdeveloppement-php%252Fcodeigniter%252Fsupprimer-des-donnees-avec-acicrud%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Supprimer%20des%20donn%C3%A9es%20avec%20ACICRUD%22%20%7D);"></div>
<h2>Tutoriel ACICRUD #4</h2>
<p>Dans ce quatrième tutoriel d&#8217;utilisation de la librairie ACICURD pour CodeIgniter, nous verrons tout d&#8217;abord comment supprimer une ligne en base de données, puis comment supprimer un ensemble de données grâce à la méthode <strong>delete()</strong>.</p>
<p>Pour supprimer un élement, nous allons simplement lire une ligne identifiée par son id (en utilisant la méthode <strong>read()</strong> afin que les processus de vérification de l&#8217;existence de l&#8217;identifiant soient exécutés) puis appliquer sur l&#8217;instance de notre modèle la méthode <strong>delete()</strong>.</p>
<p>Pour cela voici le code d&#8217;un contrôleur <strong>CodeIgniter</strong> qui possède une méthode <em>deleteElement($id)</em> prenant comme paramètre d&#8217;entrée l&#8217;identifiant de la ligne à supprimer :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p254code8'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2548"><td class="code" id="p254code8"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Element <span style="color: #000000; font-weight: bold;">extends</span> Controller <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		parent<span style="color: #339933;">::</span>__construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">model</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'elementModel'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> deleteElement<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		try <span style="color: #009900;">&#123;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">//Try to read the row identified by $id</span>
			<span style="color: #000088;">$element</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">elementModel</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">read</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">//Delete the database row</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">elementModel</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">delete</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$element</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #009900;">&#125;</span> catch<span style="color: #009900;">&#40;</span>Exception <span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
			<a href="http://www.php.net/die"><span style="color: #990000;">die</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Wrong id'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>La <strong>suppression de plusieurs lignes en base de données</strong> est également possible avec la méthode delete(), pour cela il suffit de fournir à la méthode un <strong>tableau associatif</strong> représentant les données <strong>Active Record</strong> de la <strong>clause WHERE</strong> à utiliser pour la suppression. </p>
<p>L&#8217;exemple ci-dessous supprimera les données pour lesquelles le champ is_valid est différent de 1.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p254code9'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2549"><td class="code" id="p254code9"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Element <span style="color: #000000; font-weight: bold;">extends</span> Controller <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		parent<span style="color: #339933;">::</span>__construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">model</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'elementModel'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> deleteInvalidRows<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">//Delete rows via a custom WHERE clause</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">elementModel</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">delete</span><span style="color: #009900;">&#40;</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'is_valid !='</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<h2>Tutoriel suivant</h2>
<p>» <a href="http://www.nukium.com/codeigniter/tutoriel-acicrud-ajouter-des-custom-methods-a-vos-modeles/">Ajouter des custom methods à vos modèles</a></p>

 <p><a href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=254&amp;md5=3e1bc3aa927631d830ccb096d8bafe6b" title="Flattr" target="_blank"><img src="http://nukium.com/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://nukium.com/developpement-php/codeigniter/supprimer-des-donnees-avec-acicrud/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=254&amp;md5=3e1bc3aa927631d830ccb096d8bafe6b" type="text/html" />"
	</item>
		<item>
		<title>Insérer des données avec Acicrud</title>
		<link>http://nukium.com/developpement-php/codeigniter/inserer-des-donnees-avec-acicrud/</link>
		<comments>http://nukium.com/developpement-php/codeigniter/inserer-des-donnees-avec-acicrud/#comments</comments>
		<pubDate>Fri, 08 May 2009 12:04:39 +0000</pubDate>
		<dc:creator>Nukium</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Acicrud]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://nukium.com/?p=219</guid>
		<description><![CDATA[Tutoriel ACICRUD #3 : Insérer des données dans une base de données avec Acicrud.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_silver" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fnukium.com%252Fdeveloppement-php%252Fcodeigniter%252Finserer-des-donnees-avec-acicrud%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Ins%C3%A9rer%20des%20donn%C3%A9es%20avec%20Acicrud%22%20%7D);"></div>
<h2>Tutoriel ACICRUD #3</h2>
<p>Voici le troisième tutoriel d&#8217;utilisation d&#8217;ACICRUD, vous pouvez si vous le désirez consulter les <a href="http://www.nukium.com/acicrud/#tutoriels">tutoriels précédents</a>.</p>
<p>Dans ce tutoriel, nous allons voir comment créer une ligne en base de données grâce à la fonction create() de la librairie ACICRUD pour CodeIgniter.</p>
<p>Pour cela, nous allons imaginer que nous disposons d&#8217;une page HTML contenant un formulaire permettant de renseigner le titre ainsi que la description de notre exemple.</p>
<p>Pour rappel : Exemple { <span style="text-decoration: underline;">idExemple</span>, title, description, date }</p>
<p>Nous allons donc créer le code permettant de récupérer les données du formulaire et de créer la ligne en base de données dans un contrôleur CodeIgniter. Notez qu&#8217;il n&#8217;est pas nécessaire de définir l&#8217;objet temporaire $o ni de préciser qu&#8217;il possède un attribut représentant la clé primaire. ACICRUD n&#8217;a besoin que des données à insérer pour exécuter la fonction create().</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p219code10'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p21910"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
</pre></td><td class="code" id="p219code10"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Form <span style="color: #000000; font-weight: bold;">extends</span> Controller <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> index<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>	
		<span style="color: #666666; font-style: italic;">//Form_validation stuff</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">library</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'form_validation'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">form_validation</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set_rules</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'title'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Title'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'required'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">form_validation</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set_rules</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'description'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Description'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'required'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">form_validation</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">run</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">view</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'myform'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">else</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">//Validation success</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">model</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'exemple'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #000088;">$o</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">input</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">post</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'title'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$o</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">description</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">input</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">post</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'description'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$o</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">date</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/date"><span style="color: #990000;">date</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Y-m-d H:i:s&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">//Creating the row in the database</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">exemple</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">create</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$o</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<h2>Tutoriel suivant</h2>
<p>» <a href="http://www.nukium.com/codeigniter/supprimer-des-donnees-avec-acicrud/">Supprimer des données avec Acicrud</a></p>

 <p><a href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=219&amp;md5=cdf26ce11fa693c784abcbd686f96b6b" title="Flattr" target="_blank"><img src="http://nukium.com/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://nukium.com/developpement-php/codeigniter/inserer-des-donnees-avec-acicrud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=219&amp;md5=cdf26ce11fa693c784abcbd686f96b6b" type="text/html" />"
	</item>
		<item>
		<title>Lire facilement des données avec Acicrud</title>
		<link>http://nukium.com/developpement-php/codeigniter/lire-facilement-des-donnees-avec-acicrud/</link>
		<comments>http://nukium.com/developpement-php/codeigniter/lire-facilement-des-donnees-avec-acicrud/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 19:49:52 +0000</pubDate>
		<dc:creator>Nukium</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Acicrud]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://nukium.com/?p=193</guid>
		<description><![CDATA[Tutoriel ACICRUD #2 : Lecture de données à partir d'une base de données avec ACICRUD.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_silver" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fnukium.com%252Fdeveloppement-php%252Fcodeigniter%252Flire-facilement-des-donnees-avec-acicrud%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Lire%20facilement%20des%20donn%C3%A9es%20avec%20Acicrud%22%20%7D);"></div>
<h2>Tutoriel ACICRUD #2</h2>
<p>Dans ce deuxième tutoriel sur l&#8217;utilisation de la librairie <a href="http://www.nukium.com/acicrud/">Acicrud</a> nous allons voir comment lire des données depuis la base de données.</p>
<p>Comme expliqué dans les <a href="http://www.nukium.com/tag/acicrud/">précédents billets</a>, le principe d&#8217;Acicrud est d&#8217;ajouter une couche applicative objet dans les modèles afin de générer des objets fidèles au modèle de données représenté par la base de données.</p>
<p>Concrètement, Acicrud permet d&#8217;intéragir avec la base de données en  manipulant directement des objets PHP.</p>
<h2>Prérequis</h2>
<p>Nous supposerons utiliser le modèle exemple précédemment créé dans le <a href="http://www.nukium.com/codeigniter/installation-de-la-librairie-acicrud-et-creation-dun-modele/">turoriel #1</a>.</p>
<p>Nous supposerons également que notre table SQL est bâtie sur le modèle de donnée suivant :</p>
<p>Exemple { <span style="text-decoration: underline;">idExemple</span>, title, description, date }</p>
<h2>Lecture d&#8217;une ligne en base de données</h2>
<p>La lecture d&#8217;une ligne se fait à partir de son <strong>identifiant (clé primaire)</strong> ou à partir d&#8217;un <strong>tableau associatif représentant la clause WHERE</strong> à utiliser (<strong>attention read est volontairement prévu pour lire une et une seule entrée</strong>), la méthode read() retourne un objet fidèle à la ligne en base de données :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p193code11'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p19311"><td class="code" id="p193code11"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">model</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'exemple'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
try <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$o</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">exemple</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">read</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Primary key id</span>
<span style="color: #009900;">&#125;</span> catch<span style="color: #009900;">&#40;</span>Exception <span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Wrong ID&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<a href="http://www.php.net/var_dump"><span style="color: #990000;">var_dump</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$o</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Produces</span>
<span style="color: #666666; font-style: italic;">/*
object(stdClass) (4) {
  [&quot;idExemple&quot;]=&gt;
  string(2) &quot;1&quot;
  [&quot;title&quot;]=&gt;
  string(8) &quot;title...&quot;
  [&quot;description&quot;]=&gt;
  string(15) &quot;description...&quot;
  [&quot;date&quot;]=&gt;
  string(19) &quot;2009-04-30 21:00:00&quot;
}
*/</span>
&nbsp;
try <span style="color: #009900;">&#123;</span>
	<span style="color: #666666; font-style: italic;">//Associative array method produces a custom WHERE clause. Be careful, read is intended to read one unique entry.</span>
	<span style="color: #000088;">$o</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">exemple</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">read</span><span style="color: #009900;">&#40;</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'title'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'title...'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span> catch<span style="color: #009900;">&#40;</span>Exception <span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;No result found.&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<a href="http://www.php.net/var_dump"><span style="color: #990000;">var_dump</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$o</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Produces</span>
<span style="color: #666666; font-style: italic;">/*
object(stdClass) (4) {
  [&quot;idExemple&quot;]=&gt;
  string(2) &quot;1&quot;
  [&quot;title&quot;]=&gt;
  string(8) &quot;title...&quot;
  [&quot;description&quot;]=&gt;
  string(15) &quot;description...&quot;
  [&quot;date&quot;]=&gt;
  string(19) &quot;2009-04-30 21:00:00&quot;
}
*/</span>
&nbsp;
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>L&#8217;objet $o représente physiquement l&#8217;élément lu en base de données. Ses attributs portent les noms de champs et ses valeurs sont les données de la ligne.</p>
<h2>Lecture de toutes les lignes d&#8217;une table en base de données</h2>
<p>Il est très fréquent de devoir récupérer l&#8217;ensemble des données d&#8217;une table. Acicrud fournit une méthode pour cela s&#8217;appelant getAll().</p>
<p>Cette méthode prend trois paramètres <strong>optionnels</strong> qui sont $limit, $order et $where.</p>
<p>$limit permet d&#8217;effectuer un LIMIT SQL afin de limiter le nombre de lignes retournées par la requête, il suffit de passer un nombre.</p>
<p>$order est un tableau associatif qui permet de trier les données, par exemple pour trier par title ascendant, il faudra passer un tableau associatif :</p>
<p>array(&#8216;title&#8217;  => &#8216;ASC&#8217;).</p>
<p>Il est également possible d&#8217;indiquer plusieurs tris : array(&#8216;date&#8217; => &#8216;DESC&#8217;, &#8216;title&#8217;  => &#8216;ASC&#8217; ).</p>
<p>Le paramètre $where permet d&#8217;ajouter une <strong>clause WHERE personnalisée</strong>, il suffit de passer un tableau indexé de la même manière qu&#8217;avec la librairie <strong>Active Record</strong> de <strong>CodeIgniter</strong>.</p>
<p>La métode getAll() va retourner un tableau d&#8217;objets fidèles qui peuvent par exemple être facilement passés à une vue pour affichage.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p193code12'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p19312"><td class="code" id="p193code12"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">model</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'exemple'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
try <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//Retrieve an array of objects, this array can be passed to a view for displaying data</span>
	<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">exemple</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getAll</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #339933;">,</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'date'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'DESC'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<a href="http://www.php.net/var_dump"><span style="color: #990000;">var_dump</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
		<span style="color: #666666; font-style: italic;">//Produces</span>
		<span style="color: #666666; font-style: italic;">/*
		object(stdClass) (4) {
		  [&quot;idExemple&quot;]=&gt;
		  string(2) &quot;the id&quot;
		  [&quot;title&quot;]=&gt;
		  string(8) &quot;the title&quot;
		  [&quot;description&quot;]=&gt;
		  string(15) &quot;the description&quot;
		  [&quot;date&quot;]=&gt;
		  string(19) &quot;the date&quot;
		}
		*/</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span> catch<span style="color: #009900;">&#40;</span>Exception <span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$e</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Support and feedback are both available in English and in French.</p>
<h2>Tutoriel suivant</h2>
<p>» <a href="http://www.nukium.com/codeigniter/inserer-des-donnees-avec-acicrud/">Insérer des données avec Acicrud</a></p>

 <p><a href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=193&amp;md5=39a0dca66ab60c1d5dd600c5fd51a627" title="Flattr" target="_blank"><img src="http://nukium.com/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://nukium.com/developpement-php/codeigniter/lire-facilement-des-donnees-avec-acicrud/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=193&amp;md5=39a0dca66ab60c1d5dd600c5fd51a627" type="text/html" />"
	</item>
		<item>
		<title>Installation de la librairie ACICRUD et création d&#8217;un modèle</title>
		<link>http://nukium.com/developpement-php/codeigniter/installation-de-la-librairie-acicrud-et-creation-dun-modele/</link>
		<comments>http://nukium.com/developpement-php/codeigniter/installation-de-la-librairie-acicrud-et-creation-dun-modele/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 18:11:00 +0000</pubDate>
		<dc:creator>Nukium</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Acicrud]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[tutoriel]]></category>

		<guid isPermaLink="false">http://nukium.com/?p=182</guid>
		<description><![CDATA[Tutoriel ACICRUD #1 : Installation de la librairie et création d'un modèle avec la librairie ACICRUD.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_silver" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fnukium.com%252Fdeveloppement-php%252Fcodeigniter%252Finstallation-de-la-librairie-acicrud-et-creation-dun-modele%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Installation%20de%20la%20librairie%20ACICRUD%20et%20cr%C3%A9ation%20d%27un%20mod%C3%A8le%22%20%7D);"></div>
<h2>Tutoriel ACICRUD #1</h2>
<p>Dans ce premier tutoriel sur l&#8217;utilisation de la librairie <a href="http://www.nukium.com/acicrud/">ACICRUD</a> pour CodeIgniter nous allons voir comment installer la librairie dans votre application et comment créer un modèle utilisant la librairie.</p>
<h2>Installation d&#8217;ACICRUD</h2>
<p>L&#8217;installation d&#8217;ACICRUD est relativement classique, téléchargez la dernière version de la librairie sur <a href="http://www.nukium.com/acicrud/">la page dédiée</a>, décompréssez l&#8217;archive et placez le fichier Acicrud.php dans le répertoire <em>system/application/libraries</em>.</p>
<p>Je vous conseille d&#8217;autocharger ACICURD ainsi que la librairie de base de données afin de ne plus s&#8217;en préoccuper, pour cela rajouter dans le fichier <em>system/application/config/autoload.php</em></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p182code13'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p18213"><td class="code" id="p182code13"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$autoload</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'libraries'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'database'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'acicrud'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>À partir de là, la librairie est installée et sera disponible dans l&#8217;ensemble de votre application.</p>
<h2>Création d&#8217;un modèle</h2>
<p>La création d&#8217;un modèle est relativement simple, il suffit de faire hériter le modèle de la classe Acicrud au lieu de Model.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p182code14'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p18214"><td class="code" id="p182code14"><pre class="php" style="font-family:monospace;">&nbsp;
<span style="color: #339933;">*</span> <span style="color: #339933;">@</span>copyright © <span style="color: #cc66cc;">2008</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">2009</span> Samuel Sanchez <span style="color: #339933;">-</span> All rights reserved <span style="color: #339933;">/</span> Tous droits réservés
<span style="color: #339933;">*</span> <span style="color: #339933;">@</span>tutorial Set the <span style="color: #000000; font-weight: bold;">class</span> name and the constructor method name to your model name<span style="color: #339933;">,</span> then <a href="http://www.php.net/rename"><span style="color: #990000;">rename</span></a> <span style="color: #0000ff;">'table_name'</span> into your sql table name<span style="color: #339933;">.</span>
<span style="color: #339933;">*</span>
<span style="color: #339933;">*/</span>
<span style="color: #000000; font-weight: bold;">class</span> Exemple <span style="color: #000000; font-weight: bold;">extends</span> Acicrud <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//CONSTRUCTOR</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Exemple<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		parent<span style="color: #339933;">::</span><span style="color: #004000;">Acicrud</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'table_name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//CUSTOM METHODS</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Il suffit d&#8217;indiquer dans le constructeur le nom de la table que le modèle doit utiliser. Le modèle pourra bien-sûr accéder à n&#8217;importe qu&#8217;elle table de la base de données dans une custom method.</p>
<h2>Chargement du modèle</h2>
<p>Il ne reste plus qu&#8217;à charger le modèle dans votre application :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p182code15'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p18215"><td class="code" id="p182code15"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">model</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'exemple'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Support and feedback are both available in English and in French.</p>
<h2>Tutoriel suivant</h2>
<p>» <a href="http://www.nukium.com/codeigniter/lire-facilement-des-donnees-avec-acicrud/">Lire facilement des données avec Acicrud</a></p>

 <p><a href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=182&amp;md5=48d52a0f7cdc2f8d2663f0b301b2bbe2" title="Flattr" target="_blank"><img src="http://nukium.com/wordpress/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://nukium.com/developpement-php/codeigniter/installation-de-la-librairie-acicrud-et-creation-dun-modele/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" href="http://nukium.com/wordpress/?flattrss_redirect&amp;id=182&amp;md5=48d52a0f7cdc2f8d2663f0b301b2bbe2" type="text/html" />"
	</item>
	</channel>
</rss>

