<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://dissitou.klafoutis.org/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>dcTips() - Trucs divers</title>
  <link>http://dissitou.klafoutis.org/</link>
  <description></description>
  <language>fr</language>
  <pubDate>Sun, 09 Mar 2008 07:06:31 +0100</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Clearbricks : quelques autres fonctions de dbLayer</title>
    <link>http://dissitou.klafoutis.org/post/2007/12/31/Clearbricks-%3A-quelques-autres-fonctions-de-dbLayer</link>
    <guid isPermaLink="false">urn:md5:39184a328f19ae622b9a88ffa482db7c</guid>
    <pubDate>Mon, 31 Dec 2007 18:06:00 +0100</pubDate>
    <dc:creator>Moe</dc:creator>
        <category>Trucs divers</category>
        <category>clearbricks</category><category>documentation</category><category>php</category><category>sql</category>    
    <description>&lt;p&gt;Dans le &lt;a href=&quot;http://dissitou.klafoutis.org/post/2007/11/22/Clearbricks-%3A-decouverte-de-dbLayer-et-de-sa-fonction-select&quot;&gt;billet d'introduction&lt;/a&gt; (qu'il est préférable d'avoir lu avant d'aborder ce billet) nous avons vu comment effectuer des requêtes avec la fonction &lt;code&gt;select()&lt;/code&gt; de dbLayer. Après avoir découvert comment lire les enregistrements dans la base de données, nous allons ici voir comment insérer, mettre à jour et effacer des enregistrements.&lt;/p&gt;    &lt;p&gt;Voici pour rappel la table des lecteurs que nous avons utilisé comme exemple dans le billet d'introduction :&lt;/p&gt;


&lt;h3&gt;La table lecteurs&lt;/h3&gt;

&lt;table border=&quot;0&quot; rules=&quot;all&quot; cellpadding=&quot;5&quot; cellspacing=&quot;5&quot; style=&quot;background-color:White;text-align:center;&quot;&gt;
&lt;caption&gt;lecteurs&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th style=&quot;width:20%;&quot;&gt;id&lt;/th&gt;&lt;th style=&quot;width:40%;&quot;&gt;nom&lt;/th&gt;&lt;th style=&quot;width:40%;&quot;&gt;role&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Pierre&lt;/td&gt;&lt;td&gt;clown&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Paul&lt;/td&gt;&lt;td&gt;développeur&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;Jacques&lt;/td&gt;&lt;td&gt;soutien moral&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;Olivier&lt;/td&gt;&lt;td&gt;chef&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;Kozlika&lt;/td&gt;&lt;td&gt;fée&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;



&lt;h3&gt;Le curseur&lt;/h3&gt;

&lt;p&gt;Pour insérer ou mettre à jour un enregistrement avec dbLayer, il faut d'abord ouvrir un curseur. Cela se fait avec la commande &lt;code&gt;openCursor()&lt;/code&gt; et permet de définir sur quelle table on va agir. Ici ce sera la table lecteurs.&lt;/p&gt;


&lt;p&gt;Ouvrons un curseur :&lt;/p&gt;

&lt;code&gt;&lt;span style=&quot;color:#000&quot;&gt;
&lt;span style=&quot;color:#00B&quot;&gt;$cur &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$con&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;openCursor&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'lecteurs'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;);&lt;br /&gt; &lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;


&lt;p&gt;&lt;code&gt;$cur&lt;/code&gt; est un &lt;em&gt;cursor&lt;/em&gt;, ou curseur en français. Nous allons lui attribuer des variables qui correspondent aux colonnes de la table et des valeurs grâce à la syntaxe suivante :&lt;/p&gt;

&lt;code&gt;&lt;span style=&quot;color:#000&quot;&gt;
&lt;span style=&quot;color:#00B&quot;&gt;$cur&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;variable &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;valeur&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;;&lt;br /&gt; &lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;


&lt;p&gt;Exemples :&lt;/p&gt;


&lt;p&gt;Pour définir le nom :&lt;/p&gt;
&lt;code&gt;&lt;span style=&quot;color:#000&quot;&gt;
&lt;span style=&quot;color:#00B&quot;&gt;$cur&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;nom &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'César'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;;&lt;br /&gt; &lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;


&lt;p&gt;Pour définir le rôle :&lt;/p&gt;
&lt;code&gt;&lt;span style=&quot;color:#000&quot;&gt;
&lt;span style=&quot;color:#00B&quot;&gt;$cur&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;role &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'empereur'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;;&lt;br /&gt; &lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;


&lt;h3&gt;Insérer un enregistrement avec la fonction &lt;code&gt;insert()&lt;/code&gt;&lt;/h3&gt;

