<?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>Iptima &#187; MySql</title>
	<atom:link href="http://www.iptima.com/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iptima.com</link>
	<description>... Miscellanées multimedia ®</description>
	<lastBuildDate>Sun, 02 Oct 2011 17:52:06 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Centrer parfaitement une galerie d&#8217;images</title>
		<link>http://www.iptima.com/2010/02/18/centrer-une-galerie-dimages/</link>
		<comments>http://www.iptima.com/2010/02/18/centrer-une-galerie-dimages/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 11:39:59 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[Conception]]></category>
		<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Cascading Style Sheets]]></category>
		<category><![CDATA[Css]]></category>
		<category><![CDATA[Extensible HyperText Markup Language]]></category>
		<category><![CDATA[feuilles de style]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Galerie]]></category>
		<category><![CDATA[get_option]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[Hypertext Preprocessor]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mark Newhouse]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=284</guid>
		<description><![CDATA[Nous nous sommes longtemps interrogé sur la manière de centrer parfaitement la dernière ligne d&#8217;une galerie, quel que soit le nombre d&#8217;images. En effet, sur la plupart des sites n&#8217;utilisant pas des effets dynamiques comme JavaScript ou Flash, les images &#8230; <a href="http://www.iptima.com/2010/02/18/centrer-une-galerie-dimages/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nous nous sommes longtemps interrogé sur la manière de centrer parfaitement  la dernière ligne d&#8217;une galerie, quel que soit le nombre d&#8217;images. En effet, sur la plupart des sites n&#8217;utilisant pas des effets dynamiques comme JavaScript ou <a hreflang="en" href="http://www.adobe.com/products/flashplayer/" target="_blank" title ="aller sur le site de Flash Player (s'ouvre dans une nouvelle fenêtre)">Flash</a>, les images restantes d&#8217;une dernière ligne incomplète sont inexorablement alignées à gauche : les exemples sont nombreux.</p>
<p><span id="more-284"></span></p>
<p>Voici un problème relativement simple à formuler, mais dont la solution ne saute pas aux yeux. Après avoir parcouru en vain les arcanes du <em>Web</em> francophone puis anglophone, nous avons développé notre propre technique, que nous présentons ici.</p>
<p><em>Nota</em>. Dans notre présentation, par commodité, <em>O</em> désignera une image, tandis que <em>X</em> désignera une espace. (C&#8217;est notre modeste contribution à  l&#8217;<em><abbr title="American Standard Code for Information Interchange">Ascii</abbr> Art</em> !) Nous partirons aussi du postulat qu&#8217;une galerie correspond à des images de petites tailles alignées les unes avec les autres sur une page, dont leur largeur (et, idéalement, leur hauteur !) est équivalente.</p>
<p>Ainsi, pour cinq images, l&#8217;affichage sur une colonne s&#8217;effectue ainsi&#8230;</p>
<p class="center"><code>OXOXOXOXO</code></p>
<p>Pour les images restantes, le navigateur renvoie <em>logiquement</em>, sauf instruction contraire, les images restantes les unes à la suite des autres&#8230;</p>
<p>S&#8217;il reste quatre images&#8230;</p>
<p class="center"><code>OXOXOXOXX</code></p>
<p>S&#8217;il reste trois images&#8230;</p>
<p class="center"><code>OXOXOXXXX</code></p>
<p>S&#8217;il reste deux images&#8230;</p>
<p class="center"><code>OXOXXXXXX</code></p>
<p>S&#8217;il reste une image&#8230;</p>
<p class="center"><code>OXXXXXXXX</code></p>
<p>Or, ce résultat ne nous semble pas satisfaisant sur le plan visuel, car nous avons une fâcheuse tendance à cultiver la symétrie (&#8230; qui peut expliquer certains choix esthétiques&#8230; étonnants !).</p>
<p>Nous voulons obtenir l&#8217;affichage suivant&#8230;</p>
<p>S&#8217;il reste quatre images&#8230;</p>
<p class="center"><code>XOXOXOXOX</code></p>
<p>S&#8217;il reste trois images&#8230;</p>
<p class="center"><code>XXOXOXOXX</code></p>
<p>S&#8217;il reste deux images&#8230;</p>
<p class="center"><code>XXXOXOXXX</code></p>
<p>S&#8217;il reste une image&#8230;</p>
<p class="center"><code>XXXXOXXXX</code></p>
<p>Ainsi l&#8217;affichage nous semblera harmonieux, puisque les espaces seront équilibrés. Il ressemblera à :</p>
<p class="center"><code>OXOXOXOXO<br />
XOXOXOXOX<br />
XXOXOXOXX<br />
XXXOXOXXX<br />
XXXXOXXXX</code></p>
<p>Autrement posé, il s&#8217;agit de styler différemment les lignes complètes et la ligne incomplète, <em>orpheline</em>.</p>
<p>Aussi allons-nous <em>motoriser</em> les images. Nous utilisons <abbr title="pre-hypertext processing">Php</abbr>, mais le raisonnement peut être transposé à d&#8217;autres langages de programmation.</p>
<h2>Programmons les images</h2>
<p>Retournons à l&#8217;école pour un raisonnement arithmétique simple&#8230; Le nombre d&#8217;images à afficher (inconnu à l&#8217;avance &#8211; sinon, l&#8217;effort serait inutile !) est-il divisible par <em>3</em>, dans l&#8217;ensemble des nombres entiers <strong>Z</strong> ? Dans l&#8217;<strong>affirmative</strong>, des lignes <em>pleines</em> s&#8217;afficheront. Dans la <strong>négative</strong>, quel sera le reste de la division ? <em>2</em> ou <em>1</em>.</p>
<p>Ainsi&#8230;</p>
<ul>
<li>&#8230; pour 58 images, 58/3 = 19 images, reste 1 image ;</li>
<li>&#8230; pour 104 images, 104/3 = 34 images, restent 2 images.</li>
</ul>
<p>(Pour une ligne de cinq images, le même raisonnement conduirait à avoir cinq cas possibles.)</p>
<p>Voici un exemple de code&#8230;</p>
<p class="left"><code>&#60;?php<br />
&#36;images = array('paris.jpg', 'marseille.jpg', 'lyon.jpg', 'lille.jpg', 'strasbourg.jpg');<br />
&#36;result = count(&#36;images);<br />
&#36;target = 3;<br />
/* La &#34;cible&#34; (c'est-à-dire une ligne &#34;pleine&#34;) est de trois images */<br />
&#36;orphans = fmod(&#36;result, &#36;target); // &#34;orphans&#34; comme &#34;orphelines&#34;<br />
/* 'fmod' retourne le reste d'une division */<br />
&#36;total = (&#36;result - &#36;orphans); // &#34;total&#34; pour une ligne pleine<br />
foreach(&#36;images as &#36;key =&#62; &#36;image)<br />
/* Nous utilisons la deuxième forme d'une boucle 'foreach' qui permet d'utiliser la valeur &#36;key utile dans les calculs. */<br />
{<br />
&#160;&#160;if ((&#36;key + 1) &#60;= &#36;total) // Pour trois images<br />
/* La valeur + 1 permet d'éviter que le résultat soit égal à zéro à la fin de la boucle. Nous aurions pu assigner la valeur au début des instructions... pour ne pas avoir à la ré-écrire ensuite dans les deux conditions suivantes ! Tant que le total n'est pas dépassé, l'instruction s'applique. */<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_c&#34;&#62;'; // On créée la liste de définition &#34;gallery_c&#34; (voir ci-dessous)<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;else<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;if (((&#36;key + 1) &#62; &#36;total) &#38;&#38; (&#36;orphans == 2)) // Pour deux images<br />
/* La première condition permet de vérifier que le total est dépassé. S'il ne reste plus de lignes pleines et que le nombre d'images restantes est de deux, l'instruction s'applique. */<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_b&#34;&#62;'; // On créée la liste de définition &#34;gallery_b&#34;, (voir ci-dessous)<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;if (((&#36;key + 1) &#62; &#36;total) &#38;&#38; (&#36;orphans == 1)) // Pour une image<br />
/* La première condition permet de vérifier que le total est dépassé. S'il ne reste plus de lignes pleines et que le nombre d'image restante est de une, l'instruction s'applique. */<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_a&#34;&#62;'; // On créée la  liste de définition &#34;gallery_a&#34; (voir ci-dessous)<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;}<br />
&#160;&#160;echo &#36;image;<br />
/* La boucle 'foreach' affiche ensuite chaque image tour à tour. */<br />
&#160;&#160;echo '&#60;/dl&#62;'; // On ferme la liste de définitions<br />
}<br />
?&#62;</code></p>
<p>Ou sans les commentaires&#8230;</p>
<p class="left"><code>&#60;?php<br />
&#36;images = array('paris.jpg', 'marseille.jpg', 'lyon.jpg', 'lille.jpg', 'strasbourg.jpg');<br />
&#36;result = count(&#36;images);<br />
&#36;target = 3;<br />
&#36;orphans = fmod(&#36;result, &#36;target);<br />
&#36;total = (&#36;result - &#36;orphans);<br />
foreach(&#36;images as &#36;key =&#62; &#36;image)<br />
{<br />
&#160;&#160;if ((&#36;key + 1) &#60;= &#36;total)<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_c&#34;&#62;';<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;else<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;if (((&#36;key + 1) &#62; &#36;total) &#38;&#38; (&#36;orphans == 2))<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_b&#34;&#62;';<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;if (((&#36;key + 1) &#62; &#36;total) &#38;&#38; (&#36;orphans == 1))<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_a&#34;&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;}<br />
&#160;&#160;echo &#36;image;<br />
&#160;&#160;echo '&#60;/dl&#62;';<br />
}<br />
?&#62;</code></p>
<p>Les images ont été placées dans un tableau à titre didactique. Naturellement, en production, il faudra recourir à une méthode plus simple.</p>
<p>C&#8217;est pourquoi, nous présentons le code utilisé avec <em>WordPress</em>, mais qui peut être utilisé dans n&#8217;importe quel environnement&#8230;</p>
<p class="left"><code>&#60;?php<br />
&#36;gallery_bottom = get_post_meta(&#36;post-&#62;ID, 'gallery_bottom', false);<br />
/* Avec WordPress, 'get_post_meta' permet de récupérer le(s) enregistrements correspondant dans une table MySql. Ensuite, on retrouve l'interaction habituelle entre Php et MySql. Les enregistrements des images sont enregistrées dans une table sous la forme : source, titre, légende (optionnel), Copyright (optionnel)...<br />
http://www.monsite.com/uploads/france.jpg,france,photo de la France,© Wikimedia Commons<br />
http://www.monsite.com/uploads/suisse.jpg,suisse,photo de la Suisse,© Wikimedia Commons<br />
http://www.monsite.com/uploads/portugal.jpg,portugal,photo du Portugal,© Wikimedia Commons<br />
http://www.monsite.com/uploads/danemark.jpg,danemark,photo du Danemark,© Wikimedia Commons<br />
 */<br />
if (&#36;gallery_bottom)<br />
{<br />
&#160;&#160;&#36;resulttgb = count(&#36;gallery_bottom); // &#34;tgb&#34; comme &#34;Temporary Gallery Bottom&#34; pour individualiser le processus<br />
&#160;&#160;&#36;targettgb = 3;<br />
&#160;&#160;&#36;orphanstgb = fmod(&#36;resulttgb, &#36;targettgb);<br />
&#160;&#160;&#36;totaltgb = (&#36;resulttgb - &#36;orphanstgb);<br />
&#160;&#160;foreach(&#36;gallery_bottom as &#36;key =&#62; &#36;tgb)<br />
&#160;&#160;{<br />
&#160;&#160;&#160;&#160;list(&#36;fulltgb, &#36;alttgb, &#36;txtatgb, &#36;txtbtgb) = explode(&#34;,&#34;, &#36;tgb);<br />
&#160;&#160;&#160;&#160;/* On coupe la chaîne en segments pour récupérer chaque élément. */<br />
&#160;&#160;&#160;&#160;&#36;extfull = array(&#34;.jpg&#34;, &#34;.jpeg&#34;, &#34;.png&#34;, &#34;.gif&#34;);<br />
&#160;&#160;&#160;&#160;&#36;extthumb = array(&#34;-100x100.jpg&#34;, &#34;-100x100.jpeg&#34;, &#34;-100x100.png&#34;, &#34;-100x100.gif&#34;);<br />
&#160;&#160;&#160;&#160;/* Chaque élément est remplacé dans l'ordre des deux tableaux. On convertit le nom de l'image pour afficher le nom de sa vignette, et éviter une double saisie de l'utilisateur. Naturellement, les images &#34;-100x100.jpg&#34; sont déjà stockées ! Ainsi, 'france.jpg' devient 'france-100x100.jpg'. */<br />
&#160;&#160;&#160;&#160;&#36;srctgb = str_ireplace(&#36;extfull, &#36;extthumb, &#36;fulltgb);<br />
&#160;&#160;&#160;&#160;/* 'str_ireplace' n'est pas sensible à la casse, et permet, par exemple, de transformer &#34;.GIF&#34; en &#34;.gif&#34;. */<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;if ((&#36;key + 1) &#60;= &#36;totaltgb)<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_c&#34;&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;else<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (((&#36;key + 1) &#62; &#36;totaltgb) &#38;&#38; (&#36;orphanstgb == 2))<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_b&#34;&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (((&#36;key + 1) &#62; &#36;totaltgb) &#38;&#38; (&#36;orphanstgb == 1))<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_a&#34;&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dt&#62;&#60;a href=&#34;'.&#36;fulltgb.'&#34; title=&#34;'.&#36;alttgb.'&#34;&#62;&#60;img src=&#34;'.&#36;srctgb.'&#34; alt=&#34;'.&#36;alttgb.'&#34; title=&#34;'.&#36;alttgb.'&#34; /&#62;&#60;/a&#62;&#60;/dt&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;/* On concatène chaque élément récupéré tout à l'heure avec 'explode' dans une chaîne Html pour provoquer l'affichage de la vignette et du lien vers l'image. Par commodité, on utilise la même valeur pour les champs 'alt' et 'title'.*/<br />
&#160;&#160;&#160;&#160;&#160;&#160;if (&#36;txtatgb) // Puisque le champ est optionnel<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dd&#62;'.&#36;txtatgb.'&#60;/dd&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;if (&#36;txtbtgb) // Puisque le champ est optionnel<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dd&#62;'.&#36;txtbtgb.'&#60;/dd&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;/dl&#62;';<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;}<br />
&#160;&#160;echo '&#60;div class=&#34;spacer&#34;&#62;&#60;/div&#62;'; // Pour éviter le flottement d'un élément adjacent avec la propriété Css 'clear: both;' chère à Mark Newhouse<br />
}<br />
?&#62;</code></p>
<p>Ou sans les commentaires&#8230;</p>
<p class="left"><code>&#60;?php<br />
&#36;gallery_bottom = get_post_meta(&#36;post-&#62;ID, 'gallery_bottom', false);<br />
if (&#36;gallery_bottom)<br />
{<br />
&#160;&#160;&#36;resulttgb = count(&#36;gallery_bottom);<br />
&#160;&#160;&#36;targettgb = 3;<br />
&#160;&#160;&#36;orphanstgb = fmod(&#36;resulttgb, &#36;targettgb);<br />
&#160;&#160;&#36;totaltgb = (&#36;resulttgb - &#36;orphanstgb);<br />
&#160;&#160;foreach(&#36;gallery_bottom as &#36;key =&#62; &#36;tgb)<br />
&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#9;list(&#36;fulltgb, &#36;alttgb, &#36;txtatgb, &#36;txtbtgb) = explode(&#34;,&#34;, &#36;tgb);<br />
&#160;&#160;&#160;&#160;&#36;extfull = array(&#34;.jpg&#34;, &#34;.jpeg&#34;, &#34;.png&#34;, &#34;.gif&#34;);<br />
&#160;&#160;&#160;&#160;&#36;extthumb = array(&#34;-100x100.jpg&#34;, &#34;-100x100.jpeg&#34;, &#160;&#160;&#160;&#160;&#34;-100x100.png&#34;, &#34;-100x100.gif&#34;);<br />
&#160;&#160;&#160;&#160;&#36;srctgb = str_ireplace(&#36;extfull, &#36;extthumb, &#36;fulltgb);<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;if ((&#36;key + 1) &#60;= &#36;totaltgb)<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_c&#34;&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;else<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (((&#36;key + 1) &#62; &#36;totaltgb) &#38;&#38; (&#36;orphanstgb == 2))<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_b&#34;&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (((&#36;key + 1) &#62; &#36;totaltgb) &#38;&#38; (&#36;orphanstgb == 1))<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_a&#34;&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dt&#62;&#60;a href=&#34;'.&#36;fulltgb.'&#34; title=&#34;'.&#36;alttgb.'&#34;&#62;&#60;img src=&#34;'.&#36;srctgb.'&#34; alt=&#34;'.&#36;alttgb.'&#34; title=&#34;'.&#36;alttgb.'&#34; /&#62;&#60;/a&#62;&#60;/dt&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;if (&#36;txtatgb)<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dd&#62;'.&#36;txtatgb.'&#60;/dd&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;if (&#36;txtbtgb)<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dd&#62;'.&#36;txtbtgb.'&#60;/dd&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;/dl&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;}<br />
&#160;echo '&#60;div class=&#34;spacer&#34;&#62;&#60;/div&#62;';<br />
}<br />
?&#62;</code></p>
<p><em>Nota.</em> Depuis que <em>WordPress</em> intègre la gestion des vignettes, nous n&#8217;utilisons plus les champs personnalisés !</p>
<h2>Stylons les images</h2>
<p>Nous avons utilisé les listes de définition pour afficher les images. La structure de ces listes est commode, grâce à l&#8217;attribut &#60;dd&#62;, optionnel, qui permet ou non d&#8217;ajouter une légende, en restant compatible <abbr title="eXtensible HyperText Markup Language">Xhtml</abbr> Strict. Un exemple d&#8217;utilisation est donné dans l&#8217;excellent article <a href="http://www.pompage.net/pompe/listesdefinitions/" target="_blank" title="lire l'article Les listes de définitions : mal utilisées ou mal comprises ? (s'ouvre dans une nouvelle fenêtre)"><em>Les listes de définitions : mal utilisées ou mal comprises ?</em></a></p>
<p>Si une ligne est complète, c&#8217;est-à-dire comporte trois images, l&#8217;attribut <em>gallery_c</em> est utilisé pour les images. Si une ligne est incomplète et comporte deux images, l&#8217;attribut <em>gallery_b</em> est utilisé pour les images. Si une ligne est incomplète et comporte une image, l&#8217;attribut <em>gallery_c</em> est utilisé pour l&#8217;image.</p>
<p class="left"><code>dl.gallery_a, dl.gallery_b {<br />
&#160;&#160;float: left /* Inutile de provoquer le flottement de la dernière galerie, puisqu'il n'y a qu'une image ! */<br />
}<br />
dl.gallery_a dt, dl.gallery_b dt, dl.gallery_c dt, dl.gallery_a dd, dl.gallery_b dd, dl.gallery_c dd {<br />
&#160;&#160;text-align: center<br />
}<br />
dl.gallery_a dd, dl.gallery_b dd, dl.gallery_c dd {<br />
&#160;&#160;font-weight: bold<br />
}<br />
dl.gallery_a {<br />
&#160;&#160;width: 33.33% /* Nous fûmes longtemps persuadé que la version 5.5 d'Internet Explorer interprétait mal les décimales, à tort ! */<br />
}<br />
dl.gallery_b {<br />
&#160;&#160;width: 50%<br />
}<br />
dl.gallery_c {<br />
&#160;&#160;display: block;<br />
&#160;&#160;margin-left: auto;<br />
&#160;&#160;margin-right: auto;<br />
&#160;&#160;width: 100%<br />
}<br />
</code></p>
<p>Avec les largeurs fixes, il devient plus délicat d&#8217;aligner correctement les images, et le code est nettement moins élégant.</p>
<p>Ainsi, soit une feuille de style qui comporte les propriétés suivantes, sachant que la largeur du conteneur est de 625 pixels et celle d&#8217;une image est de 129 pixels avec ses bordures et ses marges&#8230;</p>
<p class="left"><code>dl.gallery_a, dl.gallery_b, dl.gallery_c {<br />
&#160;&#160;float: left<br />
}<br />
dl.gallery_a {<br />
&#160;&#160;margin: 15px 248px /* 248 pixels + 129 pixels + 248 pixels = 625 pixels */<br />
}<br />
dl.gallery_b {<br />
&#160;&#160;margin: 15px 91px /* 91 pixels + 129 pixels + 91 pixels + 91 pixels + 129 pixels + 91 pixels = 622 pixels - on doit se contenter de cette approximation - 91 pixels + 91 pixels, puisque les marges se juxtaposent */<br />
}<br />
dl.gallery_c {<br />
&#160;&#160;margin: 15px 39px; /* 39 pixels + 129 pixels + 39 pixels + 39 pixels + 129 pixels + 39 pixels + 39 pixels + 129 pixels + 39 pixels = 621 pixels - on doit se contenter de cette approximation - 39 pixels + 39 pixels, puisque les marges se juxtaposent */<br />
}<br />
</code></p>
<p><em>Nota</em>. Pour déterminer facilement, la largeur des espaces entre les images, il suffit d&#8217;appliquer le calcul :</p>
<p class="center"><code>(((largeur du conteneur ou de la page - (nombre d'images x largeur de chaque image))/((nombre d'images + 1) x 2)))</code></p>
<p>Par exemple, la largeur d&#8217;un conteneur est de 618 pixels (cette valeur simple est arbitraire !). Nous voulons y placer trois images de 150 pixels.</p>
<ul>
<li>Largeur du conteneur ou de la page : 618 pixels.</li>
<li>Nombre d&#8217;images : 3.</li>
<li>Largeur de chaque image : 150 pixels.</li>
<li>150 pixels x 3 images = 450 pixels.</li>
<li>Nombre d&#8217;espaces nécessaires : 3 images + 1.</li>
<li>Soient <em>(((618 &#8211; (3 x 150))/((3 + 1) x 2))) = <strong>21</strong></em>.</li>
<li>Soient (((618 pixels &#8211; (3 images x 150 pixels))/((3 espaces + 1) x 2))) = <strong>21 pixels</strong>.</li>
</ul>
<p>Nous avons utilisé des listes de définitions pour centrer nos images, mais notre solution peut s&#8217;adapter à d&#8217;autres types de balises et de contenu.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2010/02/18/centrer-une-galerie-dimages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Désactiver le suivi des versions de WordPress</title>
		<link>http://www.iptima.com/2008/10/29/desactiver-le-suivi-des-versions-de-wordpress/</link>
		<comments>http://www.iptima.com/2008/10/29/desactiver-le-suivi-des-versions-de-wordpress/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 10:30:57 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[Notes de lecture]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[administration de WordPress]]></category>
		<category><![CDATA[Hypertext Preprocessor]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Standard Query Language]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=271</guid>
		<description><![CDATA[Korben explique sur son weblogue comment désactiver le suivi des versions de WordPress en modifiant le fichier wp-config.php, après purge préalable de la base de données. Thomas revient sur ce propos en donnant la procédure détaillée pour nettoyer en profondeur &#8230; <a href="http://www.iptima.com/2008/10/29/desactiver-le-suivi-des-versions-de-wordpress/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Korben explique sur son <a href="http://www.korben.info/comment-desactiver-le-suivi-des-versions-sous-wordpress-26.html" target="_blank" title="lire l'article de Korben sur la désactivation des suivi de versions de WordPress(s'ouvre dans une nouvelle fenêtre)">weblogue</a> comment désactiver le suivi des versions de <em>WordPress</em> en modifiant le fichier <em>wp-config.php</em>, après purge préalable de la base de données. Thomas revient sur ce propos en donnant la <a href="http://blog.newbie-project.net/2008/10/30/astuce-wp-donnez-un-bon-coup-de-balai-a-votre-bdd.html" target="_blank" title="lire l'article de Thomas sur la nettoyage en profondeur des tables de WordPress(s'ouvre dans une nouvelle fenêtre)">procédure</a> détaillée pour nettoyer en profondeur les tables. Il est certain que cette fonctionnalité de <em>WordPress</em> est inutile lorsqu&#8217;on est seul rédacteur et alourdit inutilement le contenu de la table <em>wp_posts</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2008/10/29/desactiver-le-suivi-des-versions-de-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>000webhost, un hébergeur performant et gratuit</title>
		<link>http://www.iptima.com/2008/08/24/memo-000webhost-un-hebergeur-performant-et-gratuit/</link>
		<comments>http://www.iptima.com/2008/08/24/memo-000webhost-un-hebergeur-performant-et-gratuit/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 17:14:27 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[Conception]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[000webhost]]></category>
		<category><![CDATA[b2evolution]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[File Transfert Protocol]]></category>
		<category><![CDATA[Ftp]]></category>
		<category><![CDATA[hébergeur]]></category>
		<category><![CDATA[Hosting24]]></category>
		<category><![CDATA[Hypertext Preprocessor]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[Nucleus]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Sgc]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[Standard Query Language]]></category>
		<category><![CDATA[Système de Gestion de Contenu]]></category>
		<category><![CDATA[Typo3]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=228</guid>
		<description><![CDATA[&#60;addendum&#62; 15/09/2009. Nous laissons cet article en l&#8217;état cet article, pour mémoire : à l&#8217;usage, les services de 000webhost constituent une anarque, et fonctionnent plutôt mal, mais ils sont idéals pour héberger des sites expérimentaux ou poubelles. En cas de &#8230; <a href="http://www.iptima.com/2008/08/24/memo-000webhost-un-hebergeur-performant-et-gratuit/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>&#60;addendum&#62;</strong></p>
<p><em>15/09/2009.</em></p>
<p>Nous laissons cet article en l&#8217;état cet article, pour mémoire : à l&#8217;usage, les services de <a href="http://www.000webhost.com/69994.html" target="_blank" title="aller sur le site de 000webhost (s'ouvre dans une nouvelle fenêtre)">000webhost</a> constituent une </em>anarque</em>, et fonctionnent plutôt mal, mais ils sont idéals pour héberger des sites expérimentaux ou <em>poubelles</em>. En cas de problème, les services payants de <a href="http://www.hosting24.com/" target="_blank" title="aller sur le site d'Hosting24 (s'ouvre dans une nouvelle fenêtre)">Hosting24</a> sont proposés, mais il ne valent guère mieux. Autant être prévenu ! </p>
<p><strong>&#60;/addendum&#62;</strong></p>
<p>Avec <a href="http://www.000webhost.com/69994.html" target="_blank" title="aller sur le site de 000webhost (s'ouvre dans une nouvelle fenêtre)">000webhost</a>, nous pensons avoir trouvé l&#8217;hébergeur idéal :<br />
<span id="more-228"></span></p>
<ul>
<li>350 Mega-octets d&#8217;espace disque,</li>
<li>100 Giga-octets de bande passante,</li>
<li><abbr title="pre-hypertext processing">Php</abbr> et MySql en version 5,</li>
<li>activation immédiate du compte, y compris de l&#8217;accès <abbr title="File Transfert Protocol">Ftp</abbr> et de la base MySql,</li>
<li>hébergement en nom de domaine, ou en sous domaine avec une adresse comme <em>http://chezmoi.site40.net</em>,</li>
<li>installation en un clic des plates-formes de weblogue (<em>WordPress</em>, <em>Nucleus</em>, <em>b2evolution</em>&#8230;), de <abbr title="Système de Gestion de Contenu (Content Management System - Cms - en anglais)">Sgc</abbr> (<em>Drupal</em>, <em>Joomla</em>, <em>Typo3</em>&#8230;) <em>et cetera</em> pour les moins chevronnés,</li>
<li>haute disponibilité,</li>
<li>sans publicité,</li>
<li>serveur de mel,</li>
<li>gratuit.</li>
</ul>
<p>Autrement dit, ce service propose l&#8217;ensemble des fonctionnalités d&#8217;un hébergeur classique, mais il est gratuit. Le modèle économique repose sur les dons et, essentiellement, sur les souscriptions payantes à des services supplémentaires.  </p>
<p>Les serveurs sont situés aux États-Unis d&#8217;Amérique, mais les temps de réponse sont comparables à ceux d&#8217;un hébergeur situé (au hasard&#8230;) en Allemagne !</p>
<p>L&#8217;assistance technique est limitée à un forum de discussion, mais semble aussi réactive que les <em>hotliners</em> des hébergements classiques à l&#8217;entendement parfois limité.</p>
<p>Cette offre est idéale pour débutants, par exemple sous <em>WordPress</em> : plutôt qu&#8217;installer une version du weblogue en <em>local</em> au risque de ne pas savoir exporter la base de données avec la mise en production, il est plus utile d&#8217;utiliser un serveur dès ses premiers pas. </p>
<p>Sont parfois à déplorer certaines <em>sautes</em> du serveur, qui durent le plus souvent quelques secondes. Cet écueil n&#8217;est guère gênant pour les sites amateurs.</p>
<p>Désormais, nous ne connaissons plus d&#8217;erreur <em>500</em> sur nos sites ni de problème d&#8217;allocation de mémoire <abbr title="pre-hypertext processing">Php</abbr>. Notre vie de concepteur de sites a changé grâce à <a href="http://www.000webhost.com/69994.html" target="_blank" title="aller sur le site de 000webhost (s'ouvre dans une nouvelle fenêtre)">000webhost</a> !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2008/08/24/memo-000webhost-un-hebergeur-performant-et-gratuit/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Accéder aux options de WordPress depuis l&#8217;interface d&#8217;administration</title>
		<link>http://www.iptima.com/2008/08/23/acceder-aux-options-de-wordpress-depuis-linterface-dadministration/</link>
		<comments>http://www.iptima.com/2008/08/23/acceder-aux-options-de-wordpress-depuis-linterface-dadministration/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 17:34:56 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[administration de WordPress]]></category>
		<category><![CDATA[Hypertext Preprocessor]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[Standard Query Language]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=213</guid>
		<description><![CDATA[Pour accéder aux options de WordPress, il suffit de taper l&#8217;adresse http://www.site.com/wp-admin/options.php. L&#8217;équivalent de la table wp_options s&#8217;affiche, et elle permet de modifier d&#8217;un clic de souris les caractéristiques de son weblogue. Curieusement, ce lien n&#8217;est pas disponible en clair &#8230; <a href="http://www.iptima.com/2008/08/23/acceder-aux-options-de-wordpress-depuis-linterface-dadministration/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Pour accéder aux options de WordPress, il suffit de taper l&#8217;adresse <em>http://www.site.com/wp-admin/options.php</em>. L&#8217;équivalent de la table <em>wp_options</em> s&#8217;affiche, et elle permet de modifier d&#8217;un clic de souris les caractéristiques de son weblogue. Curieusement, ce lien n&#8217;est pas disponible <em>en clair</em> depuis l&#8217;interface d&#8217;administration de <em>WordPress</em> !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2008/08/23/acceder-aux-options-de-wordpress-depuis-linterface-dadministration/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Changer d&#8217;hébergeur Web sans interruption de service</title>
		<link>http://www.iptima.com/2008/08/22/changer-dhebergeur-web-sans-interruption-de-service/</link>
		<comments>http://www.iptima.com/2008/08/22/changer-dhebergeur-web-sans-interruption-de-service/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 09:09:32 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[Conception]]></category>
		<category><![CDATA[Notes de lecture]]></category>
		<category><![CDATA[Dns]]></category>
		<category><![CDATA[Domain Name System]]></category>
		<category><![CDATA[hébergeur]]></category>
		<category><![CDATA[Internet Protocol]]></category>
		<category><![CDATA[Ip]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[registar]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[Standard Query Language]]></category>
		<category><![CDATA[Tld]]></category>
		<category><![CDATA[Top Level Domains]]></category>
		<category><![CDATA[Traceroute]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=179</guid>
		<description><![CDATA[Mécontent de notre hébergeur (dénis de service parfois prolongés sur nos sites et autres dysfonctionnements dûs à un serveur mutualisé à saturation&#8230;), nous avons songé à transférer nos données vers un nouveau prestataire. Or, nous redoutions la coupure temporaire de &#8230; <a href="http://www.iptima.com/2008/08/22/changer-dhebergeur-web-sans-interruption-de-service/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Mécontent de notre hébergeur (dénis de service parfois prolongés sur nos sites et autres dysfonctionnements dûs à un serveur mutualisé à saturation&#8230;), nous avons songé à transférer nos données vers un nouveau prestataire. Or, nous redoutions la coupure temporaire de nos sites (peut-être avions-nous mal cerné situer le problème !) : le changement d&#8217;hébergeur contraint à changer les adresses <abbr title="Domain Name System">Dns</abbr>, qui mettent en entre 24 et 48 heures en théorie (ce délai de prudence est peut-être motivé par des raisons juridiques&#8230;) pour se propager pour que les serveurs de noms locaux prennent en compte la modification.</p>
<p><span id="more-179"></span></p>
<p>Pour contourner l&#8217;interruption de service en cas de changement d&#8217;hébergeur, quelques scripts sont disponibles, mais nous n&#8217;avions nullement envie d&#8217;investir du temps en <em>bidouillage</em>. Une solution pérenne et fiable nous semblait préférable.</p>
<p>Aussi avons-nous tenu le raisonnement suivant&#8230; Si nous copions nos données vers un hébergeur B en les laissant intact sur l&#8217;hébergeur A, nos sites ne devraient pas connaître d&#8217;interruption de service. Les serveurs de noms locaux qui auront pris en compte la modification vers B dirigeront les visiteurs vers B ; les serveurs de noms locaux qui n&#8217;auront pas pris en compte la modification vers B dirigeront les visiteurs vers A.</p>
<p>Se pose, certes, la question du transfert par <abbr title="File Transfert Protocol">Ftp</abbr> du contenu vers le nouvel hébergeur, tant que l&#8217;adresse n&#8217;est pas résolue : au lieu d&#8217;utiliser l&#8217;adresse <em>ftp.monsite.com</em>, il suffit d&#8217;indiquer à titre temporaire l&#8217;adresse <abbr title="Internet Protocol">Ip</abbr> indiquée par l&#8217;hébergeur.</p>
<p>Pour l&#8217;anecdote, nous avons changé d&#8217;hébergeur trois sites, durant la journée du 21 août 2008, entre 15 h 00 et 20 h 00. (Pour les amateurs de géographie, l&#8217;ancien serveur était situé à Karlsruhe, en Allemagne, le nouveau à Las Vegas, aux États-Unis d&#8217;Amérique.) Deux possédaient la <abbr title="Top Level Domains">Tld</abbr> <em>.info</em>, l&#8217;autre la <abbr title="Top Level Domains">Tld</abbr> <em>.com</em>. (La précision est donnée, car il semble que la vitesse de propagation des <abbr title="Domain Name System">Dns</abbr> soit différente selon l&#8217;extension.) Nous avons utilisé l&#8217;outil réseau <em>Traceroute</em> pour mesurer le temps pris par le changement d&#8217;hébergeur après déclaration des nouvelles directions <abbr title="Domain Name System">Dns</abbr> auprès de notre <em>Registar</em> :</p>
<ul>
<li>notre premier site en <em>.info</em> a demandé trois heures pour être correctement redirigé,</li>
<li>notre deuxième site en <em>.com</em> a demandé deux heures pour être correctement redirigé,</li>
<li>notre troisième site en <em>.info</em> a demandé deux heures pour être correctement redirigé.</li>
</ul>
<p>(<em>Nota</em>. Ces mesures n&#8217;ont assurément aucune valeur, hormis informative !)</p>
<p>Nous sommes loin des 24 à 48 heures prévues ; cette hypothèse nous conforte dans l&#8217;idée que nous avions mal appréhendé la question.</p>
<p>Sur le plan chronologique, nous avons effectué la migration dans l&#8217;ordre suivant :</p>
<ul>
<li>copie de nos répertoires et de nos pages par <abbr title="File Transfert Protocol">Ftp</abbr>;</li>
<li>copie de nos bases de données <abbr title="Standard Query Language">Sql</abbr> <em>via</em> <em>phpMyAdmin</em> ;</li>
<li>déclaration des nouvelles directions <abbr title="Domain Name System">Dns</abbr> auprès de notre <em>Registar</em>.</li>
</ul>
<p>(Sous <em>WordPress</em>, aucune réinstallation n&#8217;a été nécessaire.)</p>
<p>Nous avons choisi de ne pas modifier le contenu de nos sites pendant quelques heures pour simplifier la gestion de la procédure (le problème serait fort différent pour un vendeur en ligne !). Aucune donnée n&#8217;a été perdue, hormis quelques <em>logs</em> de connexion des visiteurs récupérés <em>manuellement</em> chez l&#8217;ancien hébergeur.</p>
<p>L&#8217;unique contrainte de l&#8217;opération consiste à disposer des services de son ancien hébergeur, pendant quelques jours.</p>
<p>En vérifiant le positionnement de l&#8217;article dans les moteurs de recherche, nous venons de nous apercevoir que Francis avait commis un <a href="http://www.fran6art.com/wordpress/wordpress-reussir-son-changement-dhebergement-en-7-etapes/" target="_blank" title="lire l'article réussir son changement d'hébergeur en sept étapes  (s'ouvre dans une nouvelle fenêtre)">article</a> similaire, concernant <em>WordPress</em> !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2008/08/22/changer-dhebergeur-web-sans-interruption-de-service/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimiser ses requêtes Sql avec WordPress</title>
		<link>http://www.iptima.com/2008/08/06/optimiser-ses-requetes-sql-avec-wordpress/</link>
		<comments>http://www.iptima.com/2008/08/06/optimiser-ses-requetes-sql-avec-wordpress/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 17:47:36 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Hypertext Preprocessor]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[Standard Query Language]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=135</guid>
		<description><![CDATA[Thomas a commis un article passionnant, Optimisez vos requêtes Sql avec WordPress 2.5. Est expliqué comment afficher dans le pied de page le nombre de requêtes Sql et leur temps d&#8217;exécution. Ces renseignements sont d&#8217;un intérêt fort théorique, mais peuvent &#8230; <a href="http://www.iptima.com/2008/08/06/optimiser-ses-requetes-sql-avec-wordpress/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Thomas a commis un article passionnant, <a href="http://blog.newbie-project.net/2008/03/24/optimisez-vos-requetes-sql-avec-wordpress-25.html" target="_blank" title="lire l'article Optimisez vos requêtes Sql avec WordPress 2.5 (s'ouvre dans une nouvelle fenêtre)">Optimisez vos requêtes Sql avec WordPress 2.5</a>. Est expliqué comment afficher dans le pied de page le nombre de requêtes <abbr title="Standard Query Language">Sql</abbr> et leur temps d&#8217;exécution. Ces renseignements sont d&#8217;un intérêt fort théorique, mais peuvent combler les technophiles.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2008/08/06/optimiser-ses-requetes-sql-avec-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Défragmenter et ré-ordonner la table des options de WordPress</title>
		<link>http://www.iptima.com/2008/08/06/defragmenter-et-re-ordonner-la-table-des-options-de-wordpress/</link>
		<comments>http://www.iptima.com/2008/08/06/defragmenter-et-re-ordonner-la-table-des-options-de-wordpress/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 17:35:29 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[Notes de lecture]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[Standard Query Language]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=132</guid>
		<description><![CDATA[Au fil de mes lectures, j&#8217;ai trouvé un excellent article de Thomas sur la défragmentation et la ré-ordonnance de la table des options de WordPress. Ces manipulations permettent d&#8217;améliorer le fonctionnement de WordPress. Thomas n&#8217;est âgé que de 17 ans, &#8230; <a href="http://www.iptima.com/2008/08/06/defragmenter-et-re-ordonner-la-table-des-options-de-wordpress/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Au fil de mes lectures, j&#8217;ai trouvé un excellent article de Thomas sur la <a href="http://blog.newbie-project.net/2008/03/24/astuce-wordpress-defragmenter-la-table-des-options.html" target="_blank" title="lire l'article Défragmenter et réordonner la table des options de WordPress  (s'ouvre dans une nouvelle fenêtre)">défragmentation et la ré-ordonnance de la table des options de WordPress</a>. Ces manipulations permettent d&#8217;améliorer le fonctionnement de <em>WordPress</em>. Thomas n&#8217;est âgé que de 17 ans, mais <em>Aux âmes bien nées, la valeur ne fuit point le nombre des années</em> (Pierre Corneille) !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2008/08/06/defragmenter-et-re-ordonner-la-table-des-options-de-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wp-DbManager</title>
		<link>http://www.iptima.com/2007/09/05/wp-dbmanager/</link>
		<comments>http://www.iptima.com/2007/09/05/wp-dbmanager/#comments</comments>
		<pubDate>Wed, 05 Sep 2007 17:21:49 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[base de données]]></category>
		<category><![CDATA[Cron]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[modules d'extension]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[plugiciels]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[sauvegarde]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[Standard Query Language]]></category>
		<category><![CDATA[Wp-DbManager]]></category>
		<category><![CDATA[Wp-Print]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=48</guid>
		<description><![CDATA[Dans un précédent article, nous louions les vertus du module d&#8217;extension WordPress Database Backup. Or, en nous intéressant à nouveau au Plugin Wp-Print, nous avons découvert que son auteur, Lester &#8216;GaMerZ&#8217; Chan, avait développé Wp-DbManager. Wp-DbManager, qui s&#8217;administre via un &#8230; <a href="http://www.iptima.com/2007/09/05/wp-dbmanager/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dans un précédent article, nous louions les vertus du module d&#8217;extension <em>WordPress Database Backup</em>.</p>
<p><span id="more-48"></span></p>
<p>Or, en nous intéressant à nouveau au Plugin <strong>Wp-Print</strong>, nous avons découvert que son auteur, Lester &#8216;GaMerZ&#8217; Chan, avait développé <a  href="http://www.lesterchan.net/others/downloads.php?id=15" target="_blank" title="aller sur le site du Plugin WP-DbManager">Wp-DbManager</a>.</p>
<p><strong>Wp-DbManager</strong>, qui s&#8217;administre <em>via</em> un bouton <em>Base de données</em> à côté du <em>Tableau de bord</em>, non seulement gère les sauvegardes (et, grâce à l&#8217;onglet <em>options</em>, de les planifier), mais aussi répare et optimise la base de données, vide et supprime des tables et lance des requêtes <abbr title="Standard Query Language">Sql</abbr>.</p>
<p>Autrement dit, <strong>Wp-DbManager</strong> permet de s&#8217;affranchir de l&#8217;utilisation de <em>phpMyAdmin</em>, et c&#8217;est un confort appréciable.</p>
<p>Comme un bonheur n&#8217;arrive jamais seul et comme le monde <em>WordPress</em> n&#8217;est pas si grand (!), Lise propose sur son site une <a href="http://liseweb.fr/BLOG/?page_id=160" target="_blank" title="aller sur le site de Lise (s'ouvre dans une nouvelle fenêtre)">traduction</a> en français de <strong>Wp-DbManager</strong>. Toutefois, la ligne no 371 du fichier <em>dbmanager.php</em> comportait une erreur, et empêchait la traduction de ce champ : nous avons renvoyé le fichier avec sa correction à Lester.</p>
<p><strong>&#60;addendum&#62;</strong></p>
<p><em>21/03/2008.</em></p>
<p>Lorsque plusieurs weblogues fonctionnant sous <em>WordPress</em> partagent la même base de données, il est inutile de dupliquer <strong>Wp-DbManager</strong> ! Un seul weblogue permettra d&#8217;administrer l&#8217;ensemble des sauvegardes.</p>
<p><strong>&#60;/addendum&#62;</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2007/09/05/wp-dbmanager/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress Database Backup</title>
		<link>http://www.iptima.com/2007/08/11/plugin-wordpress-database-backup/</link>
		<comments>http://www.iptima.com/2007/08/11/plugin-wordpress-database-backup/#comments</comments>
		<pubDate>Sat, 11 Aug 2007 18:06:01 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[base de données]]></category>
		<category><![CDATA[Cron]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[modules d'extension]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[plugiciels]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[sauvegarde]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[Standard Query Language]]></category>
		<category><![CDATA[WordPress Database Backup]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=40</guid>
		<description><![CDATA[WordPress Database Backup est un module d&#8217;extension qui, comme son nom l&#8217;indique, autorise les sauvegardes de la base de données et les envoie éventuellement par mel. Ni l&#8217;installation, ni l&#8217;emploi de ce plugiciel (qui s&#8217;administre depuis le menu Gérer, onglet &#8230; <a href="http://www.iptima.com/2007/08/11/plugin-wordpress-database-backup/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://www.ilfilosofo.com/blog/wordpress-Plugins/" target="_blank" title="aller sur le site du Plugin WordPress database backup (s'ouvre dans une nouvelle fenêtre)">WordPress Database Backup</a> est un module d&#8217;extension qui, comme son nom l&#8217;indique, autorise les sauvegardes de la base de données et les envoie éventuellement par mel.</p>
<p><span id="more-40"></span></p>
<p>Ni l&#8217;installation, ni l&#8217;emploi de ce plugiciel (qui s&#8217;administre depuis le menu <em>Gérer</em>, onglet <em>Backup</em>) ne seront décrits, car les explications sont superflues.</p>
<p>Il ne faut pas hésiter à demander à <strong>WordPress Database Backup</strong> une sauvegarde journalière. Même si nous détestons utiliser les ressources (forcément) rares d&#8217;Internet — voilà pourquoi, nous n&#8217;avons jamais apprécié les pièces jointes inutiles sur notre mel —, la sécurité est fondamentale : nous ne sommes pas à l&#8217;abri de la défaillance d&#8217;un serveur ! Enfin, une base de données <em>MySql</em> compressée ne va pas saturer notre boîte de réception.</p>
<p>À ce propos, il peut être judicieux de défragmenter et d&#8217;optimiser parfois ses tables <em>MySql</em> pour un fonctionnement optimal de <em>WordPress</em>.</p>
<p>Utilisateurs, réjouissons-nous de cet utilitaire si simple à configurer. Ce <em>Plugin</em> est, nous le pensons, une excellente démonstration de la simplicité d&#8217;emploi de <em>WordPress</em> !</p>
<p>Lorsque nous avions songé me convertir aux <abbr title="Système de Gestion de Contenu (Content Management System - Cms - en anglais)">Sgc</abbr>, nous avions d&#8217;abord choisi <em>Dotclear</em>. Or, d&#8217;un naturel prudent, notre premier objectif a été de savoir comment automatiser les sauvegardes. Lassé de notre long combat avec la configuration d&#8217;une tâche <em>Cron</em>, nous en avons déduit que cette plateforme n&#8217;était guère professionnelle, et nous avons rejoint sans regret le monde <em>WordPress</em> !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2007/08/11/plugin-wordpress-database-backup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

