<?xml 
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
>

<channel xml:lang="fr">
	<title>Minimalteck.fr</title>
	<link>http://minimalteck.fr/</link>
	
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>

	<image>
		<title>Minimalteck.fr</title>
		<url>http://minimalteck.fr/local/cache-vignettes/L48xH48/siteon0-e5814.png</url>
		<link>http://minimalteck.fr/</link>
		<height>48</height>
		<width>48</width>
	</image>



<item xml:lang="fr">
		<title>RHEL/CentOs : Upgrade PHP 5.1 &gt; 5.2, r&#233;installation eAccelerator</title>
		<link>http://minimalteck.fr/admin/rhel-centos-upgrade-php-5-1-5-2</link>
		<guid isPermaLink="true">http://minimalteck.fr/admin/rhel-centos-upgrade-php-5-1-5-2</guid>
		<dc:date>2010-04-15T13:13:43Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Minimalteck</dc:creator>


		<dc:subject>Howto</dc:subject>
		<dc:subject>PHP</dc:subject>

		<description>Tout est dans le titre !!! Comme j'ai fait mini-howto pour le boulot, je le d&#233;pose &#233;galement ici&#8230; Nous allons ici utiliser les binaires mis &#224; disposition par l'IUS Community Project. R&#201;CUPERATION ET AJOUT DES D&#201;POT IUS [root@machine ]# wget http://dl.iuscommunity.org/pub/ius/&#8230; [root@machine ]# wget http://dl.iuscommunity.org/pub/ius/&#8230; [root@machine ]# rpm -Uvh ius-release*.rpm epel-release*.rpm VERIF DES PACKAGES PRESENTS [root@machine ]# rpm -qa | grep php php-mbstring-5.1.6-27.el5 (...)

-
&lt;a href="http://minimalteck.fr/admin/" rel="directory"&gt;Admin&lt;/a&gt;