&lt;p&gt;Un nouveau lecteur est arrivé, il s'appelle Hector et son rôle est &amp;quot;évangéliste&amp;quot;. Comment faire pour l'ajouter à la table des lecteurs ? On ouvre un curseur, on lui attribue des valeurs :&lt;/p&gt;

&lt;code&gt;&lt;span style=&quot;color:#000&quot;&gt;
&lt;span style=&quot;color:#00B&quot;&gt;$cur &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$con&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;openCursor&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'lecteurs'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$cur&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;nom &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'Hector'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$cur&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;role &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'évangéliste'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;;&lt;br /&gt; &lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;


&lt;p&gt;Ensuite on utilise la fonction insert(), elle va récupérer les variables et les valeurs pour les insérer dans la table :&lt;/p&gt;

&lt;code&gt;&lt;span style=&quot;color:#000&quot;&gt;
&lt;span style=&quot;color:#00B&quot;&gt;$cur&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;insert&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;();&lt;br /&gt; &lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;


&lt;p&gt;Voici le code complet :&lt;/p&gt;

&lt;code&gt;&lt;span style=&quot;color:#000&quot;&gt;
&lt;span style=&quot;color:#00B&quot;&gt;$cur &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$con&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;openCursor&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'lecteurs'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$cur&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;nom &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'Hector'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$cur&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;role &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'évangéliste'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$cur&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;insert&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;();&lt;br /&gt; &lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;


&lt;p&gt;Et la table après l'insertion :&lt;/p&gt;
&lt;table border=&quot;0&quot; rules=&quot;all&quot; cellpadding=&quot;5&quot; cellspacing=&quot;5&quot; style=&quot;background-color:White;text-align:center;&quot;&gt;
&lt;caption&gt;lecteurs&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th style=&quot;width:20%;&quot;&gt;id&lt;/th&gt;&lt;th style=&quot;width:40%;&quot;&gt;nom&lt;/th&gt;&lt;th style=&quot;width:40%;&quot;&gt;role&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Pierre&lt;/td&gt;&lt;td&gt;clown&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Paul&lt;/td&gt;&lt;td&gt;développeur&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;Jacques&lt;/td&gt;&lt;td&gt;soutien moral&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;Olivier&lt;/td&gt;&lt;td&gt;chef&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;Kozlika&lt;/td&gt;&lt;td&gt;fée&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;Hector&lt;/td&gt;&lt;td&gt;évangéliste&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;



&lt;p&gt;Un enregistrement a été créé. Notez que l'id de cet enregistrement vaut 6 car la base de données a été configurée pour incrémenter l'id à chaque nouvel enregistrement.&lt;/p&gt;


&lt;h3&gt;Modifier un enregistrement avec la fonction &lt;code&gt;update()&lt;/code&gt;&lt;/h3&gt;

&lt;p&gt;Pierre n'est plus clown, il est devenu professeur. Comment mettre à jour l'enregistrement de la table qui le concerne ? On ouvre un curseur et on attribue les nouvelles valeurs :&lt;/p&gt;

&lt;code&gt;&lt;span style=&quot;color:#000&quot;&gt;
&lt;span style=&quot;color:#00B&quot;&gt;$cur &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$con&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;openCursor&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'lecteurs'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$cur&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;role &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'professeur'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;;&lt;br /&gt; &lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;


&lt;p&gt;Puis on utilise la fonction &lt;code&gt;update()&lt;/code&gt;, Le mot-clé &lt;code&gt;WHERE&lt;/code&gt; permet de définir quel enregistrement nous allons mettre à jour, ici on veut modifier l'enregistrement de Pierre donc nous allons sélectionner l'enregistrement où le nom est &amp;quot;Pierre&amp;quot; :&lt;/p&gt;

&lt;code&gt;&lt;span style=&quot;color:#000&quot;&gt;
&lt;span style=&quot;color:#00B&quot;&gt;$cur&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;update&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'WHERE nom = \'Pierre\';'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;);&lt;br /&gt; &lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;


&lt;p&gt;Voici le code complet :&lt;/p&gt;

&lt;code&gt;&lt;span style=&quot;color:#000&quot;&gt;
&lt;span style=&quot;color:#00B&quot;&gt;$cur &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$con&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;openCursor&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'lecteurs'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$cur&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;role &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'professeur'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$cur&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;update&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'WHERE nom = \'Pierre\';'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;);&lt;br /&gt; &lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;


&lt;p&gt;Et le résultat :&lt;/p&gt;

