<?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>Kromack &#187; Développement</title>
	<atom:link href="http://www.kromack.com/tag/developpement/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kromack.com</link>
	<description>Ressources et tutoriaux : Web 2.0 - PHP - CodeIgniter - Webdesign</description>
	<lastBuildDate>Fri, 23 Jul 2010 21:29:38 +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>Astuce CodeIgniter : définir le timezone de la base de données</title>
		<link>http://www.kromack.com/codeigniter/astuce-codeigniter-definir-le-timezone-de-la-base-de-donnees/</link>
		<comments>http://www.kromack.com/codeigniter/astuce-codeigniter-definir-le-timezone-de-la-base-de-donnees/#comments</comments>
		<pubDate>Sun, 23 May 2010 12:59:54 +0000</pubDate>
		<dc:creator>Kromack</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[astuce]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[tutoriel]]></category>

		<guid isPermaLink="false">http://www.kromack.com/?p=1072</guid>
		<description><![CDATA[

Voici une astuce publiée sur le forum de CodeIgniter qui permet de définir le timezone à utiliser par la base de données un seule fois pour tous les modèles de l&#8217;application.
Pour réaliser cette tâche, l&#8217;auteur à simplement dérivé la classe Model de CodeIgniter afin d&#8217;exécuter la requête SQL modifiant le timezone à la construction de [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_monochrome" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kromack.com%252Fcodeigniter%252Fastuce-codeigniter-definir-le-timezone-de-la-base-de-donnees%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Astuce%20CodeIgniter%20%3A%20d%C3%A9finir%20le%20timezone%20de%20la%20base%20de%20donn%C3%A9es%20%22%20%7D);"></div>
<p>Voici une astuce publiée sur le forum de <strong>CodeIgniter</strong> qui permet de <strong>définir le timezone</strong> à utiliser par la <strong>base de données</strong> un seule fois pour <strong>tous les modèles de l&#8217;application</strong>.</p>
<p>Pour réaliser cette tâche, l&#8217;auteur à simplement <strong>dérivé</strong> la <strong>classe Model</strong> de <strong>CodeIgniter</strong> afin d&#8217;exécuter la requête SQL modifiant le <strong>timezone</strong> à la construction de l&#8217;objet. Ainsi, comme lorsqu&#8217;on utilise <a href="http://www.kromack.com/acicrud/">ACICRUD</a>, les modèles de l&#8217;application doivent <strong>étendre la classe mère</strong> au lieu de la <strong>classe Model</strong>.</p>
<p>Voici l&#8217;exemple de code proposé par <a href="http://codeigniter.com/forums/member/129164/" rel="nofollow">flaky</a> :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1072code2'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p10722"><td class="code" id="p1072code2"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Master_model <span style="color: #000000; font-weight: bold;">extends</span> Model<span style="color: #000000;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
        parent<span style="color: #000000;">::</span>__construct<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
        <span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">set_timezone</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> set_timezone<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
        <span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">db</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #000000;">&#40;</span><span style="color: #008200;">&quot;SET time_zone='+0:00'&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Some_model <span style="color: #000000; font-weight: bold;">extends</span> Master_model<span style="color: #000000;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
        parent<span style="color: #000000;">::</span>__construct<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p><em>Voir le <a rel="nofollow" href="http://codeigniter.com/forums/viewthread/150948/">post original</a>.</em></p>

]]></content:encoded>
			<wfw:commentRss>http://www.kromack.com/codeigniter/astuce-codeigniter-definir-le-timezone-de-la-base-de-donnees/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intégration de MongoDB à CodeIgniter</title>
		<link>http://www.kromack.com/codeigniter/integration-de-mongodb-a-codeigniter/</link>
		<comments>http://www.kromack.com/codeigniter/integration-de-mongodb-a-codeigniter/#comments</comments>
		<pubDate>Sat, 15 May 2010 13:13:59 +0000</pubDate>
		<dc:creator>Kromack</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[SGBD]]></category>

		<guid isPermaLink="false">http://www.kromack.com/?p=1046</guid>
		<description><![CDATA[

MongoDB est un gestionnaire de base de données &#171;&#160;NoSQL&#160;&#187; orientée documents dans la lignée de CouchDB et Riak. Ces SGBD dits SchemaLess permettent de stocker des objets dynamiques sous forme de Hash (notamment au format JSON) indépendamment de leur structure. Il n&#8217;existe donc plus de contraintes d&#8217;évolution de tables comme c&#8217;est le cas par exemple [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_monochrome" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kromack.com%252Fcodeigniter%252Fintegration-de-mongodb-a-codeigniter%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Int%C3%A9gration%20de%20MongoDB%20%C3%A0%20CodeIgniter%22%20%7D);"></div>
<p><img class="alignright size-full wp-image-1048" title="Powered Mongo DB" src="http://www.kromack.com/wordpress/wp-content/uploads/2010/05/PoweredMongoDBbrown66.png" alt="Powered Mongo DB" width="168" height="79" /><strong>MongoDB</strong> est un <strong>gestionnaire de base de données</strong> &laquo;&nbsp;<strong>NoSQL</strong>&nbsp;&raquo; <strong>orientée documents</strong> dans la lignée de <strong>CouchDB</strong> et <strong>Riak</strong>. Ces <strong>SGBD </strong>dits <strong>SchemaLess</strong> permettent de stocker des objets dynamiques sous forme de <strong>Hash</strong> (notamment au format <strong>JSON</strong>) indépendamment de leur structure. Il n&#8217;existe donc plus de contraintes d&#8217;évolution de tables comme c&#8217;est le cas par exemple avec <strong>MySQL</strong>.</p>
<p>Ainsi, la mise à jour des objets peut être effectuée dynamiquement (ajouts de champs par exemple) sans impacts sur le stockage de ceux-ci.</p>
<p><strong>MongoDB</strong> (qui est écrite en <strong>C++</strong>) a pour avantages d&#8217;être <strong>Open Source</strong> et de présenter de très bonnes performances.</p>
<p>Si vous désirez intégrer <strong>MongoDB</strong> à vos applications <strong>CodeIgniter</strong>, sachez qu&#8217;il existe déjà plusieurs <strong>ressources et librairies</strong> facilitant cette tâche !</p>
<ul class="charte">
<li><a href="http://bitbucket.org/alexbilbie/codeigniter-mongo-library/wiki/Home" target="_blank">CodeIgniter Mongo Library</a></li>
<li><a href="http://alexbilbie.blogs.lincoln.ac.uk/2010/04/09/mongodb-codeigniter-101-part-1/" target="_blank">Tutoriel MongoDB + CodeIgniter</a></li>
<li><a href="http://stackoverflow.com/questions/2248789/mongodb-and-codeigniter" target="_blank">Thread sur StackOverflow</a></li>
</ul>
<p>Bonne intégration ! <img src='http://www.kromack.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

]]></content:encoded>
			<wfw:commentRss>http://www.kromack.com/codeigniter/integration-de-mongodb-a-codeigniter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interdire la mise en cache des fichiers SWF et XML</title>
		<link>http://www.kromack.com/developpement/interdire-la-mise-en-cache-des-fichiers-swf-et-xml/</link>
		<comments>http://www.kromack.com/developpement/interdire-la-mise-en-cache-des-fichiers-swf-et-xml/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 17:22:48 +0000</pubDate>
		<dc:creator>Kromack</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[tutoriel]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.kromack.com/?p=943</guid>
		<description><![CDATA[

La problématique
Lorsque des animations Flash (SWF) utilisent des fichiers XML pour afficher du contenu dynamique et que ce même fichier XML est généré dynamiquement, il est classique que certains navigateurs gardent en cache l&#8217;un ou l&#8217;autre et n&#8217;affichent pas les modifications de contenu en temps réel.
Ce mécanisme de cache est tout à fait classique sur [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_monochrome" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kromack.com%252Fdeveloppement%252Finterdire-la-mise-en-cache-des-fichiers-swf-et-xml%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Interdire%20la%20mise%20en%20cache%20des%20fichiers%20SWF%20et%20XML%22%20%7D);"></div>
<h2>La problématique</h2>
<p>Lorsque des<strong> animations Flash</strong> (<strong>SWF</strong>) utilisent des <strong>fichiers XML</strong> pour afficher du <strong>contenu dynamique</strong> et que ce même fichier XML est généré dynamiquement, il est classique que certains navigateurs<strong> gardent en cache</strong> l&#8217;un ou l&#8217;autre et n&#8217;affichent pas les modifications de contenu en <strong>temps réel</strong>.</p>
<p>Ce mécanisme de <strong>cache</strong> est tout à fait classique sur le web, en revanche il peut devenir problématique si les utilisateurs d&#8217;un <strong>Backoffice</strong> (par exemple) ne peuvent pas voir le rendu final de leurs modifications sans vider leur cache, surtout s&#8217;ils sont néophytes.</p>
<p>Heureusement il existe une <strong>directive Apache</strong> permettant d&#8217;interdire la <strong>mise en cache</strong> de certains types de fichiers. Cette détection, basée sur l&#8217;extension du fichier vas permettre d&#8217;envoyer des instructions (<strong>headers</strong>) au navigateur<strong> interdisant la mise en cache</strong> soit du fichier <strong>swf</strong>, soit du fichier <strong>xml</strong>, soit des deux. Ainsi, à chaque rafraichissement de la page, les deux fichiers seront re-téléchargés par le client.</p>
<p>Ce mécanisme <strong>garantit</strong> donc que les modifications du contenu de l&#8217;<strong>animation Flash</strong> sera systématiquement visible par le client.</p>
<h2>Mise en place du code dans un fichier .htaccess</h2>
<p>Les <strong>instructions Apache</strong> sont à placer dans un fichier <a href="http://www.kromack.com/tag/htaccess/">.htaccess</a> à la racine de votre serveur web. Vous pouvez ajouter ou supprimer des extensions à votre convenance, veillez simplement à les séparer par le caractère &laquo;&nbsp;<strong>|</strong>&laquo;&nbsp;.</p>
<p><span class="icon-information">Si vous n’avez pas de fichier htaccess à la racine de votre FTP, créez  simplement un fichier nommé <strong>.htaccess</strong> à l’aide d’un  éditeur de texte, puis transférez le via un logiciel FTP.</span></p>
<p>Voici le code à placer dans votre fichier <img src='http://www.kromack.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

<div class="wp_codebox_msgheader"><span class="right"><sup></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p943code4'); return false;">View Code</a> APACHE</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p9434"><td class="code" id="p943code4"><pre class="apache" style="font-family:monospace;">&lt;<span style="color: #000000; font-weight:bold;">FilesMatch</span> <span style="color: #7f007f;">&quot;<span style="color: #000099; font-weight: bold;">\.</span>(swf|xml)$&quot;</span>&gt;
 <span style="color: #00007f;">ExpiresDefault</span> A0
 <span style="color: #00007f;">Header</span> set Cache-Control <span style="color: #7f007f;">&quot;no-store, no-cache, must-revalidate, max-age=0&quot;</span>
 <span style="color: #00007f;">Header</span> set Pragma <span style="color: #7f007f;">&quot;no-cache&quot;</span>
&lt;/<span style="color: #000000; font-weight:bold;">FilesMatch</span>&gt;</pre></td></tr></table></div>


]]></content:encoded>
			<wfw:commentRss>http://www.kromack.com/developpement/interdire-la-mise-en-cache-des-fichiers-swf-et-xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutoriel jQuery : appliquer un événement sur plusieurs éléments</title>
		<link>http://www.kromack.com/jquery/tutoriel-jquery-appliquer-un-evenement-sur-plusieurs-elements/</link>
		<comments>http://www.kromack.com/jquery/tutoriel-jquery-appliquer-un-evenement-sur-plusieurs-elements/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 10:52:47 +0000</pubDate>
		<dc:creator>Kromack</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[tutoriel]]></category>

		<guid isPermaLink="false">http://www.kromack.com/?p=921</guid>
		<description><![CDATA[

Le contexte
Imaginons que vous devez appliquer le même comportement d&#8217;événement à un ensemble d&#8217;éléments, il devient alors tout à fait naturel de créer une classe CSS qui permettra d&#8217;identifier tous les éléments et ainsi leur appliquer le comportement d&#8217;événement simultanément.
Ceci ce traduirait par le code jQuery ci-dessous (notez que j&#8217;utilise jQuery à la place de [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_monochrome" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kromack.com%252Fjquery%252Ftutoriel-jquery-appliquer-un-evenement-sur-plusieurs-elements%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Tutoriel%20jQuery%20%3A%20appliquer%20un%20%C3%A9v%C3%A9nement%20sur%20plusieurs%20%C3%A9l%C3%A9ments%22%20%7D);"></div>
<h2>Le contexte</h2>
<p>Imaginons que vous devez appliquer le même comportement d&#8217;événement à un ensemble d&#8217;éléments, il devient alors tout à fait naturel de créer une classe CSS qui permettra d&#8217;identifier tous les éléments et ainsi leur appliquer le comportement d&#8217;événement simultanément.</p>
<p>Ceci ce traduirait par le code<strong> jQuery</strong> ci-dessous (notez que j&#8217;utilise<strong> jQuery</strong> à la place de <strong>$</strong> pour des questions de compatibilité avec d&#8217;autres librairies) :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p921code7'); return false;">View Code</a> JAVASCRIPT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p9217"><td class="code" id="p921code7"><pre class="javascript" style="font-family:monospace;">jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.jQuery-elements-1'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">change</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   <span style="color: #006600; font-style: italic;">//traitement de l'événement</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h2>Le problème</h2>
<p>Le code que nous venons de voir fonctionne bien, en revanche comment appliquer ce même comportement à un second ensemble d&#8217;éléments sans pour autant <strong>dupliquer de code</strong> ? Imaginons maintenant que nous possédons un second ensemble d&#8217;éléments portant pour une raison quelconque une classe CSS différente mais pour lequel nous désirons le même <strong>comportement d&#8217;événement</strong>.</p>
<p>La première solution qui vient à l&#8217;esprit consiste à dupliquer le code précédemment vu et à modifier <strong>la classe CSS utilisée</strong> pour pointer les éléments. C&#8217;est là qu&#8217;un peu d&#8217;astuce vas nous permettre d&#8217;éviter cette dupplication ! En effet, <strong>jQuery</strong> possède <strong>un puissant système de sélecteurs</strong> permettant de <strong>cibler des éléments HTML</strong>,en l&#8217;occurrence il suffira de <strong>séparer les deux classes CSS par une virgule</strong> pour appliquer le comportement d&#8217;événements à tous les éléments d&#8217;un seul coup !</p>

<div class="wp_codebox_msgheader"><span class="right"><sup></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p921code8'); return false;">View Code</a> JAVASCRIPT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p9218"><td class="code" id="p921code8"><pre class="javascript" style="font-family:monospace;">jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.jQuery-elements-1, .jQuery-elements-2'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">change</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   <span style="color: #006600; font-style: italic;">//traitement de l'événement</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Pratique, n&#8217;est-ce pas ?</p>

]]></content:encoded>
			<wfw:commentRss>http://www.kromack.com/jquery/tutoriel-jquery-appliquer-un-evenement-sur-plusieurs-elements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erreur PHP : Cannot create references to elements of a temporary array expression</title>
		<link>http://www.kromack.com/developpement/erreur-php-cannot-create-references-to-elements-of-a-temporary-array-expression/</link>
		<comments>http://www.kromack.com/developpement/erreur-php-cannot-create-references-to-elements-of-a-temporary-array-expression/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 14:21:24 +0000</pubDate>
		<dc:creator>Kromack</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[tutoriel]]></category>

		<guid isPermaLink="false">http://www.kromack.com/?p=885</guid>
		<description><![CDATA[

L&#8217;erreur fatale PHP Cannot create references to elements of a temporary array expression survient par exemple lorsqu&#8217;on tente d&#8217;assigner une variable par référence au sein d&#8217;une boucle foreach alors que le tableau d&#8217;entrée est une variable temporaire, c&#8217;est à dire générée et interprétée au sein de l&#8217;instruction foreach.
La variable n&#8217;ayant pas été déclarée et initialisée [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_monochrome" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kromack.com%252Fdeveloppement%252Ferreur-php-cannot-create-references-to-elements-of-a-temporary-array-expression%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Erreur%20PHP%20%3A%20Cannot%20create%20references%20to%20elements%20of%20a%20temporary%20array%20expression%22%20%7D);"></div>
<p>L&#8217;erreur <strong>fatale</strong> PHP <strong>Cannot create references to elements of a temporary array expression</strong> survient par exemple lorsqu&#8217;on tente d&#8217;assigner une variable par référence au sein d&#8217;une boucle <strong>foreach</strong> alors que le tableau d&#8217;entrée est une variable temporaire, c&#8217;est à dire générée et interprétée au sein de l&#8217;instruction foreach.</p>
<p>La variable n&#8217;ayant pas été déclarée et initialisée en dehors de la boucle, l&#8217;accès aux références de chaque élément n&#8217;est donc pas possible.</p>
<p>Le code ci-dessous illustre un cas de figure où l&#8217;erreur survient, notez que les méthodes utilisées sont celles de la classes <strong>Active Record</strong> du <strong>framework CodeIgniter</strong> :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p885code11'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p88511"><td class="code" id="p885code11"><pre class="php" style="font-family:monospace;"><span style="color: #660000;">$q</span> <span style="color: #000000;">=</span> <span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">o_db</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// The foreach's source array is created inside the foreach</span>
<span style="color: #808080; font-style: italic;">// This way cause the fatal error &quot;Cannot create references to elements of a temporary array expression&quot;</span>
<span style="color: #0000FF;">foreach</span><span style="color: #000000;">&#40;</span><span style="color: #660000;">$q</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">result</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #0000FF;">as</span> <span style="color: #000000;">&amp;</span><span style="color: #660000;">$row</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
&nbsp;
    <span style="color: #660000;">$row</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">some_property</span> <span style="color: #000000;">=</span> <span style="color: #008200;">'some_value'</span><span style="color: #000000;">;</span>
&nbsp;
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<h2>La solution</h2>
<p>Il suffit de déclarer le tableau d&#8217;entrée de la boucle foreach à <strong>l&#8217;extérieur</strong> de celui-ci :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p885code12'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p88512"><td class="code" id="p885code12"><pre class="php" style="font-family:monospace;"><span style="color: #660000;">$q</span> <span style="color: #000000;">=</span> <span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">o_db</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
<span style="color: #660000;">$result</span> <span style="color: #000000;">=</span> <span style="color: #660000;">$q</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">result</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// The foreach's source array is created outside the foreach</span>
<span style="color: #808080; font-style: italic;">// This way allows to assign $row by reference</span>
&nbsp;
<span style="color: #0000FF;">foreach</span><span style="color: #000000;">&#40;</span><span style="color: #660000;">$result</span> <span style="color: #0000FF;">as</span> <span style="color: #000000;">&amp;</span><span style="color: #660000;">$row</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
&nbsp;
    <span style="color: #660000;">$row</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">some_property</span> <span style="color: #000000;">=</span> <span style="color: #008200;">'some_value'</span><span style="color: #000000;">;</span>
&nbsp;
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>


]]></content:encoded>
			<wfw:commentRss>http://www.kromack.com/developpement/erreur-php-cannot-create-references-to-elements-of-a-temporary-array-expression/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento : corriger le bug d&#8217;ajout au panier sous Internet Explorer 8</title>
		<link>http://www.kromack.com/magento/magento-corriger-le-bug-dajout-au-panier-sous-internet-explorer-8/</link>
		<comments>http://www.kromack.com/magento/magento-corriger-le-bug-dajout-au-panier-sous-internet-explorer-8/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 12:31:10 +0000</pubDate>
		<dc:creator>Kromack</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[tutoriel]]></category>

		<guid isPermaLink="false">http://www.kromack.com/?p=872</guid>
		<description><![CDATA[

La version 1.3.x de Magento comporte des dysfonctionnements sous Internet Explorer ou encore Safari 4 sur certains serveurs tels que :

L&#8217;impossibilité de se connecter à l&#8217;interface d&#8217;administration
L&#8217;impossibilité d&#8217;ajouter un produit au panier

Il existe plusieurs solutions permettant de corriger ces problèmes, en voici une qui fonctionne dans certains cas et consiste à réduire le niveau de [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_monochrome" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kromack.com%252Fmagento%252Fmagento-corriger-le-bug-dajout-au-panier-sous-internet-explorer-8%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Magento%20%3A%20corriger%20le%20bug%20d%27ajout%20au%20panier%20sous%20Internet%20Explorer%208%22%20%7D);"></div>
<p>La version 1.3.x de Magento comporte des dysfonctionnements sous <strong>Internet Explorer</strong> ou encore <strong>Safari 4</strong> sur certains serveurs tels que :</p>
<ul class="charte">
<li>L&#8217;impossibilité de se <strong>connecter à l&#8217;interface d&#8217;administration</strong></li>
<li>L&#8217;impossibilité d&#8217;<strong>ajouter un produit au panier</strong></li>
</ul>
<p>Il existe plusieurs solutions permettant de corriger ces problèmes, en voici une qui fonctionne dans certains cas et consiste à réduire le niveau de sécurité de Magento concernant les <strong>cookies</strong>.</p>
<p>Rendez-vous dans Système / Configuration / Web et appliquez les réglages visibles sur la capture d&#8217;écran ci-dessous :</p>
<p><a href="http://www.kromack.com/wordpress/wp-content/uploads/2010/01/magento-internet-explorer-bug.jpg"><img class="aligncenter size-full wp-image-873" title="magento internet explorerbug panier" src="http://www.kromack.com/wordpress/wp-content/uploads/2010/01/magento-internet-explorer-bug.jpg" alt="" width="520" height="375" /></a></p>
<p><em>Remplacez Domaine du cookie par votre nom de domaine (ex : www.kromack.com).</em></p>
<h2>Corriger le bug de double quantité lors de l&#8217;ajout au panier</h2>
<p>Il est possible que vous obteniez également un nouveau bug qui <strong>double systématiquement la quantité sélectionnée</strong> par l&#8217;utilisateur lors de l&#8217;<strong>ajout d&#8217;un produit au panier</strong>.</p>
<p>Pour corriger ce bug, ouvrez le fichier <em>template/catalog/product/view/addtocart.phtml</em> et remplacez à la ligne 37 :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p872code15'); return false;">View Code</a> HTML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p87215"><td class="code" id="p872code15"><pre class="html" style="font-family:monospace;">&lt;button type=&quot;button&quot; class=&quot;form-button&quot; onclick=&quot;productAddToCartForm.submit()&quot;&gt;</pre></td></tr></table></div>

<p>Par :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p872code16'); return false;">View Code</a> HTML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p87216"><td class="code" id="p872code16"><pre class="html" style="font-family:monospace;">&lt;button type=&quot;button&quot; class=&quot;form-button&quot; onclick=&quot;productAddToCartForm.submit(); return false;&quot;&gt;</pre></td></tr></table></div>

<p>N&#8217;oubliez de raffraichir le cache de Magento pour prendre en compte ces changements.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.kromack.com/magento/magento-corriger-le-bug-dajout-au-panier-sous-internet-explorer-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutoriel Acicrud : ajouter des custom methods à vos modèles</title>
		<link>http://www.kromack.com/codeigniter/tutoriel-acicrud-ajouter-des-custom-methods-a-vos-modeles/</link>
		<comments>http://www.kromack.com/codeigniter/tutoriel-acicrud-ajouter-des-custom-methods-a-vos-modeles/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 18:48:12 +0000</pubDate>
		<dc:creator>Kromack</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Acicrud]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[tutoriel]]></category>

		<guid isPermaLink="false">http://www.kromack.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 l&#8217;identifiant de l&#8217;utilisateur [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_monochrome" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kromack.com%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.kromack.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></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p848code18'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p84818"><td class="code" id="p848code18"><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: #000000;">&#123;</span>
&nbsp;
	<span style="color: #808080; 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: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
	<span style="color: #000000;">&#123;</span>
		parent<span style="color: #000000;">::</span>__construct<span style="color: #000000;">&#40;</span><span style="color: #008200;">'user'</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
	<span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #808080; 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: #000000;">&#40;</span><span style="color: #660000;">$id</span> <span style="color: #000000;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
&nbsp;
		try <span style="color: #000000;">&#123;</span>
&nbsp;
			<span style="color: #808080; font-style: italic;">// Checking if $id is a valid primary key value</span>
			<span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">checkId</span><span style="color: #000000;">&#40;</span><span style="color: #660000;">$id</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
			<span style="color: #808080; font-style: italic;">// Building the query</span>
			<span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">db</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">select</span><span style="color: #000000;">&#40;</span><span style="color: #008200;">'username'</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">from</span><span style="color: #000000;">&#40;</span><span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">table</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">where</span><span style="color: #000000;">&#40;</span><span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">key</span><span style="color: #000000;">,</span> <span style="color: #660000;">$id</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
			<span style="color: #808080; font-style: italic;">// Returning the result</span>
			<span style="color: #0000FF;">return</span> <span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">row</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>		
&nbsp;
		<span style="color: #000000;">&#125;</span> catch<span style="color: #000000;">&#40;</span>Exception <span style="color: #660000;">$e</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
&nbsp;
			throw<span style="color: #000000;">&#40;</span><span style="color: #660000;">$e</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span> <span style="color: #808080; font-style: italic;">// Throws the ACICRUD's exception</span>
&nbsp;
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #000000;">&#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.kromack.com/codeigniter/tutoriel-acicrud-utiliser-plusieurs-base-de-donnees/">Utiliser plusieurs bases de données</a></p>

]]></content:encoded>
			<wfw:commentRss>http://www.kromack.com/codeigniter/tutoriel-acicrud-ajouter-des-custom-methods-a-vos-modeles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CKEditor Helper for CodeIgniter</title>
		<link>http://www.kromack.com/codeigniter/ckeditor-helper-for-codeigniter/</link>
		<comments>http://www.kromack.com/codeigniter/ckeditor-helper-for-codeigniter/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 17:36:59 +0000</pubDate>
		<dc:creator>Kromack</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[telechargement]]></category>
		<category><![CDATA[tutoriel]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.kromack.com/?p=820</guid>
		<description><![CDATA[The CKEditor Helper for CodeIgniter allows to integrate the powerfull WYSIWYG text editor CKEditor into CodeIgniter applications. This helper can currently manage all CKEditor's available configuration options and custom styles definitions.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_monochrome" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kromack.com%252Fcodeigniter%252Fckeditor-helper-for-codeigniter%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22CKEditor%20Helper%20for%20CodeIgniter%22%20%7D);"></div>
<div lang="en" xml:lang="en">
<h2>Using CKEditor as a plugin in your CodeIgniter applications</h2>
<p><strong>CKEditor</strong> is a powerfull <strong>WYSIWYG text editor</strong> licensed under the GPL, LGPL and MPL <strong>open source</strong> licenses. CKEditor can easilly be added to any web page, you will find below a simple way to integrate CKeditor to your <strong>CodeIgniter applications</strong>.</p>
<p><a href="http://www.kromack.com/wordpress/wp-content/uploads/2010/01/ckeditor.png"><img class="aligncenter size-full wp-image-821" title="CKEditor preview" src="http://www.kromack.com/wordpress/wp-content/uploads/2010/01/ckeditor.png" alt="" width="480" height="164" /></a></p>
<h2>Downloading CKEditor</h2>
<p>The first step is to download the <a href="http://ckeditor.com/download">CKEditor editor package</a>, note that the helper have only be tested over CKEditor 3.0.2. Once done, you should consider to remove the <em>_samples</em> and <em>_sources</em> directories from the uncompressed files.</p>
<p>Then, place the entire ckeditor directory into a <em>/js/</em> folder. You can place it anywhere but remember to set the correct path when initializing the helper.</p>
<h2>Adding the CKEditor helper for CodeIgniter</h2>
<p>Download and place <a href="http://www.kromack.com/files/ckeditor_helper.zip">the ckeditor_helper.php</a> file into the CodeIgniter&#8217;s <em>system/application/helpers</em> folder.</p>
<p>This helper can, for the moment, manage all <a href="http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Setting_Configurations">CKEditor&#8217;s available configuration options</a> and <a href="http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Styles">custom styles definitions</a>.</p>
<h2>Creating the controller</h2>
<p>First of all, we are going to create a controller that will set all the helper&#8217;s configuration options. You are able to set all CKEditor&#8217;s available configuration options inside the config array. We are also going to define two custom styles to replace the CKEditor&#8217;s default styles. Note that the id must match the textarea&#8217;s id in the view.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p820code19'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p82019"><td class="code" id="p820code19"><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> Ckeditor <span style="color: #000000; font-weight: bold;">extends</span> Controller <span style="color: #000000;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #660000;">$data</span> 	<span style="color: #000000;">=</span> 	<a href="http://www.php.net/array"><span style="color: #0000FF;">array</span></a><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
&nbsp;
		parent<span style="color: #000000;">::</span><span style="color: #004000;">Controller</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
		<span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">helper</span><span style="color: #000000;">&#40;</span><span style="color: #008200;">'url'</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span> <span style="color: #808080; font-style: italic;">//You should autoload this one ;)</span>
		<span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">helper</span><span style="color: #000000;">&#40;</span><span style="color: #008200;">'ckeditor'</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">//Ckeditor's configuration</span>
		<span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'ckeditor'</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">=</span> <a href="http://www.php.net/array"><span style="color: #0000FF;">array</span></a><span style="color: #000000;">&#40;</span>
&nbsp;
			<span style="color: #808080; font-style: italic;">//ID of the textarea that will be replaced</span>
			<span style="color: #008200;">'id'</span> 	<span style="color: #000000;">=&gt;</span> 	<span style="color: #008200;">'content'</span><span style="color: #000000;">,</span> 	<span style="color: #808080; font-style: italic;">// Must match the textarea's id</span>
			<span style="color: #008200;">'path'</span>	<span style="color: #000000;">=&gt;</span>	<span style="color: #008200;">'js/ckeditor'</span><span style="color: #000000;">,</span>	<span style="color: #808080; font-style: italic;">// Path to the ckeditor folder relative to index.php</span>
&nbsp;
			<span style="color: #808080; font-style: italic;">//Optionnal values</span>
			<span style="color: #008200;">'config'</span> <span style="color: #000000;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #0000FF;">array</span></a><span style="color: #000000;">&#40;</span>
				<span style="color: #008200;">'toolbar'</span> 	<span style="color: #000000;">=&gt;</span> 	<span style="color: #008200;">&quot;Full&quot;</span><span style="color: #000000;">,</span> 	<span style="color: #808080; font-style: italic;">//Using the Full toolbar</span>
				<span style="color: #008200;">'width'</span> 	<span style="color: #000000;">=&gt;</span> 	<span style="color: #008200;">&quot;550px&quot;</span><span style="color: #000000;">,</span>	<span style="color: #808080; font-style: italic;">//Setting a custom width</span>
				<span style="color: #008200;">'height'</span> 	<span style="color: #000000;">=&gt;</span> 	<span style="color: #008200;">'100px'</span><span style="color: #000000;">,</span>	<span style="color: #808080; font-style: italic;">//Setting a custom height</span>
&nbsp;
			<span style="color: #000000;">&#41;</span><span style="color: #000000;">,</span>
&nbsp;
			<span style="color: #808080; font-style: italic;">//Replacing styles from the &quot;Styles tool&quot;</span>
			<span style="color: #008200;">'styles'</span> <span style="color: #000000;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #0000FF;">array</span></a><span style="color: #000000;">&#40;</span>
&nbsp;
				<span style="color: #808080; font-style: italic;">//Creating a new style named &quot;style 1&quot;</span>
				<span style="color: #008200;">'style 1'</span> <span style="color: #000000;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #0000FF;">array</span></a> <span style="color: #000000;">&#40;</span>
					<span style="color: #008200;">'name'</span> 		<span style="color: #000000;">=&gt;</span> 	<span style="color: #008200;">'Blue Title'</span><span style="color: #000000;">,</span>
					<span style="color: #008200;">'element'</span> 	<span style="color: #000000;">=&gt;</span> 	<span style="color: #008200;">'h2'</span><span style="color: #000000;">,</span>
					<span style="color: #008200;">'styles'</span> <span style="color: #000000;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #0000FF;">array</span></a><span style="color: #000000;">&#40;</span>
						<span style="color: #008200;">'color'</span> 		<span style="color: #000000;">=&gt;</span> 	<span style="color: #008200;">'Blue'</span><span style="color: #000000;">,</span>
						<span style="color: #008200;">'font-weight'</span> 		<span style="color: #000000;">=&gt;</span> 	<span style="color: #008200;">'bold'</span>
					<span style="color: #000000;">&#41;</span>
				<span style="color: #000000;">&#41;</span><span style="color: #000000;">,</span>
&nbsp;
				<span style="color: #808080; font-style: italic;">//Creating a new style named &quot;style 2&quot;</span>
				<span style="color: #008200;">'style 2'</span> <span style="color: #000000;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #0000FF;">array</span></a> <span style="color: #000000;">&#40;</span>
					<span style="color: #008200;">'name'</span> 		<span style="color: #000000;">=&gt;</span> 	<span style="color: #008200;">'Red Title'</span><span style="color: #000000;">,</span>
					<span style="color: #008200;">'element'</span> 	<span style="color: #000000;">=&gt;</span> 	<span style="color: #008200;">'h2'</span><span style="color: #000000;">,</span>
					<span style="color: #008200;">'styles'</span> <span style="color: #000000;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #0000FF;">array</span></a><span style="color: #000000;">&#40;</span>
						<span style="color: #008200;">'color'</span> 		<span style="color: #000000;">=&gt;</span> 	<span style="color: #008200;">'Red'</span><span style="color: #000000;">,</span>
						<span style="color: #008200;">'font-weight'</span> 		<span style="color: #000000;">=&gt;</span> 	<span style="color: #008200;">'bold'</span><span style="color: #000000;">,</span>
						<span style="color: #008200;">'text-decoration'</span>	<span style="color: #000000;">=&gt;</span> 	<span style="color: #008200;">'underline'</span>
					<span style="color: #000000;">&#41;</span>
				<span style="color: #000000;">&#41;</span>				
			<span style="color: #000000;">&#41;</span>
		<span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
&nbsp;
	<span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> index<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
&nbsp;
		<span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">view</span><span style="color: #000000;">&#40;</span><span style="color: #008200;">'ckeditor'</span><span style="color: #000000;">,</span> <span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<h2>Creating the view</h2>
<p>The <em>ckeditor.php</em> view only has to display a textarea element with the matched id and call the display_ckeditor() helper&#8217;s function.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p820code20'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p82020"><td class="code" id="p820code20"><pre class="php" style="font-family:monospace;"><span style="color: #000000;">&lt;</span>textarea name<span style="color: #000000;">=</span><span style="color: #008200;">&quot;content&quot;</span> id<span style="color: #000000;">=</span><span style="color: #008200;">&quot;content&quot;</span> <span style="color: #000000;">&gt;&lt;</span>p<span style="color: #000000;">&gt;</span>Example data<span style="color: #000000;">&lt;/</span>p<span style="color: #000000;">&gt;&lt;/</span>textarea<span style="color: #000000;">&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #0000FF;">echo</span> display_ckeditor<span style="color: #000000;">&#40;</span><span style="color: #660000;">$ckeditor</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>That&#8217;s all ! If you&#8217;ve followed all the steps correctly, CKEditor should shows up in the view. <strong>Please note that I assume that you are loading also a correct header and footer view with all the xHTML required stuff.</strong></p>
<h2>Downloading the tutorial</h2>
<p>Source files of this tutorial (controller, helper, and view) can be <a href="http://www.kromack.com/files/CKEditor.zip">downloaded here</a>.</p>
<h2>Changelog</h2>
<ul class="charte">
<li><strong>2010-01-12:</strong> All the stuff moved out of <em>system/plugins</em>.</li>
<li><strong>2010-01-30:</strong> Fixed <strong>Internet Explorer</strong> compatibility issue.</li>
</ul>
<h2>Troubleshooting</h2>
<ul class="charte">
<li>If you are using the .htaccess file given by the CodeIgniter&#8217;s user guide and have placed the ckeditor&#8217;s folder into <em>system/plugins</em>, be sure to allow the directory system to be called via HTTP in order to allow access to the plugins directory</li>
</ul>
<h2>Licence</h2>
<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/us/"><img style="border-width: 0;" src="http://i.creativecommons.org/l/by-sa/3.0/us/88x31.png" alt="Creative Commons License" /></a><br />
<span>CKEditor plugin for CodeIgniter</span> by <a rel="cc:attributionURL" href="http://www.kromack.com/codeigniter/ckeditor-helper-for-codeigniter">Samuel Sanchez</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/us/">Creative Commons Attribution-Share Alike 3.0 United States License</a>.<br />
Based on a work at <a rel="dc:source" href="http://codeigniter.com/forums/viewthread/127374/">codeigniter.com</a>.<br />
Permissions beyond the scope of this license may be available at <a rel="cc:morePermissions" href="http://www.kromack.com/contact-kromack-developpeur-france/">http://www.kromack.com/contact-kromack-developpeur-france/</a>.</p>
<p>Please note that this helper is based on an original idea discussed in this <a href="http://codeigniter.com/forums/viewthread/127374/">CodeIgniter thread</a>.
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.kromack.com/codeigniter/ckeditor-helper-for-codeigniter/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Lancement de la MooTools Forge !</title>
		<link>http://www.kromack.com/mootools/lancement-de-la-mootools-forge/</link>
		<comments>http://www.kromack.com/mootools/lancement-de-la-mootools-forge/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 23:11:35 +0000</pubDate>
		<dc:creator>Kromack</dc:creator>
				<category><![CDATA[MooTools]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.kromack.com/?p=782</guid>
		<description><![CDATA[

Nous l&#8217;attendions depuis longtemps ! La forge du framework JavaScript MooTools destinée au partage de plugins est désormais en ligne !
Celle-ci concentre déjà plusieurs dizaines de plugins et propose pour chacun d&#8217;entre eux le téléchargement des sources, une démonstration, un tutoriel et la liste des dépendances, chose qui manquait cruellement par le passé.
Pour les utilisateurs [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_monochrome" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kromack.com%252Fmootools%252Flancement-de-la-mootools-forge%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Lancement%20de%20la%20MooTools%20Forge%20%21%22%20%7D);"></div>
<p><img class="size-full wp-image-785 alignleft" title="mootools forge" src="http://www.kromack.com/wordpress/wp-content/uploads/2009/12/mootools.png" alt="mootools forge" width="184" height="46" />Nous l&#8217;attendions depuis longtemps ! La <strong>forge du framework JavaScript MooTools</strong> destinée au <strong>partage de plugins</strong> est désormais en ligne !</p>
<p>Celle-ci concentre déjà plusieurs dizaines de plugins et propose pour chacun d&#8217;entre eux le téléchargement des sources, une démonstration, un tutoriel et la <strong>liste des dépendances</strong>, chose qui manquait cruellement par le passé.</p>
<p>Pour les utilisateurs de jQuery, la forge de MooTools est comparable à la section plugins du site de jQuery.</p>
<h2>Une petite sélection de plugins incontournables</h2>
<p>Voici une petite sélection personnelle des meilleurs plugins actuellement disponibles sur la forge :</p>
<ul class="charte">
<li><a href="http://mootools.net/plugins/p/lazyload" target="_blank">LazyLoad</a></li>
<li><a href="http://mootools.net/plugins/p/mootools_filemanager" target="_blank">MooTools FileManager</a></li>
<li><a href="http://mootools.net/plugins/p/lighter" target="_blank">Lighter</a></li>
<li><a href="http://mootools.net/plugins/p/scrollspy" target="_blank">ScrollSpy</a></li>
<li><a href="http://mootools.net/plugins/p/inputmask" target="_blank">InputMask</a></li>
<li><a href="http://mootools.net/plugins/p/meiomask" target="_blank">MeioMask</a></li>
<li><a href="http://mootools.net/plugins/p/database" target="_blank">Database</a></li>
</ul>
<p><a href="http://mootools.net/forge/"><br />
Accéder à la MooTool Forge</a>.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.kromack.com/mootools/lancement-de-la-mootools-forge/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bonnes pratiques sur la gestion de bases de données sous CodeIgniter</title>
		<link>http://www.kromack.com/codeigniter/bonnes-pratiques-sur-la-gestion-de-base-de-donnees-sous-codeigniter/</link>
		<comments>http://www.kromack.com/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>Kromack</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Acicrud]]></category>
		<category><![CDATA[Bonnes pratiques]]></category>
		<category><![CDATA[Développement]]></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://www.kromack.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_monochrome" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.kromack.com%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.kromack.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></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p767code21'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p76721"><td class="code" id="p767code21"><pre class="php" style="font-family:monospace;"><span style="color: #660000;">$db</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'production'</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'hostname'</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">=</span> <span style="color: #008200;">&quot;localhost&quot;</span><span style="color: #000000;">;</span>
<span style="color: #660000;">$db</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'production'</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'username'</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">=</span> <span style="color: #008200;">&quot;root&quot;</span><span style="color: #000000;">;</span>
<span style="color: #660000;">$db</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'production'</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'password'</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">=</span> <span style="color: #008200;">&quot;password&quot;</span><span style="color: #000000;">;</span>
<span style="color: #660000;">$db</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'production'</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'database'</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">=</span> <span style="color: #008200;">&quot;the_production_database&quot;</span><span style="color: #000000;">;</span>
<span style="color: #660000;">$db</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'production'</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'dbdriver'</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">=</span> <span style="color: #008200;">&quot;mysql&quot;</span><span style="color: #000000;">;</span>
<span style="color: #660000;">$db</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'production'</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'dbprefix'</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">=</span> <span style="color: #008200;">&quot;gestion_&quot;</span><span style="color: #000000;">;</span>
<span style="color: #660000;">$db</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'production'</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'pconnect'</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">=</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #000000;">;</span>
<span style="color: #660000;">$db</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'production'</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'db_debug'</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">=</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #000000;">;</span>
<span style="color: #660000;">$db</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'production'</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'cache_on'</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">=</span> <span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #000000;">;</span>
<span style="color: #660000;">$db</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'production'</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'cachedir'</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">=</span> <span style="color: #008200;">&quot;&quot;</span><span style="color: #000000;">;</span>
<span style="color: #660000;">$db</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'production'</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'char_set'</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">=</span> <span style="color: #008200;">&quot;utf8&quot;</span><span style="color: #000000;">;</span>
<span style="color: #660000;">$db</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'production'</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #008200;">'dbcollat'</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">=</span> <span style="color: #008200;">&quot;utf8_general_ci&quot;</span><span style="color: #000000;">;</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></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p767code22'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p76722"><td class="code" id="p767code22"><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: #000000;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #660000;">$table</span> <span style="color: #000000;">=</span> <span style="color: #008200;">'user'</span><span style="color: #000000;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
        parent<span style="color: #000000;">::</span>__construct<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
    <span style="color: #000000;">&#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: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
&nbsp;
    	<span style="color: #808080; font-style: italic;">//$this-&gt;table is used instead of the 'user' string.</span>
        <span style="color: #808080; font-style: italic;">//Active Record will use `gestion_user`</span>
    	<span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">db</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">select</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">from</span><span style="color: #000000;">&#40;</span><span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">table</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
    	<span style="color: #660000;">$query</span> <span style="color: #000000;">=</span> <span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">db</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
    	<span style="color: #0000FF;">return</span> <span style="color: #660000;">$query</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">result</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
    <span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #000000;">&#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></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p767code23'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p76723"><td class="code" id="p767code23"><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: #000000;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #660000;">$table</span> <span style="color: #000000;">=</span> <span style="color: #008200;">'user'</span><span style="color: #000000;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
        parent<span style="color: #000000;">::</span>__construct<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
    <span style="color: #000000;">&#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: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
&nbsp;
    	<span style="color: #808080; font-style: italic;">//One way</span>
    	<span style="color: #660000;">$query</span> <span style="color: #000000;">=</span> <span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">db</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #000000;">&#40;</span><span style="color: #008200;">'SELECT * FROM `'</span> <span style="color: #000000;">.</span> <span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">db</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">dbprefix</span><span style="color: #000000;">&#40;</span><span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">table</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">.</span> <span style="color: #008200;">'` LIMIT 0 , 30'</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
&nbsp;
    	<span style="color: #808080; font-style: italic;">//Second way</span>
    	<span style="color: #660000;">$query</span> <span style="color: #000000;">=</span> <span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">db</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #000000;">&#40;</span><span style="color: #008200;">'SELECT * FROM `'</span> <span style="color: #000000;">.</span> <span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">db</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">dbprefix</span> <span style="color: #000000;">.</span> <span style="color: #660000;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #004000;">table</span> <span style="color: #000000;">.</span> <span style="color: #008200;">'` LIMIT 0 , 30'</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">;</span>
    <span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #000000;">&#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://www.kromack.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

]]></content:encoded>
			<wfw:commentRss>http://www.kromack.com/codeigniter/bonnes-pratiques-sur-la-gestion-de-base-de-donnees-sous-codeigniter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