/ 
&lt;a href="http://minimalteck.fr/howto" rel="tag"&gt;Howto&lt;/a&gt;, 
&lt;a href="http://minimalteck.fr/php" rel="tag"&gt;PHP&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class='spip_logos' alt=&quot;&quot; src=&quot;http://minimalteck.fr/local/cache-vignettes/L150xH79/arton58-5b587.png&quot; width='150' height='79' style='height:79px;width:150px;' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Tout est dans le titre !!! Comme j'ai fait mini-howto pour le boulot, je le d&#233;pose &#233;galement ici&#8230; &lt;img class=&quot;no_image_filtrer&quot; alt=&quot;wink&quot; title=&quot;wink&quot; src=&quot;http://www.minimalteck.fr/plugins/couteau_suisse/img/chatons/wink.gif&quot; width=&quot;20&quot; height=&quot;20&quot;/&gt;&lt;/p&gt; &lt;p&gt;Nous allons ici utiliser les binaires mis &#224; disposition par l'&lt;a href='http://iuscommunity.org/' class='spip_out' hreflang='en' title=&quot;iuscommunity.org&quot; rel='external'&gt;IUS Community Project&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;div class=&quot;cs_sommaire cs_sommaire_avec_fond&quot; id=&quot;outil_sommaire&quot;&gt; &lt;div class=&quot;cs_sommaire_inner&quot;&gt; &lt;div class=&quot;cs_sommaire_titre_avec_fond&quot;&gt; Sommaire &lt;/div&gt; &lt;ul&gt; &lt;li&gt;&lt;a title=&quot;R&#201;CUPERATION ET AJOUT DES D&#201;POT IUS&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend#outil_sommaire_0&quot;&gt;R&#201;CUPERATION ET AJOUT DES (&#8230;)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;VERIF DES PACKAGES PRESENTS&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend#outil_sommaire_1&quot;&gt;VERIF DES PACKAGES PRESENTS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;D&#201;SINSTALLATION DES ANCIENS PACKAGES RHEL /INSTALLATION DES PACKAGES IUS&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend#outil_sommaire_2&quot;&gt;D&#201;SINSTALLATION DES ANCIENS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;R&#201;INSTALLATION EACCELERATOR&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend#outil_sommaire_3&quot;&gt;R&#201;INSTALLATION EACCELERATOR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;V&#201;RIFICATION DE LA PRISE EN COMPTE D&amp;#39;EACCELERATOR ET VERSION PHP&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend#outil_sommaire_4&quot;&gt;V&#201;RIFICATION DE LA PRISE (&#8230;)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;REDEMARRAGE DU SERVEUR WEB&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend#outil_sommaire_5&quot;&gt;REDEMARRAGE DU SERVEUR (&#8230;)&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;h3 class=&quot;spip&quot; id=&quot;outil_sommaire_0&quot;&gt;&lt;a title=&quot;Sommaire&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;R&#201;CUPERATION ET AJOUT DES D&#201;POT IUS&lt;/h3&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;[root@machine ~]# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/i386/ius-release-1-4.ius.el5.noarch.rpm&lt;br /&gt; [root@machine ~]# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/i386/epel-release-1-1.ius.el5.noarch.rpm&lt;br /&gt; [root@machine ~]# rpm -Uvh ius-release*.rpm epel-release*.rpm&lt;/code&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;outil_sommaire_1&quot;&gt;&lt;a title=&quot;Sommaire&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;VERIF DES PACKAGES PRESENTS&lt;/h3&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;[root@machine ~]# rpm -qa | grep php&lt;br /&gt; php-mbstring-5.1.6-27.el5&lt;br /&gt; php-mysql-5.1.6-27.el5&lt;br /&gt; php-ldap-5.1.6-27.el5&lt;br /&gt; php-eaccelerator-0.9.5.2-2.el5&lt;br /&gt; php-5.1.6-27.el5&lt;br /&gt; php-xml-5.1.6-27.el5&lt;br /&gt; php-common-5.1.6-27.el5&lt;br /&gt; php-pdo-5.1.6-27.el5&lt;br /&gt; php-gd-5.1.6-27.el5&lt;br /&gt; php-cli-5.1.6-27.el5&lt;/code&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;outil_sommaire_2&quot;&gt;&lt;a title=&quot;Sommaire&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;D&#201;SINSTALLATION DES ANCIENS PACKAGES RHEL /INSTALLATION DES PACKAGES IUS&lt;/h3&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;[root@machine ~]# yum shell&lt;br /&gt; Loaded plugins: rhnplugin, security&lt;br /&gt; Setting up Yum Shell&lt;br /&gt; &gt; remove php-mbstring php-mysql php-ldap php php-xml php-common php-pdo php-gd php-cli&lt;br /&gt; Setting up Remove Process&lt;br /&gt; &gt; install php52-common php52-mbstring php52-mysql php52-ldap php52 php52-xml php52-pdo php52-gd php52-cli&lt;br /&gt; [...]&lt;br /&gt; Setting up Install Process&lt;br /&gt; &gt; transaction solve&lt;br /&gt; [...]&lt;br /&gt; &gt; transaction run&lt;br /&gt; [...]&lt;br /&gt; Finished Transaction&lt;br /&gt; &gt; exit&lt;br /&gt; Leaving Shell&lt;/code&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;outil_sommaire_3&quot;&gt;&lt;a title=&quot;Sommaire&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;R&#201;INSTALLATION EACCELERATOR [&lt;a href='#nb1' class='spip_note' rel='footnote' title='L'extension eaccelerator (EPEL) a du &#234;tre supprim&#233;e, du fait d'un pb de (...)' id='nh1'&gt;1&lt;/a&gt;]&lt;/h3&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;[root@machine ~]# yum install autoconf automake libtool m4 php52-devel&lt;br /&gt; [root@machine ~]# mkdir eaccelerator&lt;br /&gt; [root@machine ~]# cd eaccelerator/&lt;br /&gt; [root@machine ~]# wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6.tar.bz2&lt;br /&gt; [root@machine ~]# tar xjf eaccelerator-0.9.6.tar.bz2&lt;br /&gt; [root@machine ~]# cd eaccelerator-0.9.6&lt;br /&gt; [root@machine eaccelerator-0.9.6]# phpize&lt;br /&gt; [root@machine eaccelerator-0.9.6]# ./configure&lt;br /&gt; [root@machine eaccelerator-0.9.6]# make&lt;br /&gt; [root@machine eaccelerator-0.9.6]# make test&lt;br /&gt; [root@machine eaccelerator-0.9.6]# make install&lt;/code&gt;&lt;/div&gt; &lt;p&gt;&lt;img src=&quot;http://minimalteck.fr/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &gt;CR&#201;ATION FICHIER CONFIG DE L'EXTENSION&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;[root@machine eaccelerator-0.9.6]# vi /etc/php.d/eaccelerator.ini&lt;/code&gt;&lt;/div&gt; &lt;p&gt; ; Enable eAccelerator extension module
zend_extension = /usr/lib/php/modules/eaccelerator.so ; Options for the eAccelerator module
eaccelerator.cache_dir =&quot;/tmp/eaccelerator&quot; ; eaccelerator.shm_size = 0
eaccelerator.shm_size=&quot;32&quot;
eaccelerator.enable = 1 eaccelerator.optimizer = 1
eaccelerator.check_mtime = 1
eaccelerator.filter = &quot;&quot;
eaccelerator.shm_max = 0
eaccelerator.shm_ttl = &quot;1800&quot; eaccelerator.shm_prune_period = 0
eaccelerator.shm_only = 0
eaccelerator.compress = 1
eaccelerator.compress_level = 9
eaccelerator.keys = &quot;shm_and_disk&quot;
eaccelerator.sessions = &quot;shm_and_disk&quot;
eaccelerator.content = &quot;shm_and_disk&quot;
eaccelerator.debug = 0
&lt;/code&gt;
&lt;br /&gt;&lt;img src=&quot;http://minimalteck.fr/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &gt;CR&#201;ATION R&#201;PERTOIRE CACHE&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;[root@machine eaccelerator-0.9.6]# mkdir /tmp/eaccelerator&lt;br /&gt; [root@machine eaccelerator-0.9.6]# chmod 0777 /tmp/eaccelerator&lt;/code&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;outil_sommaire_4&quot;&gt;&lt;a title=&quot;Sommaire&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;V&#201;RIFICATION DE LA PRISE EN COMPTE D'EACCELERATOR ET VERSION PHP&lt;/h3&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;[root@rad[root@machine eaccelerator-0.9.6]# php -v &lt;br /&gt; PHP 5.2.13 (cli) (built: Apr 6 2010 18:21:14) &lt;br /&gt; Copyright (c) 1997-2010 The PHP Group&lt;br /&gt; Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies&lt;br /&gt; with eAccelerator v0.9.6, Copyright (c) 2004-2010 eAccelerator, by eAccelerator&lt;/code&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;outil_sommaire_5&quot;&gt;&lt;a title=&quot;Sommaire&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;REDEMARRAGE DU SERVEUR WEB&lt;/h3&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;[root@machine eaccelerator-0.9.6]# /etc/init.d/httpd restart&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;p&gt;&lt;span class=&quot;csfoo htmla&quot;&gt;&lt;/span&gt;[&lt;a href='#nh1' id='nb1' class='spip_note' title='Notes 1' rev='footnote'&gt;1&lt;/a&gt;] &lt;span class=&quot;csfoo htmlb&quot;&gt;&lt;/span&gt;L'extension eaccelerator (EPEL) a du &#234;tre supprim&#233;e, du fait d'un pb de d&#233;pendances avec le package php-common.
&lt;br /&gt;Ce package php-common (RHEL) est en conflit avec php52-common (IUS) : il faut installer eaccelerator &#224; partir des sources.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;R&#201;F&#201;RENCES : Tout est l&#224;, je n'invente rien &lt;img class=&quot;no_image_filtrer&quot; alt=&quot;biggrin&quot; title=&quot;biggrin&quot; src=&quot;http://www.minimalteck.fr/plugins/couteau_suisse/img/chatons/biggrin.gif&quot; width=&quot;20&quot; height=&quot;20&quot;/&gt;
&lt;br /&gt;&lt;img src=&quot;http://minimalteck.fr/squelettes-dist/puce.gif&quot; width=&quot;8&quot; height=&quot;11&quot; class=&quot;puce&quot; alt=&quot;-&quot; /&gt; &lt;a href='http://www.php.net/downloads.php' class='spip_out' rel='external'&gt;http://www.php.net/downloads.php&lt;/a&gt;
&lt;br /&gt;&lt;img src=&quot;http://minimalteck.fr/squelettes-dist/puce.gif&quot; width=&quot;8&quot; height=&quot;11&quot; class=&quot;puce&quot; alt=&quot;-&quot; /&gt; &lt;a href='http://wiki.iuscommunity.org/Doc/ClientUsageGuide' class='spip_out' rel='external'&gt;http://wiki.iuscommunity.org/Doc/Cl&#8230;&lt;/a&gt;
&lt;br /&gt;&lt;img src=&quot;http://minimalteck.fr/squelettes-dist/puce.gif&quot; width=&quot;8&quot; height=&quot;11&quot; class=&quot;puce&quot; alt=&quot;-&quot; /&gt; &lt;a href='http://eaccelerator.net/wiki/InstallFromSource' class='spip_out' rel='external'&gt;http://eaccelerator.net/wiki/Instal&#8230;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Installation des Ez Components</title>
		<link>http://minimalteck.fr/admin/installation-des-ez-components</link>
		<guid isPermaLink="true">http://minimalteck.fr/admin/installation-des-ez-components</guid>
		<dc:date>2010-01-29T13:16:28Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Minimalteck</dc:creator>


		<dc:subject>Howto</dc:subject>
		<dc:subject>PHP</dc:subject>
		<dc:subject>Ez-Publish</dc:subject>

		<description>Les &quot;Ez Components&quot; d&#233;signent un ensemble de librairies visant &#224; impl&#233;menter ais&#233;ment des fonctionnalit&#233;s courantes - mail, authentification, gestion de flux, images, etc.) dans vos applications Web. L'objet de cet article est de pr&#233;senter l'installation des Ez components sur notre plateforme LAMP Debian like habituelle. Avant toute chose, il est bon de rappeler que ces composants reposent sur une version &gt;=5.2.1 de PHP. Plusieurs solutions s'offrent &#224; nous pour l'installation des Ez components, (...)

-
&lt;a href="http://minimalteck.fr/admin/" rel="directory"&gt;Admin&lt;/a&gt;