&lt;table border=&quot;0&quot; rules=&quot;all&quot; cellpadding=&quot;5&quot; cellspacing=&quot;5&quot; style=&quot;background-color:White;text-align:center;&quot;&gt;
&lt;caption&gt;lecteurs&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th style=&quot;width:20%;&quot;&gt;id&lt;/th&gt;&lt;th style=&quot;width:40%;&quot;&gt;nom&lt;/th&gt;&lt;th style=&quot;width:40%;&quot;&gt;role&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Pierre&lt;/td&gt;&lt;td&gt;professeur&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Paul&lt;/td&gt;&lt;td&gt;développeur&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;Jacques&lt;/td&gt;&lt;td&gt;soutien moral&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;Olivier&lt;/td&gt;&lt;td&gt;chef&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;Kozlika&lt;/td&gt;&lt;td&gt;fée&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;Hector&lt;/td&gt;&lt;td&gt;évangéliste&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;



&lt;p&gt;L'enregistrement a été mis à jour.&lt;/p&gt;


&lt;h3&gt;Effacer un enregistrement avec la fonction &lt;code&gt;execute()&lt;/code&gt;&lt;/h3&gt;

&lt;p&gt;Il n'y a pas de fonction spéciale pour effacer un enregistrement, nous allons utiliser la commande &lt;code&gt;execute()&lt;/code&gt; qui sert à exécuter des requêtes SQL.&lt;/p&gt;


&lt;p&gt;Jacques n'est plus lecteur, Comment effacer l'enregistrement qui le concerne ? Voici la requête SQL qui va effacer l'enregistrement avec l'&lt;code&gt;id&lt;/code&gt; 3 : &lt;code&gt;DELETE FROM lecteurs WHERE id = 3;&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;On exécute la requête :&lt;/p&gt;

&lt;code&gt;&lt;span style=&quot;color:#000&quot;&gt;
&lt;span style=&quot;color:#00B&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'DELETE FROM lecteurs WHERE id = 3;'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$con&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;execute&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$query&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;);&lt;br /&gt; &lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;


&lt;p&gt;Et la table devient :&lt;/p&gt;

&lt;table border=&quot;0&quot; rules=&quot;all&quot; cellpadding=&quot;5&quot; cellspacing=&quot;5&quot; style=&quot;background-color:White;text-align:center;&quot;&gt;
&lt;caption&gt;lecteurs&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th style=&quot;width:20%;&quot;&gt;id&lt;/th&gt;&lt;th style=&quot;width:40%;&quot;&gt;nom&lt;/th&gt;&lt;th style=&quot;width:40%;&quot;&gt;role&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Pierre&lt;/td&gt;&lt;td&gt;professeur&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Paul&lt;/td&gt;&lt;td&gt;développeur&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;Olivier&lt;/td&gt;&lt;td&gt;chef&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;Kozlika&lt;/td&gt;&lt;td&gt;fée&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;Hector&lt;/td&gt;&lt;td&gt;évangéliste&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;



&lt;p&gt;Notez qu'on aurait pu réaliser la même action avec cette requête SQL :&lt;/p&gt;

&lt;code&gt;&lt;span style=&quot;color:#000&quot;&gt;
&lt;span style=&quot;color:#00B&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'DELETE FROM lecteurs WHERE nom = \'Jacques\';'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;;&lt;br /&gt; &lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;


&lt;h3&gt;Quelques fonctions supplémentaires pour les recordsets&lt;/h3&gt;

&lt;p&gt;Ces fonctions permettent d'obtenir des informations sur les requêtes SELECT décrites dans le billet d'introduction.&lt;/p&gt;


&lt;h4&gt;&lt;code&gt;isEmpty()&lt;/code&gt;&lt;/h4&gt;

&lt;p&gt;Cette fonction retourne &lt;code&gt;true&lt;/code&gt; si un &lt;code&gt;recordset&lt;/code&gt; est vide ou &lt;code&gt;false&lt;/code&gt; sinon. Elle s'utilise dans une condition, pour voir si un recordset contient des enregistrements. Ici on va afficher les noms des lecteurs dont l'id est supérieur à 3 :&lt;/p&gt;

&lt;code&gt;&lt;span style=&quot;color:#000&quot;&gt;
&lt;span style=&quot;color:#00B&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'SELECT nom FROM lecteurs WHERE id &amp;gt; 3;'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$rs &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$con&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;select&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$query&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;);&lt;br /&gt;&lt;br /&gt;if (&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$rs&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;isEmpty&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;())&lt;br /&gt;{&lt;br /&gt;    echo(&lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'aucun lecteur'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;);&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;    while (&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$rs&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;fetch&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;()) {echo(&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$rs&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'nom'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;' '&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;);}&lt;br /&gt;}&lt;br /&gt; &lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;


&lt;p&gt;Ce code affichera &amp;quot;aucun lecteur&amp;quot; si le recordset est vide et affichera les noms des lecteurs s'il y en a.&lt;/p&gt;


&lt;p&gt;Pour ne pas afficher de message spécifique en cas de recordset vide on utilisera le code suivant :&lt;/p&gt;