/ 
&lt;a href="http://minimalteck.fr/howto" rel="tag"&gt;Howto&lt;/a&gt;, 
&lt;a href="http://minimalteck.fr/php" rel="tag"&gt;PHP&lt;/a&gt;, 
&lt;a href="http://minimalteck.fr/ez-publish" rel="tag"&gt;Ez-Publish&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class='spip_logos' alt=&quot;&quot; src=&quot;http://minimalteck.fr/local/cache-vignettes/L150xH91/arton56-69215.png&quot; width='150' height='91' style='height:91px;width:150px;' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Les &quot;&lt;a href='http://ez.no/fr/ezcomponents' class='spip_out' hreflang='fr' title=&quot;Tout savoir sur les ez components&quot; rel='external'&gt;Ez Components&lt;/a&gt;&quot; d&#233;signent un ensemble de librairies visant &#224; impl&#233;menter ais&#233;ment des fonctionnalit&#233;s courantes - mail, authentification, gestion de flux, images, etc.) dans vos applications Web.
&lt;br /&gt;L'objet de cet article est de pr&#233;senter l'installation des Ez components sur notre plateforme LAMP Debian like habituelle.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Avant toute chose, il est bon de rappeler que ces composants reposent sur une version &gt;=5.2.1 de PHP.&lt;/p&gt; &lt;p&gt;Plusieurs solutions s'offrent &#224; nous pour l'installation des Ez components, mais seule l'utilisation de l'installeur Pear est &#224; recommander.
&lt;br /&gt;Si ce n'est d&#233;j&#224; fait installons PEAR :
&lt;code class='spip_code' dir='ltr'&gt;debian:~# apt-get install php-pear&lt;/code&gt;
Ensuite installons le canal Ez
&lt;code class='spip_code' dir='ltr'&gt;debian:~# pear channel-discover components.ez.no&lt;/code&gt;
et les composants
&lt;code class='spip_code' dir='ltr'&gt;debian:~# pear install -a ezc/eZComponents&lt;/code&gt;&lt;/p&gt; &lt;p&gt;Il ne reste plus qu'&#224; int&#233;grer les composants au sein de notre configuration PHP :
&lt;code class='spip_code' dir='ltr'&gt;include_path = &quot;.:/usr/share/php:/usr/share/php/ezc&quot;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;Par le suite, la mise &#224; jour des Ez components s'effectuera simplement par la commande pear
&lt;code class='spip_code' dir='ltr'&gt;debian:~# pear upgrade ezc/eZComponents&lt;/code&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Un mail avec accus&#233; de reception en PHP</title>
		<link>http://minimalteck.fr/dev-web/un-mail-avec-accuse-de-reception</link>
		<guid isPermaLink="true">http://minimalteck.fr/dev-web/un-mail-avec-accuse-de-reception</guid>
		<dc:date>2010-01-28T11:45:20Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Minimalteck</dc:creator>


		<dc:subject>Code[s]</dc:subject>
		<dc:subject>PHP</dc:subject>

		<description>Vous connaissez certainement cette aga&#231;ante propention qu'ont certains utlisateurs &#224; vous envoyer des courriels - g&#233;n&#233;ralement sources de tracas - s'accompagnant d'une agression &#224; la pop-up au sein de votre client de messagerie&#8230; Rien de mieux pour mettre de f&#226;cheuse humeur&#8230; Oh ! Comble de l'horreur, on vous demande au cours d'un d&#233;v de g&#233;n&#233;rer des envois de mails avec accus&#233; de r&#233;ception&#8230; Rh&#226;aaaaaaa !!! Au cours du d&#233;bat anim&#233; qui s'en suit sur la question, un de vos coll&#232;gues, le sourire en coin, vous (...)

-
&lt;a href="http://minimalteck.fr/dev-web/" rel="directory"&gt;D&#233;v. Web&lt;/a&gt;

/ 
&lt;a href="http://minimalteck.fr/code-s" rel="tag"&gt;Code[s]&lt;/a&gt;, 
&lt;a href="http://minimalteck.fr/php" rel="tag"&gt;PHP&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class='spip_logos' alt=&quot;&quot; src=&quot;http://minimalteck.fr/local/cache-vignettes/L150xH150/arton55-70e89.png&quot; width='150' height='150' style='height:150px;width:150px;' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Vous connaissez certainement cette aga&#231;ante propention qu'ont certains utlisateurs &#224; vous envoyer des courriels - g&#233;n&#233;ralement sources de tracas - s'accompagnant d'une agression &#224; la pop-up au sein de votre client de messagerie&#8230;
&lt;br /&gt;Rien de mieux pour mettre de f&#226;cheuse humeur&#8230;
&lt;br /&gt;Oh ! Comble de l'horreur, on vous demande au cours d'un d&#233;v de g&#233;n&#233;rer des envois de mails avec accus&#233; de r&#233;ception&#8230; Rh&#226;aaaaaaa !!!&lt;/p&gt; &lt;p&gt;Au cours du d&#233;bat anim&#233; qui s'en suit sur la question, un de vos coll&#232;gues, le sourire en coin, vous pose THE probl&#233;matique :
&lt;br /&gt;&lt;img src=&quot;http://minimalteck.fr/squelettes-dist/puce.gif&quot; width=&quot;8&quot; height=&quot;11&quot; class=&quot;puce&quot; alt=&quot;-&quot; /&gt; &quot;Mais, sinon toi, tu saurais comment faire ?&quot;&lt;img alt=&quot;:-&gt;&quot; title=&quot;:-&gt;&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://www.minimalteck.fr/plugins/couteau_suisse/img/smileys/diable.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt;
&lt;br /&gt;C'est l'objet m&#234;me de cet article ou comment claquer le bec de ce malotru qui a voulu vous prendre en d&#233;faut&#8230;&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;En fait, c'est tout a fait trivial&#8230;
Il suffit d'ajouter des en-t&#234;tes appopri&#233;es &#224; votre mail : &quot;&lt;a href='http://en.wikipedia.org/wiki/Return_receipt' class='spip_out' hreflang='en' title=&quot;Wikip&#233;dia&quot; rel='external'&gt;Return-Receipt-To :&lt;/a&gt;&quot;, non d&#233;finie par quelque norme que ce soit, mais couramment admis et utilis&#233; et la seconde &quot;Disposition-Notification-To&quot; d&#233;finie quant &#224; elle par la &lt;a href='http://tools.ietf.org/html/rfc3798' class='spip_out' hreflang='en' title=&quot;RFC&quot; rel='external'&gt;RFC 3798&lt;/a&gt;&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;Disposition-Notification-To: courriel@emetteur.com&lt;br /&gt; Return-Receipt-To: courriel@emetteur.com&lt;/code&gt;&lt;/div&gt; &lt;p&gt;B&#234;te et m&#233;chant, il faut juste s'en rappeler.&lt;img class=&quot;no_image_filtrer&quot; alt=&quot;wink&quot; title=&quot;wink&quot; src=&quot;http://www.minimalteck.fr/plugins/couteau_suisse/img/chatons/wink.gif&quot; width=&quot;20&quot; height=&quot;20&quot;/&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Un PEAR Pager_Wrapper pour PDO</title>
		<link>http://minimalteck.fr/dev-web/un-pear-pager_wrapper-pour-pdo</link>
		<guid isPermaLink="true">http://minimalteck.fr/dev-web/un-pear-pager_wrapper-pour-pdo</guid>
		<dc:date>2008-10-31T17:32:13Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Minimalteck</dc:creator>


		<dc:subject>Code[s]</dc:subject>
		<dc:subject>PDO</dc:subject>
		<dc:subject>PHP</dc:subject>

		<description>Selon le PEAR ::Pager tutorials de Lorenzo Alberton, voici un Wrapper Pager/PDO, inspir&#233; largement du Pager_Wrapper contenu dans la doc du package. 'Sliding', // 'delta' =&gt; 2, // 'perPage' =&gt; 15, // ) ; // $paged_data = Pager_Wrapper_MDB2($db, $query, $pagerOptions) ; // //$paged_data['data'] ; //paged data // //$paged_data['links'] ; //xhtml links for page navigation // //$paged_data['page_numbers'] ; //array('current', 'total') ; // /** * Helper method - Rewrite the query into a &quot;SELECT (...)

-
&lt;a href="http://minimalteck.fr/dev-web/" rel="directory"&gt;D&#233;v. Web&lt;/a&gt;

/ 
&lt;a href="http://minimalteck.fr/code-s" rel="tag"&gt;Code[s]&lt;/a&gt;, 
&lt;a href="http://minimalteck.fr/pdo" rel="tag"&gt;PDO&lt;/a&gt;, 
&lt;a href="http://minimalteck.fr/php" rel="tag"&gt;PHP&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Selon le &lt;a href='http://www.alberton.info/pear_pager_tutorial_database_results.html' class='spip_out' rel='external'&gt;PEAR ::Pager tutorials&lt;/a&gt; de &lt;a href='http://www.alberton.info/' class='spip_out' rel='external'&gt;Lorenzo Alberton&lt;/a&gt;, voici un Wrapper Pager/PDO, inspir&#233; largement du &lt;a href='http://cvs.php.net/viewvc.cgi/pear/Pager/examples/Pager_Wrapper.php?view=markup' class='spip_out' rel='external'&gt;Pager_Wrapper&lt;/a&gt; contenu dans la doc du package.&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;?php&lt;br /&gt; // SAMPLE USAGE&lt;br /&gt; // ------------&lt;br /&gt; //&lt;br /&gt; // $query = 'SELECT this, that FROM mytable';&lt;br /&gt; // require_once 'Pager_Wrapper.php'; //this file&lt;br /&gt; // $pagerOptions = array(&lt;br /&gt; // 'mode' =&gt; 'Sliding',&lt;br /&gt; // 'delta' =&gt; 2,&lt;br /&gt; // 'perPage' =&gt; 15,&lt;br /&gt; // );&lt;br /&gt; // $paged_data = Pager_Wrapper_MDB2($db, $query, $pagerOptions);&lt;br /&gt; // //$paged_data['data']; //paged data&lt;br /&gt; // //$paged_data['links']; //xhtml links for page navigation&lt;br /&gt; // //$paged_data['page_numbers']; //array('current', 'total');&lt;br /&gt; //&lt;br /&gt; &lt;br /&gt; /**&lt;br /&gt; * Helper method - Rewrite the query into a &quot;SELECT COUNT(*)&quot; query.&lt;br /&gt; * @param string $sql query&lt;br /&gt; * @return string rewritten query OR false if the query can't be rewritten&lt;br /&gt; * @access private&lt;br /&gt; */&lt;br /&gt; function rewriteCountQuery($sql)&lt;br /&gt; {&lt;br /&gt; if (preg_match('/^\s*SELECT\s+\bDISTINCT\b/is', $sql) ||&lt;br /&gt; preg_match('/\s+GROUP\s+BY\s+/is', $sql) ||&lt;br /&gt; preg_match('/\s+UNION\s+/is', $sql)) {&lt;br /&gt; return false;&lt;br /&gt; }&lt;br /&gt; $open_parenthesis = '(?:\()';&lt;br /&gt; $close_parenthesis = '(?:\))';&lt;br /&gt; $subquery_in_select = $open_parenthesis.'.*\bFROM\b.*'.$close_parenthesis;&lt;br /&gt; $pattern = '/(?:.*'.$subquery_in_select.'.*)\bFROM\b\s+/Uims';&lt;br /&gt; if (preg_match($pattern, $sql)) {&lt;br /&gt; return false;&lt;br /&gt; }&lt;br /&gt; $subquery_with_limit_order = $open_parenthesis.'.*\b(LIMIT|ORDER)\b.*'.$close_parenthesis;&lt;br /&gt; $pattern = '/.*\bFROM\b.*(?:.*'.$subquery_with_limit_order.'.*).*/Uims';&lt;br /&gt; if (preg_match($pattern, $sql)) {&lt;br /&gt; return false;&lt;br /&gt; }&lt;br /&gt; $queryCount = preg_replace('/(?:.*)\bFROM\b\s+/Uims', 'SELECT COUNT(*) FROM ', $sql, 1);&lt;br /&gt; list($queryCount, ) = preg_split('/\s+ORDER\s+BY\s+/is', $queryCount);&lt;br /&gt; list($queryCount, ) = preg_split('/\bLIMIT\b/is', $queryCount);&lt;br /&gt; return trim($queryCount);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; /**&lt;br /&gt; * PDO's version of Pager_Wrapper&lt;br /&gt; * @param object PDO instance&lt;br /&gt; * @param string db query&lt;br /&gt; * @param array PEAR::Pager options&lt;br /&gt; * @param boolean Disable pagination (get all results)&lt;br /&gt; * @param integer fetch mode constant&lt;br /&gt; * @return array with links and paged data&lt;br /&gt; */&lt;br /&gt; function Pager_Wrapper_PDO($db, $query, $pager_options = array(), $disabled = false, $fetchMode = PDO::FETCH_ASSOC){&lt;br /&gt; if (!array_key_exists('totalItems', $pager_options)) {&lt;br /&gt; if ($countQuery = rewriteCountQuery($query)) {&lt;br /&gt; $stmt = $db-&gt;prepare($countQuery);&lt;br /&gt; $stmt-&gt;execute();&lt;br /&gt; $totalItems = $stmt-&gt;fetchColumn();&lt;br /&gt; }else{&lt;br /&gt; $stmt = $db-&gt;prepare($query);&lt;br /&gt; if (!$stmt) {&lt;br /&gt; echo &quot;\nPDO::errorCode(): &quot;;&lt;br /&gt; print $db-&gt;errorCode();&lt;br /&gt; die();&lt;br /&gt; }&lt;br /&gt; $stmt-&gt;execute();&lt;br /&gt; if ($stmt-&gt;execute() === FALSE) {&lt;br /&gt; echo &quot;\nPDO::errorCode()toto: &quot;;&lt;br /&gt; print $db-&gt;errorCode();&lt;br /&gt; die();&lt;br /&gt; }&lt;br /&gt; $rows = $stmt-&gt;fetchAll(PDO::FETCH_COLUMN);&lt;br /&gt; $totalItems = count($rows);&lt;br /&gt; &lt;br /&gt; }&lt;br /&gt; $pager_options['totalItems'] = $totalItems;&lt;br /&gt; }&lt;br /&gt; require_once 'Pager/Pager.php';&lt;br /&gt; $pager = Pager::factory($pager_options);&lt;br /&gt; &lt;br /&gt; $page = array();&lt;br /&gt; $page['links'] = $pager-&gt;links;&lt;br /&gt; $page['totalItems'] = $pager_options['totalItems'];&lt;br /&gt; $page['page_numbers'] = array(&lt;br /&gt; 'current' =&gt; $pager-&gt;getCurrentPageID(),&lt;br /&gt; 'total' =&gt; $pager-&gt;numPages()&lt;br /&gt; );&lt;br /&gt; list($page['from'], $page['to']) = $pager-&gt;getOffsetByPageId();&lt;br /&gt; $page['limit'] = $page['to'] - $page['from'] +1;&lt;br /&gt; &lt;br /&gt; // fix offset&lt;br /&gt; // limit 1,10 can not retrive the first record of result set.&lt;br /&gt; $page['from'] = $page['from'] - 1;&lt;br /&gt; &lt;br /&gt; if (!$disabled) {&lt;br /&gt; $query .= ' LIMIT ' . $page['from'] . ', ' . $pager_options['perPage'];&lt;br /&gt; }&lt;br /&gt; // var_dump($query);&lt;br /&gt; $stmt = $db-&gt;prepare($query);&lt;br /&gt; if (!$stmt) {&lt;br /&gt; echo &quot;\nPDO::errorCode(): &quot;;&lt;br /&gt; print $db-&gt;errorCode();print_r($db-&gt;errorInfo());&lt;br /&gt; die();&lt;br /&gt; }&lt;br /&gt; $stmt-&gt;execute();&lt;br /&gt; $page['data'] = $stmt-&gt;fetchAll($fetchMode); &lt;br /&gt; if ($disabled) {&lt;br /&gt; $page['links'] = '';&lt;br /&gt; $page['page_numbers'] = array(&lt;br /&gt; 'current' =&gt; 1,&lt;br /&gt; 'total' =&gt; 1&lt;br /&gt; );&lt;br /&gt; } &lt;br /&gt; &lt;br /&gt; // var_dump($pager);&lt;br /&gt; return $page;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; ?&gt;&lt;/code&gt;&lt;/div&gt; &lt;p&gt;Bon le code est pas fignol&#233;&#8230; mais on peut d&#233;j&#224; l'utiliser &#224; des fins de tests :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;?php&lt;br /&gt; require_once('DatabaseConnection.class.php');&lt;br /&gt; //copy the Pager_Wrapper file where you can include it&lt;br /&gt; require_once './Pager_Wrapper.php';&lt;br /&gt; $db = DatabaseConnection::get()-&gt;handle();&lt;br /&gt; $db-&gt;setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);&lt;br /&gt; //skipped the db connection code...&lt;br /&gt; //let's just suppose we have a valid db connection in $db.&lt;br /&gt; &lt;br /&gt; $pager_options = array(&lt;br /&gt; 'mode' =&gt; 'Sliding',&lt;br /&gt; 'perPage' =&gt; 2,&lt;br /&gt; 'delta' =&gt; 2,&lt;br /&gt; );&lt;br /&gt; $query = 'SELECT * FROM person';&lt;br /&gt; $paged_data = Pager_Wrapper_PDO($db, $query, $pager_options);&lt;br /&gt; &lt;br /&gt; //show the results&lt;br /&gt; echo '&lt;ul&gt;';&lt;br /&gt; foreach ($paged_data['data'] as $product) {&lt;br /&gt; echo '&lt;li&gt;'.$product['id_person'].': '.$product['name'].'&lt;/li&gt;';&lt;br /&gt; }&lt;br /&gt; echo '&lt;/ul&gt;';&lt;br /&gt; &lt;br /&gt; //show the links&lt;br /&gt; echo $paged_data['links'];&lt;br /&gt; ?&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;le PDO ::MYSQL_ATTR_USE_BUFFERED_QUERY est mis &#224; TRUE pour permettre d'effectuer des requ&#234;tes multiples sur la m&#234;me connexion&#8230;
&lt;br /&gt;Sinon 'a marche p&#244; !!!
&lt;br /&gt;Du moins sur ma plateforme de test &#224; l'arrache&#8230;&lt;/p&gt; &lt;p&gt;Alors que dans la litt&#233;rature, j'eu appris que la fermeture du 'PDO cursor' r&#232;glait le pb, via la PDOStatement ::closeCursor&#8230; &lt;br /&gt;c'est m&#234;me indiqu&#233; dans &lt;a href='http://fr.php.net/manual/fr/pdostatement.closecursor.php' class='spip_out' rel='external'&gt;la doc PDO&lt;/a&gt; : &quot;&lt;cite&gt;PDOStatement-&gt;closeCursor &#8212; Ferme le curseur, permettant &#224; la requ&#234;te d'&#234;tre de nouveau ex&#233;cut&#233;e&quot;&lt;/cite&gt;&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>PDO vite dit...</title>
		<link>http://minimalteck.fr/dev-web/pdo-vite-dit</link>
		<guid isPermaLink="true">http://minimalteck.fr/dev-web/pdo-vite-dit</guid>
		<dc:date>2008-10-31T11:23:52Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Minimalteck</dc:creator>


		<dc:subject>Rapido Tuto</dc:subject>
		<dc:subject>PDO</dc:subject>
		<dc:subject>PHP</dc:subject>

		<description>PDO en bref : Introduit en PHP 5.1, cette extension PECL permet d'utiliser de fa&#231;on standardis&#233;e plusieurs types de SGBD via l'utilisation de drivers sp&#233;cifiques. Proche de PEAR DB dans son utilisation, PDO est beaucoup plus rapide car &#233;crite en C : ses performances sont proches des anciens drivers natifs. Les Classes de PDO : 3 principales : PDO, g&#233;rant la connexion entre PHP et un serveur de base de donn&#233;es ; PDOStatement, repr&#233;sentant une requ&#234;te pr&#233;par&#233;e et qui fournit une fois cette (...)