&lt;code&gt;&lt;span style=&quot;color:#000&quot;&gt;
&lt;span style=&quot;color:#00B&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'SELECT nom FROM lecteurs WHERE id &amp;gt; 3;'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$rs &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$con&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;select&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$query&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;);&lt;br /&gt;&lt;br /&gt;if (!&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$rs&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;isEmpty&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;())&lt;br /&gt;{&lt;br /&gt;    while (&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$rs&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;fetch&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;()) {echo(&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$rs&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'nom'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;' '&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;);}&lt;br /&gt;}&lt;br /&gt; &lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;


&lt;h4&gt;&lt;code&gt;count()&lt;/code&gt;&lt;/h4&gt;

&lt;p&gt;Cette fonction retourne le nombre d'enregistrements présents dans un recordset :&lt;/p&gt;

&lt;code&gt;&lt;span style=&quot;color:#000&quot;&gt;
&lt;span style=&quot;color:#00B&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'SELECT nom FROM lecteurs WHERE id &amp;gt; 3;'&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$rs &lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$con&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;select&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$query&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;);&lt;br /&gt;&lt;br /&gt;echo(&lt;/span&gt;&lt;span style=&quot;color:#D00&quot;&gt;'nombre d\'enregistrements : '&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;$rs&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:#00B&quot;&gt;count&lt;/span&gt;&lt;span style=&quot;color:#070&quot;&gt;);&lt;br /&gt; &lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;


&lt;p&gt;Ceci affichera par exemple &amp;quot;nombre d'enregistrements : 2&amp;quot;.&lt;/p&gt;


&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;Grâce au billet précédent et à ce billet, vous savez lire et modifier des enregistrements dans des tables d'une base de données. Pour apprendre comment créer ou modifier des tables, voyez la &lt;a href=&quot;http://doc.dotclear.net/2.0/resources/plugins/auto-install#modifier-le-schema-de-la-base-de-donnees&quot; hreflang=&quot;fr&quot; title=&quot;2.0:resources:plugins:auto-install    [Documentation Dotclear&quot;&gt;documentation de Dotclear&lt;/a&gt;, Vous êtes prêts à gérer des tables dans une base de données avec Clearbricks.&lt;/p&gt;


&lt;p&gt;Si les commentaires sont fermés, vous pouvez commenter ce billet &lt;a href=&quot;http://gniark.net/blog/post/2007/12/31/Clearbricks-:-quelques-autres-fonctions-de-dbLayer#p675&quot;&gt;sur mon blog&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Clearbricks : découverte de dbLayer et de sa fonction select()</title>
    <link>http://dissitou.klafoutis.org/post/2007/11/22/Clearbricks-%3A-decouverte-de-dbLayer-et-de-sa-fonction-select</link>
    <guid isPermaLink="false">urn:md5:0a13124d1c781d5f366bfcd991f85953</guid>
    <pubDate>Thu, 22 Nov 2007 19:22:00 +0100</pubDate>
    <dc:creator>Moe</dc:creator>
        <category>Trucs divers</category>
        <category>clearbricks</category><category>documentation</category><category>php</category><category>sql</category>    
    <description>&lt;h3&gt;Introduction à Clearbricks&lt;/h3&gt;

&lt;p&gt;Dotclear utilise son propre &lt;em&gt;framework&lt;/em&gt; qui n'est pas un &lt;em&gt;framework&lt;/em&gt; : &lt;a href=&quot;http://clearbricks.org/&quot; hreflang=&quot;en&quot; title=&quot;Clearbricks&quot;&gt;Clearbricks&lt;/a&gt;, il est composé d'une ensemble de classes et de fonctions, on y trouve par exemple une classe destinée à traiter les chaînes HTML ou une classe servant à formater les dates. Nous allons nous intéresser à la classe &lt;code&gt;dbLayer&lt;/code&gt;.&lt;/p&gt;    &lt;h3&gt;La base de données&lt;/h3&gt;