-
&lt;a href="http://minimalteck.fr/dev-web/" rel="directory"&gt;D&#233;v. Web&lt;/a&gt;

/ 
&lt;a href="http://minimalteck.fr/rapido-tuto" rel="tag"&gt;Rapido Tuto&lt;/a&gt;, 
&lt;a href="http://minimalteck.fr/pdo" rel="tag"&gt;PDO&lt;/a&gt;, 
&lt;a href="http://minimalteck.fr/php" rel="tag"&gt;PHP&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;div class=&quot;cs_sommaire cs_sommaire_avec_fond&quot; id=&quot;outil_sommaire&quot;&gt; &lt;div class=&quot;cs_sommaire_inner&quot;&gt; &lt;div class=&quot;cs_sommaire_titre_avec_fond&quot;&gt; Sommaire &lt;/div&gt; &lt;ul&gt; &lt;li&gt;&lt;a title=&quot;PDO en bref :&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=6#outil_sommaire_0&quot;&gt;PDO en bref&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Les Classes de PDO :&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=6#outil_sommaire_1&quot;&gt;Les Classes de PDO&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;M&#233;thodes pour ex&#233;cuter une requ&#234;te :&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=6#outil_sommaire_2&quot;&gt;M&#233;thodes pour ex&#233;cuter une (&#8230;)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Requ&#234;te de selection, traitement des r&#233;sultats&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=6#outil_sommaire_3&quot;&gt;Requ&#234;te de selection, traitemen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Traitements de tous les r&#233;sultats :&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=6#outil_sommaire_4&quot;&gt;Traitements de tous les (&#8230;)&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;h3 class=&quot;spip&quot; id=&quot;outil_sommaire_0&quot;&gt;&lt;a title=&quot;Sommaire&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=6#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;PDO en bref :&lt;/h3&gt; &lt;p&gt;Introduit en PHP 5.1, cette extension PECL permet d'utiliser de fa&#231;on standardis&#233;e plusieurs types de SGBD via l'utilisation de drivers sp&#233;cifiques. Proche de PEAR DB dans son utilisation, PDO est beaucoup plus rapide car &#233;crite en C : ses performances sont proches des anciens drivers natifs.&lt;/p&gt; &lt;h3 class=&quot;spip&quot; id=&quot;outil_sommaire_1&quot;&gt;&lt;a title=&quot;Sommaire&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=6#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Les Classes de PDO :&lt;/h3&gt; &lt;p&gt;&lt;img src=&quot;http://minimalteck.fr/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;strong&gt;3 principales :&lt;/strong&gt;&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; PDO, g&#233;rant la connexion entre PHP et un serveur de base de donn&#233;es ;&lt;/li&gt;&lt;li&gt; PDOStatement, repr&#233;sentant une requ&#234;te pr&#233;par&#233;e et qui fournit une fois cette derni&#232;re ex&#233;cut&#233;e, le jeu de r&#233;sultats associ&#233; ;&lt;/li&gt;&lt;li&gt; PDOException, permettant le traitement des erreurs.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;img src=&quot;http://minimalteck.fr/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;strong&gt;Connexion &#224; un SGDB :&lt;/strong&gt;
&lt;br /&gt;PDO utlise un DSN pour d&#233;crire la base de donn&#233;es &#224; laquelle on souhaite se connecter, comme pour PEAR DB&#8230;
&lt;br /&gt;Ce DSN va &#234;tre passer en param&#234;tre au moment de &lt;a href='http://fr.php.net/manual/fr/pdo.construct.php' class='spip_out' rel='external'&gt;l'instanciation de la classe PDO&lt;/a&gt; :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;PDO::__construct ( string $dsn [, string $username [, string $password [, array $driver_options ]]] )&lt;/code&gt;&lt;/div&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;$db = new PDO ('driver_type:host=hostname;dbname=name_of_db', 'user', 'user_password');&lt;/code&gt;&lt;/div&gt; &lt;p&gt;Mais attention, la syntaxe du DSN varie en fonction du SGDB utilis&#233; (cf. &lt;a href='http://fr.php.net/manual/fr/pdo.drivers.php' class='spip_out' rel='external'&gt;http://fr.php.net/manual/fr/pdo.dri&#8230;&lt;/a&gt;) !
&lt;br /&gt;Ainsi, pour Mysql (&lt;a href='http://fr.php.net/manual/fr/ref.pdo-mysql.php' class='spip_out' rel='external'&gt;driver : pdo_mysql&lt;/a&gt; et &lt;a href='http://fr.php.net/manual/fr/ref.pdo-mysql.connection.php' class='spip_out' rel='external'&gt;DSN&lt;/a&gt;) on peut avoir en DSN :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;mysql:host=hostname;dbname=name_of_database&lt;br /&gt; mysql:host=hostname;port=num_port;dbname=name_of_database&lt;br /&gt; mysql:unix_socket=/path/to/mysql.sock;dbname=name_of_database&lt;/code&gt;&lt;/div&gt; &lt;p&gt;&lt;img src=&quot;http://minimalteck.fr/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; &lt;strong&gt;Gestion des erreurs et fermeture de connexions :&lt;/strong&gt;&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;?php&lt;br /&gt; $dsn = 'mysql:host=127.0.0.1;port=3306;dbname=dbtest';&lt;br /&gt; $user = 'user';&lt;br /&gt; $password = 'passwd';&lt;br /&gt; try {&lt;br /&gt; $db = new PDO ($dsn,$user,$password);&lt;br /&gt; } catch (PDOException $e) {&lt;br /&gt; var_dump($e-&gt;getMessage());&lt;br /&gt; die();&lt;br /&gt; }&lt;br /&gt; if ($db) {&lt;br /&gt; $db = NULL; //On ferme la connexion en assignant la valeur &quot;NULL&quot; &#224; la variable g&#233;rant l'instance PDO &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; ?&gt;&lt;/code&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;outil_sommaire_2&quot;&gt;&lt;a title=&quot;Sommaire&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=6#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;- M&#233;thodes pour ex&#233;cuter une requ&#234;te :&lt;/h3&gt; &lt;p&gt;Il existe 2 m&#233;thodes : exec() et query().&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; query() : Pour les requ&#234;tes du type SELECT, EXPLAIN, SHOW, DESC, SET&#8230; Retourne une instance PDOStatement pour le traitement des r&#233;sultats&lt;/li&gt;&lt;li&gt; exec() : Pour les requ&#234;tes ne renvoyant pas de jeu de r&#233;sultats, comme INSERT, DELETE, UPDATE , REPLACE.
&lt;br /&gt;Cette m&#233;thode retourne le nombre de lignes affect&#233;es [&lt;a href='#nb_2A' class='spip_note' rel='footnote' title='2 dans le cas d'un REPLACE !!! petit rappel pour un d&#233;v fatigu&#233; qui se (...)' id='nh_2A'&gt;*&lt;/a&gt;]&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;En cas d'erreur ces 2 m&#233;thodes renvoient &lt;strong&gt;FALSE&lt;/strong&gt;.
&lt;br /&gt;Il est donc imp&#233;ratif d'utiliser le comparateur de valeur &quot;===&quot; et non le comparateur de type &quot;==&quot; si l'on veut effectuer un test sur la requ&#234;te&#8230; car une requ&#234;te valide peut retourner la valeur 0 (aucun r&#233;sultat) !&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;if ($db-&gt;query($request) === FALSE){&lt;br /&gt; echo 'Peste ! Une erreur inopin&#233;e est survenue !';&lt;br /&gt; die();&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;outil_sommaire_3&quot;&gt;&lt;a title=&quot;Sommaire&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=6#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;- Requ&#234;te de selection, traitement des r&#233;sultats&lt;/h3&gt; &lt;p&gt;&lt;strong&gt;2 M&#233;thodes :&lt;/strong&gt;&lt;/p&gt; &lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;a href='http://fr.php.net/manual/fr/pdostatement.fetch.php' class='spip_out' rel='external'&gt;PDOStatement ::fetch&lt;/a&gt; : &lt;strong&gt;r&#233;cup&#232;re une ligne&lt;/strong&gt; depuis un jeu de r&#233;sultats associ&#233; &#224; l'objet PDOStatement. &lt;a href='http://fr.php.net/manual/fr/pdostatement.closecursor.php' class='spip_out' rel='external'&gt;PDOStatement ::closeCursor()&lt;/a&gt; lib&#232;re la connexion du serveur, permettant ainsi &#224; d'autres requ&#234;tes SQL d'&#234;tre ex&#233;cut&#233;es, mais quitte la requ&#234;te, permettant ainsi qu'elle soit de nouveau ex&#233;cut&#233;e. &lt;/li&gt;&lt;li&gt; &lt;a href='http://fr.php.net/manual/fr/pdostatement.fetchall.php' class='spip_out' rel='external'&gt;PDOStatement ::fetchAll&lt;/a&gt; : retourne un tableau contenant toutes les lignes du jeu d'enregistrements.&lt;/li&gt;&lt;/ul&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;outil_sommaire_4&quot;&gt;&lt;a title=&quot;Sommaire&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=6#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Traitements de tous les r&#233;sultats :&lt;/h3&gt; &lt;p&gt;&lt;img src=&quot;http://minimalteck.fr/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; La &lt;strong&gt;m&#233;thode fetchAll()&lt;/strong&gt; renvoie un tableau contenant TOUS les r&#233;sultats de la requ&#234;te : il suffit donc de parcourir ce tableau pour extraire les r&#233;sultats :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;$sth = $db-&gt;query('SELECT id, name FROM person WHERE 1');&lt;br /&gt; $results = $sth-&gt;fetchAll(PDO::FECTH_ASSOC);&lt;br /&gt; foreach ($result as $row){&lt;br /&gt; echo $row['id']. ': '.$row['name'].'&lt;br /&gt;';&lt;br /&gt; }&lt;br /&gt; $db = NULL;&lt;/code&gt;&lt;/div&gt; &lt;p&gt;&lt;img src=&quot;http://minimalteck.fr/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; La &lt;strong&gt;m&#233;thode s&#233;quentielle fetch()&lt;/strong&gt; retourne les r&#233;sultats ligne par ligne permettant ainsi de ne pas charger l'ensemble des r&#233;sultats en m&#233;moire, utile surtout pour un grand nombre d'enregistrements.&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;$sth = $db-&gt;query('SELECT id, name FROM person WHERE 1');&lt;br /&gt; while ($row = $sth-&gt;fetch(PDO::FECTH_ASSOC);){&lt;br /&gt; echo $row['id']. ': '.$row['name'].'&lt;br /&gt;';&lt;br /&gt; }&lt;br /&gt; /* L'appel suivant &#224; closeCursor() peut &#234;tre requis par quelques drivers, notamment Mysql */&lt;br /&gt; $sth-&gt;closeCursor();&lt;br /&gt; $db = NULL;&lt;/code&gt;&lt;/div&gt; &lt;p&gt;Bon, maintenant qu'on a appr&#233;hender la b&#234;te, Allez on code ! Voir comment se passe l'interfa&#231;age avec les autres packages PEAR, je pense &#224; PAGER notamment&#8230;&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;p&gt;&lt;span class=&quot;csfoo htmla&quot;&gt;&lt;/span&gt;[&lt;a href='#nh_2A' id='nb_2A' class='spip_note' title='Notes _2A' rev='footnote'&gt;*&lt;/a&gt;] &lt;span class=&quot;csfoo htmlb&quot;&gt;&lt;/span&gt;2 dans le cas d'un REPLACE !!! petit rappel pour un d&#233;v fatigu&#233; qui se reconna&#238;tra&#8230; &lt;img alt=&quot;:-p&quot; title=&quot;:-p&quot; class=&quot;no_image_filtrer format_png&quot; src=&quot;http://www.minimalteck.fr/plugins/couteau_suisse/img/smileys/tire_la_langue.png&quot; width=&quot;19&quot; height=&quot;19&quot;/&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;Plus d'infos : &lt;a href='http://fr.php.net/manual/fr/book.pdo.php' class='spip_out' rel='external'&gt;http://fr.php.net/manual/fr/book.pdo.php&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Classe Objet g&#233;n&#233;rique</title>
		<link>http://minimalteck.fr/dev-web/classe-objet-generique</link>
		<guid isPermaLink="true">http://minimalteck.fr/dev-web/classe-objet-generique</guid>
		<dc:date>2008-10-31T10:12:12Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Minimalteck</dc:creator>


		<dc:subject>Code[s]</dc:subject>
		<dc:subject>PHP</dc:subject>

		<description>La classe : Classe abstraite pour cr&#233;er/modifier/supprimer des objets construits &#224; partir d'une base de donn&#233;es, ici mysql (Auto_increment) et utilisant PDO db = DatabaseConnection ::get()-&gt;handle() ; if ( (!is_null($id)) &amp;&amp; (is_numeric($id))) $this-&gt;id = $id ; $this-&gt;load() ; public function __destruct() public function __set($key, $value) $this-&gt;$key = $value ; function __get($key) return $this-&gt;$key ; public function (...)

-
&lt;a href="http://minimalteck.fr/dev-web/" rel="directory"&gt;D&#233;v. Web&lt;/a&gt;

/ 
&lt;a href="http://minimalteck.fr/code-s" rel="tag"&gt;Code[s]&lt;/a&gt;, 
&lt;a href="http://minimalteck.fr/php" rel="tag"&gt;PHP&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;div class=&quot;cs_sommaire cs_sommaire_avec_fond&quot; id=&quot;outil_sommaire&quot;&gt; &lt;div class=&quot;cs_sommaire_inner&quot;&gt; &lt;div class=&quot;cs_sommaire_titre_avec_fond&quot;&gt; Sommaire &lt;/div&gt; &lt;ul&gt; &lt;li&gt;&lt;a title=&quot;La classe :&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=8#outil_sommaire_0&quot;&gt;La classe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Son utilisation :&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=8#outil_sommaire_1&quot;&gt;Son utilisation&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;h3 class=&quot;spip&quot; id=&quot;outil_sommaire_0&quot;&gt;&lt;a title=&quot;Sommaire&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=8#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;La classe :&lt;/h3&gt; &lt;p&gt;Classe &lt;strong&gt;abstraite&lt;/strong&gt; pour cr&#233;er/modifier/supprimer des objets construits &#224; partir d'une base de donn&#233;es, ici mysql (Auto_increment) et utilisant PDO&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;?php&lt;br /&gt; require_once('DatabaseConnection.class.php');&lt;br /&gt; abstract class GenericObject {&lt;br /&gt; &lt;br /&gt; protected $table;&lt;br /&gt; protected $fields;&lt;br /&gt; protected $primary_key;&lt;br /&gt; protected $id = NULL;&lt;br /&gt; private $data = array();&lt;br /&gt; private static $db;&lt;br /&gt; private $autoIncrement = true;&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; public function __construct($id=NULL){&lt;br /&gt; $this-&gt;db = DatabaseConnection::get()-&gt;handle();&lt;br /&gt; if ( (!is_null($id)) &amp;&amp; (is_numeric($id))) {&lt;br /&gt; $this-&gt;id = $id;&lt;br /&gt; $this-&gt;load(); &lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public function __destruct(){&lt;br /&gt; &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public function __set($key, $value) {&lt;br /&gt; $this-&gt;$key = $value;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; function __get($key) {&lt;br /&gt; return $this-&gt;$key;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public function autoIncrement($bool){&lt;br /&gt; if(is_bool($bool)){&lt;br /&gt; $this-&gt;autoIncrement = $bool;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public function load() {&lt;br /&gt; $this-&gt;db = DatabaseConnection::get()-&gt;handle();&lt;br /&gt; $sql = 'SELECT '.implode(', ',$this-&gt;fields).' FROM `'. $this-&gt;table .'` WHERE ';&lt;br /&gt; $sql .=' `'.$this-&gt;primary_key.'` = &quot;'.$this-&gt;id.'&quot; LIMIT 1;';&lt;br /&gt; &lt;br /&gt; $sth = $this-&gt;db-&gt;query($sql);&lt;br /&gt; $result = $sth-&gt;fetch(PDO::FETCH_ASSOC);&lt;br /&gt; if (is_array($result)) {&lt;br /&gt; $this-&gt;data = $result;&lt;br /&gt; }&lt;br /&gt; unset($result);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public function save(){&lt;br /&gt; $this-&gt;db = DatabaseConnection::get()-&gt;handle();&lt;br /&gt; &lt;br /&gt; if(is_null($this-&gt;id) &amp;&amp; $this-&gt;autoIncrement){//INSERT A NEW RECORD&lt;br /&gt; $sql = 'SHOW TABLE STATUS LIKE &quot;'.$this-&gt;table.'&quot;';&lt;br /&gt; $sth = $this-&gt;db-&gt;query($sql);&lt;br /&gt; $row = $sth-&gt;fetch(PDO::FETCH_ASSOC);&lt;br /&gt; $this-&gt;id= $row['Auto_increment'];&lt;br /&gt; $sth-&gt;closeCursor();&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; $bind_array = array();&lt;br /&gt; $sql_stmt = 'REPLACE INTO ' .$this-&gt;table. ' SET';&lt;br /&gt; foreach($this-&gt;data as $field =&gt; $value) {&lt;br /&gt; $bind_array[] = $this-&gt;db-&gt;quote($value);&lt;br /&gt; $sql_stmt .= ' '.$field.' = ? ,';&lt;br /&gt; }&lt;br /&gt; $sql_stmt = substr($sql_stmt,0,-1);&lt;br /&gt; &lt;br /&gt; $stmt = $this-&gt;db-&gt;prepare($sql_stmt);&lt;br /&gt; if (!$stmt) {&lt;br /&gt; echo &quot;\nPDO::errorInfo():\n&quot;;&lt;br /&gt; print_r($this-&gt;db-&gt;errorInfo());&lt;br /&gt; } else {&lt;br /&gt; if ($stmt-&gt;execute($bind_array) === false){&lt;br /&gt; $error = $this-&gt;db-&gt;errorInfo();&lt;br /&gt; print_r($error);&lt;br /&gt; die();&lt;br /&gt; } else {&lt;br /&gt; return true;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; public function remove(){&lt;br /&gt; if (!is_null($this-&gt;id)) {&lt;br /&gt; $this-&gt;db = DatabaseConnection::get()-&gt;handle();&lt;br /&gt; $sql = 'DELETE FROM ' .$this-&gt;table. ' WHERE '.$this-&gt;primary_key.'=' . $this-&gt;id .';';&lt;br /&gt; if (!$this-&gt;db-&gt;exec($sql)) {&lt;br /&gt; $error = $this-&gt;db-&gt;errorInfo();&lt;br /&gt; print_r($error);&lt;br /&gt; } else {&lt;br /&gt; return true;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; public function getDatas(){&lt;br /&gt; return $this-&gt;data;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public function setDatas($assign_values){&lt;br /&gt; foreach ($assign_values as $key =&gt; $value) {&lt;br /&gt; $this-&gt;data[$key] = $value;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; }&lt;br /&gt; ?&gt;&lt;/code&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;outil_sommaire_1&quot;&gt;&lt;a title=&quot;Sommaire&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=8#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Son utilisation :&lt;/h3&gt; &lt;p&gt;Il suffit d'&#233;tendre la classe pour cr&#233;&#233; un nouvel objet, en affectant :
&lt;br /&gt;&lt;img src=&quot;http://minimalteck.fr/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; la table de donn&#233;es (&quot;$table&quot;) ;
&lt;br /&gt;&lt;img src=&quot;http://minimalteck.fr/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; les valeurs des colonnes de cette table (&quot;$fields&quot;) ;
&lt;br /&gt;&lt;img src=&quot;http://minimalteck.fr/local/cache-vignettes/L8xH11/puce-32883.gif&quot; width='8' height='11' class='puce' alt=&quot;-&quot; style='height:11px;width:8px;' /&gt; la cl&#233; primaire (&quot;$primary_key&quot;).&lt;/p&gt; &lt;p&gt;Exemple :&lt;/p&gt; &lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;?php&lt;br /&gt; require_once('GenericObject.class.php');&lt;br /&gt; class Person extends GenericObject {&lt;br /&gt; protected $table = 'person';&lt;br /&gt; protected $fields = array('id_person',&lt;br /&gt; 'name',&lt;br /&gt; 'firstname',&lt;br /&gt; 'email');&lt;br /&gt; protected $primary_key = 'id_person';&lt;br /&gt; }&lt;br /&gt; ?&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;Require : &lt;a href='http://minimalteck.fr/dev-web/singleton-pdo' class='spip_in'&gt;DatabaseConnection.class.php&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Singleton PDO</title>
		<link>http://minimalteck.fr/dev-web/singleton-pdo</link>
		<guid isPermaLink="true">http://minimalteck.fr/dev-web/singleton-pdo</guid>
		<dc:date>2008-10-31T09:58:21Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Minimalteck</dc:creator>


		<dc:subject>Code[s]</dc:subject>
		<dc:subject>PDO</dc:subject>
		<dc:subject>PHP</dc:subject>

		<description>La classe singleton : engine = 'mysql' ; $this-&gt;host = 'localhost' ; $this-&gt;database = 'nom_base' ; $this-&gt;user = 'user' ; $this-&gt;pass = 'user_password' ; $dns = $this-&gt;engine.':dbname='.$this-&gt;database.&quot; ;host=&quot;.$this-&gt;host ; try $this-&gt;_handle = new PDO( $dns, $this-&gt;user, $this-&gt;pass ) ; $this-&gt;_handle-&gt;query(&quot;SET NAMES utf8&quot;) ;//FOR USING UTF-8 $this-&gt;_handle-&gt;query(&quot;SET CHARACTER SET 'utf8'&quot;) ;//FOR USING UTF-8 return true ; catch (PDOException $e) print 'Erreur : (...)