&lt;p&gt;Comme son nom l'indique, c'est une base ... de données. Concrètement, ça stocke des informations sous forme de tables (qui sont des tableaux) dans lesquelles on peut sélectionner des informations, les trier ou ajouter une information, etc. Pour cela on utilise des requêtes écrites en langage &lt;acronym title=&quot;Structured Query Language&quot;&gt;SQL&lt;/acronym&gt;. Ce langage est un standard et permet de faire des requêtes à différents types de base de données&lt;sup&gt;[&lt;a href=&quot;http://dissitou.klafoutis.org/post/2007/11/22/#pnote-161-1&quot; id=&quot;rev-pnote-161-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;. Clearbricks peut se connecter à trois types de bases de données : MySQL, PostgreSQL (noté aussi PGSQL) et SQLite (très peu utilisé).&lt;/p&gt;


&lt;h3&gt;La classe dbLayer&lt;/h3&gt;

&lt;p&gt;dbLayer est le diminutif de &lt;em&gt;database layer&lt;/em&gt;, ou &lt;q lang=&quot;fr&quot;&gt;couche de la base de données&lt;/q&gt; en français. C'est une couche d'abstraction, ce qui signifie qu'on fait appel à dbLayer pour réaliser des actions (ici des requêtes SQL) sans se soucier de ce qu'il y a &lt;em&gt;en-dessous&lt;/em&gt;. Au lieu d'utiliser les fonctions de &lt;acronym title=&quot;PHP Hypertext Preprocessor&quot;&gt;PHP&lt;/acronym&gt; telles que &lt;code&gt;mysql_query()&lt;/code&gt; et &lt;code&gt;pg_query()&lt;/code&gt; on utilisera les fonctions de dbLayer en faisant abstraction du type de la base de données.&lt;/p&gt;


&lt;p&gt;On peut schématiser ainsi le cheminement d'une requête SQL :&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://dissitou.klafoutis.org/public/images/Y2007/code/clearbricks.png&quot; alt=&quot;clearbricks.png&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Grâce à Clearbricks et dbLayer, on a un code qui gère indifféremment les 2 types de base de données.&lt;/p&gt;


&lt;h3&gt;La table lecteurs&lt;/h3&gt;

&lt;p&gt;Imaginons qu'on ait créé une table &lt;code&gt;lecteurs&lt;/code&gt; :&lt;/p&gt;

&lt;table border=&quot;1&quot; rules=&quot;all&quot; cellpadding=&quot;5&quot; cellspacing=&quot;5&quot; style=&quot;background-color:White;text-align:center;&quot;&gt;
&lt;caption&gt;lecteurs&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th style=&quot;width:20%;&quot;&gt;id&lt;/th&gt;&lt;th style=&quot;width:40%;&quot;&gt;nom&lt;/th&gt;&lt;th style=&quot;width:40%;&quot;&gt;role&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Pierre&lt;/td&gt;&lt;td&gt;clown&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Paul&lt;/td&gt;&lt;td&gt;développeur&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;Jacques&lt;/td&gt;&lt;td&gt;soutien moral&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;Olivier&lt;/td&gt;&lt;td&gt;chef&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;Kozlika&lt;/td&gt;&lt;td&gt;fée&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;



&lt;p&gt;Cette table est un tableau composé de 3 champs (les colonnes) : &lt;code&gt;id&lt;/code&gt; (l'identifiant de la ligne) correspondant à l'ordre dans lequel les lecteurs se sont enregistrés, &lt;code&gt;nom&lt;/code&gt; (le nom des utilisateurs) et &lt;code&gt;role&lt;/code&gt; qui est le rôle de l'utilisateur. Cette table compte 5 enregistrements (les lignes). Elle servira d'exemple dans ce billet.&lt;/p&gt;


&lt;p&gt;Admettons que la connexion a la base de données a été effectuée, c'est l'objet &lt;code&gt;$con&lt;/code&gt;. Nous allons voir comment utiliser la fonction &lt;code&gt;select()&lt;/code&gt;.&lt;/p&gt;


&lt;h3&gt;Première requête sur un enregistrement et un champ&lt;/h3&gt;

&lt;p&gt;Comment faire pour afficher le nom du premier lecteur ?&lt;/p&gt;


&lt;p&gt;Voici la requête en pseudo-code : &amp;quot;sélectionner &lt;strong&gt;nom&lt;/strong&gt; dans la table &lt;strong&gt;lecteurs&lt;/strong&gt; où &lt;strong&gt;id&lt;/strong&gt; = &lt;strong&gt;1&lt;/strong&gt;&amp;quot; et en SQL :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;span style=&quot;color: #00B&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #D00&quot;&gt;'SELECT nom FROM lecteurs WHERE id = 1;'&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;



&lt;p&gt;Effectuons la requête :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;span style=&quot;color: #00B&quot;&gt;$rs &lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;$con&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;select&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;$query&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;



&lt;p&gt;&lt;code&gt;$rs&lt;/code&gt; est un &lt;em&gt;recordset&lt;/em&gt;, c'est un groupe d'enregistrements (ici un seul) qui contient les champs (ici le champ nom). On accède au champ nom grâce à la fonction &lt;code&gt;field()&lt;/code&gt; ou sa version raccourcie &lt;code&gt;f()&lt;/code&gt;, on l'affiche ainsi :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;span style=&quot;color: #070&quot;&gt;echo(&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;$rs&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'nom'&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;));&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;



&lt;p&gt;Ceci affichera &amp;quot;Pierre&amp;quot;. Notez qu'il existe une syntaxe simplifiée pour afficher le même résultat :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;span style=&quot;color: #070&quot;&gt;echo(&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;$rs&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;nom&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;



&lt;p&gt;On peut aussi effectuer la même opération en une ligne :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;span style=&quot;color: #070&quot;&gt;echo(&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;$con&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;select&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;$query&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;)-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;nom&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;



&lt;h3&gt;Une requête sur un champ avec plusieurs enregistrements&lt;/h3&gt;

&lt;p&gt;Comment afficher les noms des derniers lecteurs ?&lt;/p&gt;


&lt;p&gt;Voici la requête en pseudo-code : &amp;quot;sélectionner &lt;strong&gt;nom&lt;/strong&gt; dans la table &lt;strong&gt;lecteurs&lt;/strong&gt; en rangeant par &lt;strong&gt;id&lt;/strong&gt; décroissant en se limitant à 2 enregistrements&amp;quot; et en SQL :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;span style=&quot;color: #00B&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'SELECT nom FROM lecteurs ORDER BY id DESC LIMIT 2;'&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;



&lt;p&gt;Effectuons la requête :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;span style=&quot;color: #00B&quot;&gt;$rs &lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;$con&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;select&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;$query&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;



&lt;p&gt;Le recordset &lt;code&gt;$rs&lt;/code&gt; contient 2 enregistrements, on ne peut plus accéder directement au champ &lt;strong&gt;nom&lt;/strong&gt; des 2 enregistrements avec &lt;code&gt;f('nom')&lt;/code&gt;. On va parcourir les enregistrements avec une boucle grâce à la fonction &lt;code&gt;fetch()&lt;/code&gt; :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;span style=&quot;color: #00B&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;while (&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;$rs&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;fetch&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;()) {echo(&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;$rs&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'nom'&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;' '&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;);}&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;



&lt;p&gt;Ceci va afficher &amp;quot;Kozlika Olivier&amp;quot;.&lt;/p&gt;


&lt;h3&gt;Une requête sur plusieurs champs de plusieurs enregistrements&lt;/h3&gt;

&lt;p&gt;Comment afficher les noms et les rôles des 3 premiers lecteurs ?&lt;/p&gt;


&lt;p&gt;Voici la requête en pseudo-code : &amp;quot;sélectionner &lt;strong&gt;nom&lt;/strong&gt; et &lt;strong&gt;rôle&lt;/strong&gt; dans la table &lt;strong&gt;lecteurs&lt;/strong&gt; par &lt;strong&gt;id&lt;/strong&gt; croissant en se limitant à &lt;strong&gt;3&lt;/strong&gt; enregistrements&amp;quot; et en SQL :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;span style=&quot;color: #00B&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #D00&quot;&gt;'SELECT nom,role FROM lecteurs ORDER BY id ASC LIMIT 3;'&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;



&lt;p&gt;Effectuons la requête :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;span style=&quot;color: #00B&quot;&gt;$rs &lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;$con&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;select&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;$query&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;



&lt;p&gt;Le recordset &lt;code&gt;$rs&lt;/code&gt; contient 3 enregistrements et 2 champs, on va devoir parcourir les enregistrements comme précédemment :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;span style=&quot;color: #070&quot;&gt;while (&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;$rs&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;fetch&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;()) {echo(&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;$rs&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'nom'&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;' : '&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;$rs&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #00B&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;'role'&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;' '&lt;/span&gt;&lt;span style=&quot;color: #070&quot;&gt;);}&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;



&lt;p&gt;Ceci va afficher &amp;quot;Pierre : clown Paul : développeur Jacques : soutien moral&amp;quot;.&lt;/p&gt;


&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;Désormais vous savez utiliser les fonctions de dbLayer pour effectuer des requêtes SQL de type SELECT.&lt;/p&gt;


&lt;p&gt;Si les commentaires sont fermés, vous pouvez commenter ce billet &lt;a href=&quot;http://gniark.net/blog/post/2007/11/15/Clearbricks-:-la-fonction-select-de-dbLayer#p665&quot; hreflang=&quot;fr&quot; title=&quot;Clearbricks : la fonction select() de dbLayer - gniark.net/blog/&quot;&gt;sur mon blog&lt;/a&gt; en attendant la réouverture des commentaires sur ce blog.&lt;/p&gt;


&lt;p&gt;Merci à Kozlika, Franck Paul et Biou pour leurs conseils et le temps qu'ils m'ont accordé.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://dissitou.klafoutis.org/post/2007/11/22/#rev-pnote-161-1&quot; id=&quot;pnote-161-1&quot;&gt;1&lt;/a&gt;] le langage peut différer d'un type à l'autre&lt;/p&gt;&lt;/div&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Fermeture pendant les travaux</title>
    <link>http://dissitou.klafoutis.org/post/2007/11/22/Fermeture-pendant-les-travaux</link>
    <guid isPermaLink="false">urn:md5:fbd0441c293b37b7f6eb0dc34f0a0855</guid>
    <pubDate>Thu, 22 Nov 2007 10:53:00 +0100</pubDate>
    <dc:creator>Kozlika</dc:creator>
        <category>Trucs divers</category>
            
    <description>    &lt;p&gt;Les commentaires et rétroliens sont fermés pour quelque temps pendant la refonte de l'organisation de klafoutis.org&lt;/p&gt;


&lt;p&gt;C'est pas grave, de toutes façons le meilleur endroit pour poser des questions c'est http://dotclear.net/forum/ :)&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Bonjour, c'est pour un sondage...</title>
    <link>http://dissitou.klafoutis.org/post/2007/04/21/Bonjour-cest-pour-un-sondage</link>
    <guid isPermaLink="false">urn:md5:4342fee45356582d9fa4ecb58401f184</guid>
    <pubDate>Sat, 21 Apr 2007 05:46:00 +0000</pubDate>
    <dc:creator>Kozlika</dc:creator>
        <category>Trucs divers</category>
            
    <description>    &lt;p&gt;La rédaction de la &lt;a href=&quot;http://doc.dotclear.net&quot;&gt;documentation&lt;/a&gt; pour les versions 1.2 et 2.0 de Dotclear arrivant à son terme (du moins pour les parties dont je peux m'occuper), je vais pouvoir reprendre les tutoriels pour dc 2.0 ici. J'en vois quatre catégories possibles pour ce qui concerne les thèmes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Portage des thèmes de 1.2 vers 2.0&lt;/li&gt;
&lt;li&gt;Comment personnaliser un thème existant (en partant de celui par défaut par exemple) ?&lt;/li&gt;
&lt;li&gt;Un thème en kit (dans l'esprit de &lt;a href=&quot;http://dotclear.khlevina.info/kit&quot;&gt;celui pour 1.2&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Créer un thème pour Dotclear de A à Z.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Par quoi je commence ? Ou vous avez d'autres besoins / souhaits non compris dans l'un des quatre sujets précédents ?&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Et je recrute aussi.&lt;/strong&gt; Par ailleurs, pour ceux qui voudraient donner un coup de main, j'ai quelques idées sur la question :)&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Total Validator</title>
    <link>http://dissitou.klafoutis.org/post/2007/04/10/Total-Validator</link>
    <guid isPermaLink="false">urn:md5:506e6ab5d9e07fb060b6ec4848cf01de</guid>
    <pubDate>Tue, 10 Apr 2007 19:22:00 +0200</pubDate>
    <dc:creator>Kozlika</dc:creator>
        <category>Trucs divers</category>
        <category>css</category><category>mais elle a bien raison quand même</category><category>outils online</category>    
    <description>    &lt;p&gt;Pinaise les gens, je viens de trouver l'arme ultime, le couteau suisse de la validation, le top du must : &lt;a href=&quot;http://www.totalvalidator.com/index.html&quot;&gt;Total Validator&lt;/a&gt;. C'est pas trop d'la bombe de balle ? (Via &lt;a href=&quot;http://veerle.duoh.com/blog/&quot;&gt;Veerle Blog&lt;/a&gt;.)&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Apportez votre pierre à l'édifice !</title>
    <link>http://dissitou.klafoutis.org/post/2007/03/08/Apportez-votre-pierre-a-ledifice</link>
    <guid isPermaLink="false">urn:md5:7eb707fd4103324c2dfca439bc04f473</guid>
    <pubDate>Thu, 08 Mar 2007 10:22:00 +0000</pubDate>
    <dc:creator>Kozlika</dc:creator>
        <category>Trucs divers</category>
        <category>documentation</category>    
    <description>    &lt;p&gt;Vous avez constaté des trous dans la &lt;a href=&quot;http://doc.dotclear.net/2.0/&quot;&gt;documentation de Dotclear&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Vous y avez relevé des erreurs ou fautes d'orthographe ?&lt;/p&gt;


&lt;p&gt;Vous trouvez telle explication peu claire ou incomplète, telle formulation à revoir ?&lt;/p&gt;


&lt;p&gt;Vous avez installé un blog sur un autre hébergement que ceux &lt;a href=&quot;http://doc.dotclear.net/2.0/hebergeurs&quot;&gt;déjà listés&lt;/a&gt; et vous pourriez rédiger un pas à pas sur &lt;a href=&quot;http://doc.dotclear.net/2.0/hosting/free.fr&quot;&gt;l'un&lt;/a&gt; &lt;a href=&quot;http://doc.dotclear.net/2.0/hosting/hosteur&quot;&gt;de&lt;/a&gt; &lt;a href=&quot;http://doc.dotclear.net/2.0/hosting/lost-oasis&quot;&gt;ces&lt;/a&gt; &lt;a href=&quot;http://doc.dotclear.net/2.0/hebergeurs/ovh&quot;&gt;modèles&lt;/a&gt; ?&lt;/p&gt;


&lt;p&gt;Vous avez installé plusieurs blogs avec une autre méthode que &lt;a href=&quot;http://doc.dotclear.net/2.0/admin/multiblog&quot;&gt;celles-ci&lt;/a&gt; ?&lt;/p&gt;


&lt;p&gt;Vous avez des suggestions diverses et variées ?&lt;/p&gt;


&lt;p&gt;Contribuez à l'amélioration de la documentation, envoyez vos mails à documentation(@)dotclear(.)net. Quel que soit votre niveau vous pouvez nous aider, ne serait-ce qu'en expérimentant son utilisation.&lt;/p&gt;


&lt;p&gt;Et si vous faites partie des pressés pour la sortie de la release, sachez qu'elle ne se fera pas sans que la doc soit complète, vous pouvez donc faire avancer le schmilblick vous aussi ;)&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Ce blog a déménagé</title>
    <link>http://dissitou.klafoutis.org/post/2007/01/10/Ce-blog-a-demenage</link>
    <guid isPermaLink="false">urn:md5:9a537a517e229c515563a6a3d1692ca8</guid>
    <pubDate>Wed, 10 Jan 2007 16:01:00 +0100</pubDate>
    <dc:creator>Kozlika</dc:creator>
        <category>Trucs divers</category>
        <category>cool URI dont change</category><category>htaccess</category><category>rewrite rules</category>    
    <description>    &lt;p&gt;Pour ne pas encombrer le serveur de &lt;a href=&quot;http://www.callmepep.org&quot;&gt;mon petit camarade&lt;/a&gt;, j'ai déménagé ce blog dont l'url sera désormais http://dissitou.klafoutis.org/&lt;/p&gt;


&lt;p&gt;J'ai mis une redirection mais pensez tout de même à modifier vos éventuels marque-page et abonnements !&lt;/p&gt;


&lt;p&gt;Ah tiens au fait, rien de plus simple que cette redirection. Dans le fichier htaccess placé à la racine de l'espace web de kozlika.org il m'a suffi d'ajouter :&lt;/p&gt;


&lt;pre&gt;RedirectMatch permanent /dissitou/(.*) http://dissitou.klafoutis.org/$1&lt;/pre&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Aorakits : 3. Un blog de test</title>
    <link>http://dissitou.klafoutis.org/post/2007/01/09/Aorakits-%3A-3-Un-blog-de-test</link>
    <guid isPermaLink="false">urn:md5:0b34335a364fd5238fa03387db1d887c</guid>
    <pubDate>Tue, 09 Jan 2007 17:40:00 +0100</pubDate>
    <dc:creator>Kozlika</dc:creator>
        <category>Trucs divers</category>
        <category>Aorakits</category><category>lorem ipsum</category>    
    <description>&lt;p&gt;L'un des avantages du multiblog c'est de pouvoir faire plusieurs blogs (wi wi, LaPalisse est mon cousin).&lt;/p&gt;


&lt;p&gt;Il serait dommage de ne pas en profiter pour créer à côté de votre blog public un petit blog dont l'adresse ne sera connue que de vous et ceux auxquels vous l'aurez donnée afin de vous y livrer en toute tranquillité à vos divers essais de laboratoire, notamment la réalisation ou la modification de vos thèmes.&lt;/p&gt;    &lt;p&gt;Un petit assortiment de billets de tous ordres, avec ou sans extrait, avec ou sans tags, avec ou sans catégories, avec des images grandes ou petites, flottantes ou non, des billets courts et des billets longs, des titres à rallonge ou des titres courts... et le fameux billet de test avec toutes les balises wiki in situ.&lt;/p&gt;


&lt;p&gt;Ah wuais mais faut les écrire, et vous avez la flemme. Je comprends ça, je suis moi-même la reine des feignasses. Mais si on vous livrait un fichier de sauvegarde tout prêt à importer dans votre blog-labo hein ?&lt;/p&gt;


&lt;p&gt;Hop !&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Télécharger le fichier en pièce jointe sur votre ordinateur&lt;/li&gt;
&lt;li&gt;Blogs -&amp;gt; Nouveau blog &amp;gt; toukivabien dans la config du nouveau blog&lt;/li&gt;
&lt;li&gt;Import/Export -&amp;gt; Charger un fichier de sauvegarde &amp;lt;le fichier que vous venez de télécharger&amp;gt;&lt;/li&gt;
&lt;li&gt;Et oualu. Il vous reste à insérer des images dans les billets tagués images (la maison ne les fournit pas), votre blog de test est prêt.&lt;/li&gt;
&lt;/ol&gt;</description>
    
          <enclosure url="http://dissitou.klafoutis.org/public/dispo/lorem-backup.txt"
      length="175748" type="text/plain" />
    
    
      </item>
    
</channel>
</rss>