-
&lt;a href="http://minimalteck.fr/dev-web/" rel="directory"&gt;D&#233;v. Web&lt;/a&gt;

/ 
&lt;a href="http://minimalteck.fr/code-s" rel="tag"&gt;Code[s]&lt;/a&gt;, 
&lt;a href="http://minimalteck.fr/pdo" rel="tag"&gt;PDO&lt;/a&gt;, 
&lt;a href="http://minimalteck.fr/php" rel="tag"&gt;PHP&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;div class=&quot;cs_sommaire cs_sommaire_avec_fond&quot; id=&quot;outil_sommaire&quot;&gt; &lt;div class=&quot;cs_sommaire_inner&quot;&gt; &lt;div class=&quot;cs_sommaire_titre_avec_fond&quot;&gt; Sommaire &lt;/div&gt; &lt;ul&gt; &lt;li&gt;&lt;a title=&quot;La classe singleton :&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=8#outil_sommaire_0&quot;&gt;La classe singleton&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;Son utilisation :&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=8#outil_sommaire_1&quot;&gt;Son utilisation&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;&lt;h3 class=&quot;spip&quot; id=&quot;outil_sommaire_0&quot;&gt;&lt;a title=&quot;Sommaire&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=8#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;La classe singleton :&lt;/h3&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;?php&lt;br /&gt; class DatabaseConnection {&lt;br /&gt; &lt;br /&gt; public static function get() {&lt;br /&gt; static $db = null;&lt;br /&gt; if ( $db == null ) {&lt;br /&gt; $db = new DatabaseConnection();&lt;br /&gt; }&lt;br /&gt; return $db;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; private $_handle = null;&lt;br /&gt; &lt;br /&gt; private function __construct() {&lt;br /&gt; $this-&gt;engine = 'mysql';&lt;br /&gt; $this-&gt;host = 'localhost';&lt;br /&gt; $this-&gt;database = 'nom_base';&lt;br /&gt; $this-&gt;user = 'user';&lt;br /&gt; $this-&gt;pass = 'user_password';&lt;br /&gt; $dns = $this-&gt;engine.':dbname='.$this-&gt;database.&quot;;host=&quot;.$this-&gt;host;&lt;br /&gt; try {&lt;br /&gt; $this-&gt;_handle = new PDO( $dns, $this-&gt;user, $this-&gt;pass );&lt;br /&gt; $this-&gt;_handle-&gt;query(&quot;SET NAMES utf8&quot;);//FOR USING UTF-8&lt;br /&gt; $this-&gt;_handle-&gt;query(&quot;SET CHARACTER SET 'utf8'&quot;);//FOR USING UTF-8&lt;br /&gt; return true;&lt;br /&gt; } catch (PDOException $e){&lt;br /&gt; print 'Erreur : '.$e-&gt;getMessage().'&lt;br&gt;';&lt;br /&gt; die();&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public function handle() {&lt;br /&gt; return $this-&gt;_handle;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; ?&gt;&lt;/code&gt;&lt;/div&gt;
&lt;h3 class=&quot;spip&quot; id=&quot;outil_sommaire_1&quot;&gt;&lt;a title=&quot;Sommaire&quot; href=&quot;http://minimalteck.fr/spip.php?page=backend&amp;id_mot=8#outil_sommaire&quot; class=&quot;sommaire_ancre&quot;&gt; &lt;/a&gt;Son utilisation :&lt;/h3&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;?php&lt;br /&gt; $dbx = DatabaseConnection::get()-&gt;handle();&lt;br /&gt; $results=$dbx-&gt;query('SELECT * FROM bidule'); &lt;br /&gt; $results-&gt;setFetchMode(PDO::FETCH_OBJ); // retour d'un objet std&lt;br /&gt; while( $row = $resultats-&gt;fetch() ) {&lt;br /&gt; echo 'Utilisateur : '.$row-&gt;id.'&lt;br /&gt;'; // on affiche l'id des entr&#233;es de la table bidule&lt;br /&gt; }&lt;br /&gt; $results-&gt;closeCursor(); // on ferme le curseur des r&#233;sultats : n&#233;cessaire pour pouvoir r&#233;utiliser la connexion $dbx pour ex&#233;cuter une nouvelle requ&#234;te...&lt;br /&gt; ?&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
