<?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>4live Créations - Blog de développeurs</title>
	<atom:link href="http://www.4live.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.4live.fr</link>
	<description>4live Créations - Blog de développeurs</description>
	<lastBuildDate>Wed, 14 Mar 2012 13:40:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Templates WordPress professionnels</title>
		<link>http://www.4live.fr/2011/05/23/templates-wordpress-professionnels/</link>
		<comments>http://www.4live.fr/2011/05/23/templates-wordpress-professionnels/#comments</comments>
		<pubDate>Mon, 23 May 2011 09:59:29 +0000</pubDate>
		<dc:creator>Jordan Matejicek</dc:creator>
				<category><![CDATA[Outils]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.4live.fr/?p=446</guid>
		<description><![CDATA[UnPointZero met à votre disposition de nombreux templates WordPress de haute qualité. Classés par catégorie (architecture,association,sport,technologie&#8230;) et livrés avec leur fichier source (psd par exemple) ces templates sont un excellent moyen d&#8217;avoir un site propre sans passer par les services d&#8217;un webdesigner. Pour plus d&#8217;informations rendez-vous sur la page Templates wordpress !]]></description>
			<content:encoded><![CDATA[<p>UnPointZero met à votre disposition de nombreux templates WordPress de haute qualité. Classés par catégorie (architecture,association,sport,technologie&#8230;) et livrés avec leur fichier source (psd par exemple) ces templates sont un excellent moyen d&#8217;avoir un site propre sans passer par les services d&#8217;un webdesigner.<br />
Pour plus d&#8217;informations rendez-vous sur la page <a href="http://www.unpointzero.com/templates-wordpress/">Templates wordpress</a> !</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.4live.fr/2011/05/23/templates-wordpress-professionnels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UnPointZero Slider disponible !</title>
		<link>http://www.4live.fr/2010/10/29/unpointzero-slider-disponible/</link>
		<comments>http://www.4live.fr/2010/10/29/unpointzero-slider-disponible/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 02:16:23 +0000</pubDate>
		<dc:creator>Jordan Matejicek</dc:creator>
				<category><![CDATA[Outils]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.4live.fr/?p=360</guid>
		<description><![CDATA[Présenter vos news d’une manière plus graphique, vous permettra d’attirer l’attention de vos visiteurs sur vos informations les plus importantes : votre communication sera optimisée. Ainsi UnPointZero met gratuitement à votre disposition un plugin WordPress vous permettant l’affichage d’un bloc de présentation sous forme d’un slideshow (diaporama). Entièrement paramétrable et libre de droits, ce plugin [...]]]></description>
			<content:encoded><![CDATA[<p>Présenter vos news d’une manière plus graphique, vous permettra d’attirer l’attention de vos visiteurs sur vos informations les plus importantes : votre communication sera optimisée. Ainsi UnPointZero met gratuitement à votre disposition un plugin WordPress vous permettant l’affichage d’un bloc de présentation sous forme d’un slideshow (diaporama). Entièrement paramétrable et libre de droits, ce plugin est compatible avec toutes les versions WordPress supérieures à la version 2.9.</p>
<p style="text-align: left;">Ci-dessous un aperçu du diaporama par défaut :</p>
<p style="text-align: center;"><img class="size-full wp-image-361    aligncenter" title="upz-slider" src="http://www.4live.fr/wp-content/uploads/2010/10/upz-slider.jpg" alt="" width="639" height="255" /></p>
<p>Pour accéder à plus d&#8217;informations et au lien de téléchargement du slider, <a href="http://www.unpointzero.com/unpointzero-slider/">rendez-vous sur la page dédiée sur le site UnPointZero</a>.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.4live.fr/2010/10/29/unpointzero-slider-disponible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gestion de CV en XML, DTD, XSLT, AJAX et PHP</title>
		<link>http://www.4live.fr/2010/10/12/gestion-de-cv-en-xml-dtd-xslt-ajax-et-php/</link>
		<comments>http://www.4live.fr/2010/10/12/gestion-de-cv-en-xml-dtd-xslt-ajax-et-php/#comments</comments>
		<pubDate>Mon, 11 Oct 2010 22:06:42 +0000</pubDate>
		<dc:creator>Julien Grossio</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Développement web]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.4live.fr/?p=355</guid>
		<description><![CDATA[Dans le cadre de ma licence professionnelle, mon partiel de fin d&#8217;année en XML a été la réalisation d&#8217;une application web de gestion de CV. Objectif : Créer une application web XML pour une entreprise d&#8217;intérim qui gère des milliers de CV et qui a l&#8217;intention d&#8217;acheter et fusionner un grand nombre de ses concurrents. [...]]]></description>
			<content:encoded><![CDATA[<p>Dans le cadre de ma licence professionnelle, mon partiel de fin d&#8217;année en XML a été la réalisation d&#8217;une application web de gestion de CV.</p>
<p><strong>Objectif :</strong></p>
<p>Créer une application web XML pour une entreprise d&#8217;intérim qui gère des milliers de CV et qui a l&#8217;intention d&#8217;acheter et fusionner un grand nombre de ses concurrents. Certains utilisant les technologies xml et d&#8217;autres non.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-179" title="cvonline" src="http://www.julgrossio.com/wp-content/uploads/2010/10/cvonline.jpeg" alt="" width="504" height="81" /></p>
<h3>Travail à réaliser</h3>
<p>Votre application web sera constituée des fichiers suivants:</p>
<ul>
<li>un formulaire de saisie (création de fichier XML Cv en Ajax/Jquery)</li>
<li>10 fichiers XML sous format XMLCV à partir de vrais CV trouvés sur le web</li>
<li>les feuilles de style XSLT correspondantes</li>
</ul>
<p>Ces feuilles XSLT devront permettre une transformation avec les navigateurs et produiront<br />
les pages suivantes :</p>
<ul>
<li>générer du texte</li>
<li>générer des pages XHTML</li>
<li>générer une page PDF (optionnel /bonus)</li>
<li>générer un fichier RTF (optionnel /bonus)</li>
<li>générer un fichier XHTML+CSS à la zengarden (optionnel /bonus)</li>
<li>en option : une base de données Mysql qui stocke vos données XMLCV</li>
</ul>
<p><a href="http://www.julgrossio.com/projets/cv-xml-dtd-xslt-ajax-php">Lire la suite sur www.julgrossio.com</a></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.4live.fr/2010/10/12/gestion-de-cv-en-xml-dtd-xslt-ajax-et-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ouverture du site julgrossio.com</title>
		<link>http://www.4live.fr/2010/10/07/ouverture-du-site-julgrossio-com/</link>
		<comments>http://www.4live.fr/2010/10/07/ouverture-du-site-julgrossio-com/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 12:50:23 +0000</pubDate>
		<dc:creator>Julien Grossio</dc:creator>
				<category><![CDATA[Développement web]]></category>
		<category><![CDATA[Site]]></category>

		<guid isPermaLink="false">http://www.4live.fr/?p=346</guid>
		<description><![CDATA[Mes études terminées, il était grand temps pour moi de lancer mon site et portfolio en ligne. C&#8217;est chose faite avec l&#8217;ouverture de www.julgrossio.com ! Bien qu’étant mon support de références, vous y trouverez également mon CV, des tutoriaux sur le développement web et autres, ainsi qu’un espace réservé à la présentation de mes projets, développés [...]]]></description>
			<content:encoded><![CDATA[<p>Mes études terminées, il était grand temps pour moi de lancer mon site et portfolio en ligne. C&#8217;est chose faite avec l&#8217;ouverture de <a href="http://www.julgrossio.com" target="_blank">www.julgrossio.com</a> !</p>
<p>Bien qu’étant mon support de références, vous y trouverez également mon CV, des tutoriaux sur le développement web et autres, ainsi qu’un espace réservé à la présentation de mes projets, développés notamment dans le cadre de mes études…</p>
<p style="text-align: center;"><a href="http://www.julgrossio.com"><img class="aligncenter size-full wp-image-347" title="customlogin" src="http://www.4live.fr/wp-content/uploads/2010/10/customlogin.png" alt="" width="300" height="80" /></a></p>
<p>Le site est encore en construction, soyez indulgent !</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.4live.fr/2010/10/07/ouverture-du-site-julgrossio-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Un template wordpress gratuit en téléchargement !</title>
		<link>http://www.4live.fr/2010/06/03/un-template-wordpress-gratuit-en-telechargement/</link>
		<comments>http://www.4live.fr/2010/06/03/un-template-wordpress-gratuit-en-telechargement/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 18:12:02 +0000</pubDate>
		<dc:creator>Jordan Matejicek</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Développement web]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[gratuit]]></category>
		<category><![CDATA[ressource wordpress]]></category>
		<category><![CDATA[skin]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">http://www.4live.fr/?p=325</guid>
		<description><![CDATA[Le template qui habillait la version 1 de 4live est en téléchargement libre dans notre espace Ressources &#62; Templates. Sachez qu'il est entièrement compatible avec les widgets Wordpress.]]></description>
			<content:encoded><![CDATA[<p>Le template qui habillait la version 1 de 4live est en téléchargement libre dans notre espace Ressources &gt; Templates. Sachez qu&#8217;il est entièrement compatible avec les widgets WordPress.</p>
<p style="text-align: center;"><a href="http://www.4live.fr/wp-content/uploads/2010/06/4live2009-hi.jpg" rel="lightbox[325]" title="Template 4live 2009 low"><img class="size-full wp-image-317  aligncenter" title="Template 4live 2009 low" src="http://www.4live.fr/wp-content/uploads/2010/06/4live2009-low.jpg" alt="" width="500" height="120" /><br />Cliquez pour agrandir</a></p>
<p>Pour changer le logo rien de plus simple, remplacez simplement l&#8217;image &laquo;&nbsp;bg_header.png&nbsp;&raquo; du dossier images par votre image personnalisée. Cependant si vous utilisez ce template, merci de laisser le lien &laquo;&nbsp;Design par 4live Creations&nbsp;&raquo; dans le footer <img src='http://www.4live.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Vous pouvez le télécharger directement <a href="http://www.4live.fr/prod/templates/4live-2009.zip">ici</a>.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.4live.fr/2010/06/03/un-template-wordpress-gratuit-en-telechargement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creez un gestionnaire de fichier avec upload / download</title>
		<link>http://www.4live.fr/2010/06/02/creez-un-gestionnaire-de-fichier/</link>
		<comments>http://www.4live.fr/2010/06/02/creez-un-gestionnaire-de-fichier/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 12:15:02 +0000</pubDate>
		<dc:creator>Jordan Matejicek</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[fichiers]]></category>
		<category><![CDATA[gestionnaire]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[swfupload]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://www.4live.fr/?p=279</guid>
		<description><![CDATA[Aujourd'hui je vous propose de créer un gestionnaire de fichiers, avec upload sur le serveur et un espace de téléchargement sécurisé.]]></description>
			<content:encoded><![CDATA[<p>Aujourd&#8217;hui je vous propose de créer un gestionnaire de fichiers, avec upload sur le serveur et un espace de téléchargement sécurisé.<br />
Afin de ne pas perdre de temps, je vous propose directement de <a href="http://www.4live.fr/ressources_dl/filemanager/tuto_filemanager.zip">télécharger les sources</a>, je vous commenterai dans la suite de l&#8217;article les parties &laquo;&nbsp;customizables&nbsp;&raquo; du code.</p>
<p>Nous allons donc mettre en œuvre :</p>
<ul>
<li>SWFUpload : Une librairie flash / javascript qui permet d&#8217;uploader des fichiers.</li>
<li>JQuery : La célèbre librairie javascript qui nous permet de réaliser plein de choses <img src='http://www.4live.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</li>
<li>Classes directory et fichier : Codée par mes soins, ces 2 classes nous permettrons de gérer l&#8217;affichage des fichiers et la suppression.</li>
<li>Un fichier .htaccess et une page download.php : Afin d&#8217;empêcher le téléchargement par le passage d&#8217;une url directe.
</ul>
<p>Ce tutoriel ne traite que de gestion upload/download. Pour sécuriser à 100% votre espace, libre à vous de l&#8217;intégrer dans l&#8217;espace &laquo;&nbsp;membre&nbsp;&raquo; de votre site par exemple.</p>
<p>Passons maintenant à la customisation !<br />
<span id="more-279"></span><br />
<strong>Hiérarchie des dossiers :</strong></p>
<ul>
<li>core : Nos classes</li>
<li>css : Nos feuilles de styles</li>
<li>img : Nos images</li>
<li>libs : Nos librairies</li>
<li>uploads : Nos fichiers permettant le download / upload, le .htaccess pour la sécurité et notre dossier &laquo;&nbsp;files&nbsp;&raquo; ou sont stockés nos fichiers</li>
</ul>
<p><strong>Fichier index.php :</strong></p>
<p>Ligne 36 à 62 :</p>
<pre class="brush: xml; title: ; notranslate">&lt;form id=&quot;form1&quot; action=&quot;index.php&quot; method=&quot;post&quot; enctype=&quot;multipart/form-data&quot;&gt;
		&lt;div id=&quot;divSWFUploadUI&quot;&gt;
			&lt;div class=&quot;fieldset flash&quot; id=&quot;fsUploadProgress&quot;&gt;
			&lt;span class=&quot;legend&quot;&gt;&lt;/span&gt;
			&lt;/div&gt;
			&lt;p id=&quot;divStatus&quot;&gt;&lt;/p&gt;
			&lt;p&gt;
				&lt;span id=&quot;spanButtonPlaceholder&quot;&gt;&lt;/span&gt;
				&lt;input id=&quot;btnCancel&quot; type=&quot;button&quot; value=&quot;Annuler l'envoi&quot; disabled=&quot;disabled&quot; style=&quot;margin:0 0 0 2px; height: 22px; font-size: 8pt;&quot; /&gt;
				&lt;br /&gt;
			&lt;/p&gt;
		&lt;/div&gt;
		&lt;noscript&gt;
		&lt;div style=&quot;background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px;&quot;&gt;
			Nous sommes désolés l'upload ne peut pas s'initialiser. Merci d'activer JavaScript.
		&lt;/div&gt;
		&lt;/noscript&gt;
		&lt;div id=&quot;divLoadingContent&quot; class=&quot;content&quot; style=&quot;background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;&quot;&gt;
			Initialisation ... Merci de patienter ...
		&lt;/div&gt;
		&lt;div id=&quot;divLongLoading&quot; class=&quot;content&quot; style=&quot;background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;&quot;&gt;
			L'initialisation met trop de temps au chargement ou ne fonctonne pas correctement. Merci de vérifier que votre plugin Flash est activé et à jour.&lt;a href=&quot;http://get.adobe.com/fr/flashplayer/&quot; target=&quot;_blank&quot;&gt; T&amp;eacutel&amp;eacutechargez Flashplayer&lt;/a&gt;
		&lt;/div&gt;
		&lt;div id=&quot;divAlternateContent&quot; class=&quot;content&quot; style=&quot;background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;&quot;&gt;
			Nous sommes désolés, l'upload ne peut pas être initialisé. Merci de mettre a jour Flashplayer. &lt;a href=&quot;http://get.adobe.com/fr/flashplayer/&quot; target=&quot;_blank&quot;&gt; T&amp;eacute;l&amp;eacute;chargez Flashplayer&lt;/a&gt;
		&lt;/div&gt;
&lt;/form&gt;
</pre>
<p>Le formulaire pour SWFUpload avec les différents DIV permettant l&#8217;affichage des blocs d&#8217;upload et des messages d&#8217;erreur. Vous pouvez changer les styles qui y sont attachés, mais pour des raisons évidentes d&#8217;interaction avec le code javascript, ne changez pas les id <img src='http://www.4live.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p><strong>Fichier libs/libs.php :</strong></p>
<p>Ligne 9 :</p>
<pre class="brush: jscript; title: ; notranslate">
		$filename = &quot;uploads/extlist.txt&quot;;
</pre>
<p>Ce fichier .txt comprend la liste des extensions autorisés lors de l&#8217;upload. Éditez donc le fichier &laquo;&nbsp;extlist.txt&nbsp;&raquo; pour y ajouter ou supprimer des extensions. Si vous souhaitez autoriser tout type de fichier ( je ne vous le conseille pas pour des raisons de sécurité ), remplacez &laquo;&nbsp;uploads/extlist.txt&nbsp;&raquo; par &laquo;&nbsp;*&nbsp;&raquo; .</p>
<p>Ligne 24 :</p>
<pre class="brush: jscript; title: ; notranslate">
		file_size_limit : \&quot;200 MB\&quot;,
</pre>
<p>La taille limite des fichiers autorisés à l&#8217;upload.</p>
<p>Ligne 28 :</p>
<pre class="brush: jscript; title: ; notranslate">
file_upload_limit : 100,
</pre>
<p>Le nombre de fichiers que l&#8217;utilisateur à le droit d&#8217;envoyer en une session de navigateur : Si l&#8217;utilisateur recharge la page cette variable est réinitialisée, l&#8217;utilisateur peut alors à nouveau uploader 100 fichiers. Cette variable doit donc être gérée dynamiquement via votre panel utilisateur de votre site ( si vous en avez un <img src='http://www.4live.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ). Si la limite est de 0, le nombre de fichiers autorisés est illimité.</p>
<p>Ligne 29 :</p>
<pre class="brush: jscript; title: ; notranslate">
file_queue_limit : 0,
</pre>
<p>Le nombre de fichiers autorisés en attente d&#8217;upload. 0 est égal à illimité.</p>
<p>Ligne 37 :</p>
<pre class="brush: jscript; title: ; notranslate">
		button_image_url : &quot;libs/swfupload/images/XPButtonUploadText_61x22.png&quot;,
</pre>
<p>Le bouton d&#8217;upload est réalisé en flash ( en réalité c&#8217;est bien plus qu&#8217;un simple bouton ) cela dit vous pouvez modifier son style via une image.</p>
<p>Ligne 39 à 40 :</p>
<pre class="brush: jscript; title: ; notranslate">
		button_width: 61,
		button_height: 22,
</pre>
<p>La taille &laquo;&nbsp;width&nbsp;&raquo; et &laquo;&nbsp;height&nbsp;&raquo; de votre bouton upload.</p>
<p><strong>Fichier upload/.htaccess :</strong></p>
<p>Attention, la modification sur ce fichiers est [u]impérative[/u] pour le bon fonctionnement des scripts</p>
<p>Ligne 3 :</p>
<pre class="brush: plain; title: ; notranslate">
RewriteRule ^.+$ http://www.4live.fr [L]
</pre>
<p>Remplacez http://www.4live.fr par l&#8217;url de votre site</p>
<p>Ligne 8 :</p>
<pre class="brush: plain; title: ; notranslate">
allow from 4live.fr
</pre>
<p>Remplacez par l&#8217;host de votre site.</p>
<p>Bien entendu, l&#8217;ensemble des feuilles de style est customisable à souhait, ainsi que toutes les images.</p>
<p><strong>Attention : </strong><br />
Gardez à l&#8217;esprit qu&#8217;il vous faudra sécuriser le contenu de votre fichier &laquo;&nbsp;download.php&nbsp;&raquo; d&#8217;une façon ou d&#8217;une autre sinon l&#8217;utilisateur pourra très bien passer directement par download.php sans passer par votre filemanager !</p>
<p>Voici un exemple :</p>
<pre class="brush: php; title: ; notranslate">&lt;?php
session_start();
$user = $_SESSION['user'];

if($user!=NULL)
{
session_unset();
session_destroy();
$_SESSION = array();

	$file = htmlentities($_GET['file']);

header(&quot;Cache-Control: must-revalidate, post-check=0, pre-check=0&quot; );
header(&quot;content-type: application/octet-stream&quot; );
header(&quot;Content-Length: &quot;.filesize($file));
header(&quot;Content-Disposition: attachment; filename=&quot;.str_replace(&quot; &quot; , &quot;_&quot; , basename($file)));
flush();
readfile($file);
}
else {
echo &quot;Vous n'avez pas acces au fichier !&quot;;
}
?&gt;</pre>
<p>Si la session &laquo;&nbsp;user&nbsp;&raquo; existe je lance le download via les informations header ( et je détruit la session pour éviter le téléchargement de fichiers alors que le filemanager est fermé ) sinon, je lui affiche un message d&#8217;erreur. Il ne vous reste donc plus qu&#8217;à attribuer une session &laquo;&nbsp;user&nbsp;&raquo; a l&#8217;utilisateur sur votre page filemanager.php !</p>
<p>Si vous avez des questions ou des remarques, les commentaires sont là pour ça.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.4live.fr/2010/06/02/creez-un-gestionnaire-de-fichier/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Les interfaces en PHP5</title>
		<link>http://www.4live.fr/2010/05/27/les-interfaces-en-php5/</link>
		<comments>http://www.4live.fr/2010/05/27/les-interfaces-en-php5/#comments</comments>
		<pubDate>Thu, 27 May 2010 14:14:14 +0000</pubDate>
		<dc:creator>Julien Grossio</dc:creator>
				<category><![CDATA[Développement web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[interfaces]]></category>
		<category><![CDATA[php5]]></category>

		<guid isPermaLink="false">http://www.4live.fr/?p=250</guid>
		<description><![CDATA[Lors du développement en équipe d&#8217;une application en PHP, on s&#8217;aperçoit vite de la nécessité d&#8217;harmoniser le code, notamment au niveau des méthodes de classes. Ceci dans un but de faciliter la modularisation du script et donc, du développement de nouvelles fonctionnalités. C&#8217;est ici qu&#8217;interviennent les interfaces, introduites depuis PHP5. Elles permettent de créer un [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Lors du développement en équipe d&#8217;une application en PHP, on s&#8217;aperçoit vite de la nécessité d&#8217;harmoniser le code, notamment au niveau des méthodes de classes. Ceci dans un but de faciliter la modularisation du script et donc, du développement de nouvelles fonctionnalités.</p>
<p style="text-align: justify;">C&#8217;est ici qu&#8217;interviennent les interfaces, introduites depuis PHP5. Elles permettent de créer un modèle pour les classes qui l&#8217;implémentent, c&#8217;est à dire que ces classes devront obligatoirement contenir les méthodes et constantes définies dans l&#8217;interface.</p>
<p style="text-align: justify;">Voyons à présent comment déclarer et utiliser une ou plusieurs interfaces en PHP.</p>
<p style="text-align: center;"><img class="size-full wp-image-269  aligncenter" title="interfaces" src="http://www.4live.fr/wp-content/uploads/2010/05/interfaces1.png" alt="interfaces" width="467" height="131" /></p>
<p><span id="more-250"></span><span style="text-decoration: underline;">Exemple</span> : <em>IActionDB.php</em></p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
// déclaration de l'interface de nom IActionsDB
interface IActionsDB {

	// méthodes à implémenter
	public function add();
	public function update($id);
	public static function delete($id);

}
?&gt;
</pre>
<p><span style="text-decoration: underline;">Explications </span>:</p>
<p>Nous avons construit ici une interface du nom de IActionsBD. Dans un soucis de lisibilité, je nomme toujours mes interfaces en commençant par la lettre I. On peut ainsi repérer directement le type de script que contient le fichier PHP. De cette façon vous pouvez également appeler vos fichiers de classes : <em>classname.c.php</em></p>
<p>Bref! Revenons au sujet pour donner quelques explications. Notre interface d&#8217;exemple est ici utilisée dans le cadre d&#8217;une application nécessitant des interactions avec une base de données. Nous avons déclaré trois méthodes obligatoires pour les classes implémentant l&#8217;interface <em>IActionDB </em>; à savoir :</p>
<ul>
<li><em>public function add(); </em> -&gt; pour ajouter un objet dans la base de données</li>
<li><em>public function update($id);</em> -&gt; pour modifier un enregistrement connu dans la bdd</li>
<li><em>public static function delete($id);</em> -&gt; pour la suppression</li>
</ul>
<p>Comme vous l&#8217;aurez sans doute remarqué, les méthodes déclarées dans l&#8217;interface sont toutes de type <em>public</em>. Ainsi, vous donner un tronc commun à vos développeurs pour l&#8217;implémentation, tout en les laissant libre du choix de programmation. En effet, libre au codeur de passer ces méthodes en privés pour une utilisation en interne au sein d&#8217;une classe&#8230;</p>
<p>Voyons désormais un exemple d&#8217;implémentation de notre interface !</p>
<p><span style="text-decoration: underline;">Exemple</span> :</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
#=======================================#
#	@preview	Classe User				#
#	@author 	Julien GROSSIO			#
#	@version	v250510.1				#
#	@mail		jul.grossio@gmail.com	#
#=======================================#
require_once('../interfaces/IActionsDB.php');

class User implements IActionsDB {

	private $login;
	private $password;
	private $rule;

	/**
	* constructeur
	*/
	public function __construct($login,$password,$rule) {
		$this-&gt;login = $login;
		$this-&gt;password = $password;
		$this-&gt;rule = $rule;
	}

	/**
	* ajout de l'utilisateur dans la bdd
	*/
	public function add() {
		$connexion = PDO2::getInstance();
		$requete = $connexion-&gt;prepare('INSERT INTO users VALUES (NULL, ?, ?, ?)');
		if( $requete-&gt;execute(array($this-&gt;login,$this-&gt;password, $this-&gt;rule)) )
			return true;
		else
			return false;
	}

	/**
	* Update d'un utilisateur dans la bdd
	*/
	public function update($id) {
		$connexion = PDO2::getInstance();
		$requete = $connexion-&gt;prepare('UPDATE users SET user_login = ?, user_password = ?, user_rule = ? WHERE user_id = ?');
		if( $requete-&gt;execute(array($this-&gt;login,$this-&gt;password,$this-&gt;rule,$id)) )
			return true;
		else
			return false;
	}

	/**
	* Suppression d'un utilisateur dans la bdd
	*/
	public static function delete($id) {
		$connexion = PDO2::getInstance();
		$requete = $connexion-&gt;prepare('DELETE FROM users WHERE user_id = ?');
		if( $requete-&gt;execute(array($id)) )
			return true;
		else
			return false;
	}

	/**
	* Vérification du combo login/password donné
	*/
	public static function checkConnection($login,$password){
		$connexion = PDO2::getInstance();
		$requete = $connexion-&gt;prepare('SELECT count(*) as nbres FROM user WHERE user_login = ? AND user_password = ?');
		$requete-&gt;execute(array($login,$password));
		$retour=$requete-&gt;fetch(PDO::FETCH_OBJ);
		if($retour-&gt;nbres==1)return true;
		else return false;
	}

}
?&gt;
</pre>
<p><span style="text-decoration: underline;">Explications</span> :</p>
<p>Nous avons déclaré une classe <em>User </em>qui implémente l&#8217;interface <em>IActionsDB</em>. Pour ce faire, on utilise le mot clé <strong><em>implements</em></strong>. Afin de respecter l&#8217;interface implémentée, nous avons défini les trois méthodes, à savoir add(), delete($id) et update($id).</p>
<p><span style="text-decoration: underline;"><strong>Conclusion et notes</strong></span></p>
<ul>
<li>Les<strong> interfaces en PHP</strong> deviennent quasiment obligatoires et sont très pratiques dans le <strong>développement collaboratif</strong></li>
<li><strong>Contrairement  aux classes abstraites</strong>, on peut implémenter <strong>plusieurs interfaces dans  une classe</strong></li>
<li>Pour<strong> implémenter plusieurs interfaces</strong> dans une classe, il faut les <strong>séparer par des virgules</strong></li>
</ul>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.4live.fr/2010/05/27/les-interfaces-en-php5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Des outils de développement et de débogage gratuits</title>
		<link>http://www.4live.fr/2010/03/14/des-outils-de-developpement-et-de-debogage-gratuits/</link>
		<comments>http://www.4live.fr/2010/03/14/des-outils-de-developpement-et-de-debogage-gratuits/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 02:14:24 +0000</pubDate>
		<dc:creator>Jordan Matejicek</dc:creator>
				<category><![CDATA[Outils]]></category>
		<category><![CDATA[débogage]]></category>
		<category><![CDATA[développement]]></category>

		<guid isPermaLink="false">http://www.4live.fr/?p=203</guid>
		<description><![CDATA[Développer un site ou une application web nécessite des outils de création mais aussi de débogage. Beaucoup sont gratuits, en voici une liste non exhaustive qui sera mise à jour régulièrement. Si vous souhaitez ajouter un outil ( bien entendu pas de warez ici ) postez le en commentaire ! Liste des outils présentés : [...]]]></description>
			<content:encoded><![CDATA[<p>Développer un site ou une application web nécessite des outils de création mais aussi de débogage. Beaucoup sont gratuits, en voici une liste non exhaustive qui sera mise à jour régulièrement. Si vous souhaitez ajouter un outil ( bien entendu pas de warez ici <img src='http://www.4live.fr/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  ) postez le en commentaire !</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-225" title="outilsweb" src="http://www.4live.fr/wp-content/uploads/2010/03/outilsweb1.png" alt="Outils Web" width="409" height="70" /></p>
<p>Liste des outils présentés :</p>
<p><strong>Conception :</strong><br />
Kompozer &#8211; Notepad++<br />
<strong>Transfert :</strong><br />
Filezilla<br />
<strong>Debogage :</strong><br />
Web Developer &#8211; Firebug<br />
<strong>Autres :</strong><br />
Regex Coach</p>
<p><span id="more-203"></span></p>
<p><strong>1. Conception :</strong></p>
<p><em>KompoZer :</em></p>
<p style="text-align: center;"><a href="http://www.4live.fr/wp-content/uploads/2010/03/kompozer.png" rel="lightbox[203]" title="kompozer"><img class="alignnone size-medium" title="kompozer" src="http://www.4live.fr/wp-content/uploads/2010/03/kompozer-300x225.png" alt="KompoZer" width="300" height="225" /></a></p>
<p>KompoZer est un outil de conception de sites web qui vous permet d&#8217;éditer vos pages HTML en mode <a href="http://fr.wikipedia.org/wiki/WYSIWIG">WYSIWYG</a>. Il est extrêmement simple d&#8217;utilisation et dispose également d&#8217;un éditeur de feuilles de style CSS et d&#8217;une  gestion des fichiers permettant de publier directement vos pages votre serveur.<br />
<a href="http://kompozer.net">- Site officiel de KompoZer</a>.</p>
<p><em>Notepad++ :</em></p>
<p style="text-align: center;"><a href="http://www.4live.fr/wp-content/uploads/2010/03/notepad.jpg" rel="lightbox[203]" title="notepad"><img class="alignnone size-medium" title="notepad" src="http://www.4live.fr/wp-content/uploads/2010/03/notepad-300x206.jpg" alt="Notepad++" width="300" height="206" /></a></p>
<p>Est-il encore nécessaire de vous présenter notepad++ ? Cet outil aux multiples fonctionnalités qui vous permet d&#8217;éditer rapidement vos pages de code. Personnellement j&#8217;apprécie tout particulièrement l&#8217;identification des blocs de code ainsi que la recherche multi-documents qui permet d&#8217;identifier par exemple plus rapidement vos variables sur l&#8217;intégralité de votre site. L&#8217;ensemble des fonctionnalités est disponible sur le site officiel.<br />
<a href="http://notepad-plus.sourceforge.net/fr/site.htm">- Site officiel de Notepad++</a>.</p>
<p><strong>2. Transfert :</strong></p>
<p><em>Filezilla :</em></p>
<p style="text-align: center;"><a href="http://www.4live.fr/wp-content/uploads/2010/03/filezilla1.jpeg" rel="lightbox[203]" title="filezilla"><img class="alignnone size-medium" title="filezilla" src="http://www.4live.fr/wp-content/uploads/2010/03/filezilla1-300x204.jpg" alt="Filezilla" width="300" height="204" /></a></p>
<p>Filezilla est un client FTP qui permet le transfert de vos fichiers sur un serveur. La gestion des connexions est également implantée et facilitera vos transferts si vous disposez de plusieurs sites. A noter également la possibilité de transférer plusieurs fichiers simultanément.<br />
<a href="http://www.filezilla.fr/">Site officiel de filezila</a>.</p>
<p><strong>3. Debogage :</strong></p>
<p>Les outils de debogage sont nombreux cependant sachez que beaucoup d&#8217;entre eux sont des modules pour firefox ce qui nécessite bien entendu d&#8217;avoir firefox. Utilisateurs d&#8217;internet explorer, il vous faudra donc chercher des alternatives !</p>
<p><em>Web developer :</em></p>
<p style="text-align: center;"><a href="http://www.4live.fr/wp-content/uploads/2010/03/webdeveloper.jpg" rel="lightbox[203]" title="webdeveloper"><img class="alignnone size-medium" title="webdeveloper" src="http://www.4live.fr/wp-content/uploads/2010/03/webdeveloper-300x121.jpg" alt="Web developer" width="300" height="121" /></a></p>
<p>L&#8217;extension Web developer ajoute une toolbar à votre navigateur qui propose énormément d&#8217;outils essentiellement utiles pour le débogage.<br />
<a href="http://chrispederick.com/work/web-developer/">Site officiel de web developer</a><br />
<a href="https://addons.mozilla.org/fr/firefox/addon/60">Page du module firefox</a></p>
<p><em>Firebug :</em></p>
<p style="text-align: center;"><a href="http://www.4live.fr/wp-content/uploads/2010/03/firebug.jpg" rel="lightbox[203]" title="firebug"><img class="alignnone size-medium" title="firebug" src="http://www.4live.fr/wp-content/uploads/2010/03/firebug-300x135.jpg" alt="Firebug" width="300" height="135" /></a></p>
<p>Firebug est certainement l&#8217;outil le plus célèbre concernant le débogage web. Il vous permet énormément de choses comme la modification &laquo;&nbsp;en directe&nbsp;&raquo; du code HTML ou de vos feuilles de style CSS ou encore le débogage par étape de vos scripts javascript. Ajoutez lui l&#8217;extension <a href="https://addons.mozilla.org/en-US/firefox/addon/6149">FirePHP</a> et vous obtiendrez l&#8217;outil parfait pour le développement AJAX <img src='http://www.4live.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<br />
<a href="http://getfirebug.com/">Site officiel de firebug</a><br />
<a href="https://addons.mozilla.org/en-US/firefox/addon/1843">Page du module firefox</a><br />
<a href="https://addons.mozilla.org/en-US/firefox/addon/6149">FirePHP</a></p>
<p><strong>4. Autres :</strong></p>
<p><em>Regex Coach :</em></p>
<p style="text-align:center"><a href="http://www.4live.fr/wp-content/uploads/2010/03/regexcoach.jpg" rel="lightbox[203]" title="regexcoach"><img src="http://www.4live.fr/wp-content/uploads/2010/03/regexcoach-300x284.jpg" alt="Regex Coach" title="regexcoach" width="300" height="284" class="alignnone size-medium" /></a></p>
<p>Regex Coach est un outil très performant pour créer et valider vos expressions régulières. Très utile si vous êtes amenés par exemple à vérifier le contenu d&#8217;un formulaire.<br />
<a href="http://weitz.de/regex-coach/">Site officiel de Regex Coach</a></p>
<p>J&#8217;essayerai d&#8217;en ajouter au fur et à mesure et comme dit précédemment si vous connaissez un outil qui n&#8217;est pas présent dans cet article, n&#8217;hésitez pas à le poster en commentaire.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.4live.fr/2010/03/14/des-outils-de-developpement-et-de-debogage-gratuits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tips CSS : Forcer le footer en pied de page</title>
		<link>http://www.4live.fr/2010/03/10/tips-css-forcer-le-footer-en-pied-de-page/</link>
		<comments>http://www.4live.fr/2010/03/10/tips-css-forcer-le-footer-en-pied-de-page/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 19:53:50 +0000</pubDate>
		<dc:creator>Jordan Matejicek</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[footer]]></category>
		<category><![CDATA[footer sticky]]></category>
		<category><![CDATA[pied de page]]></category>

		<guid isPermaLink="false">http://www.4live.fr/?p=185</guid>
		<description><![CDATA[Si comme moi vous recherchez une solution simple et rapide pour fixer le footer d&#8217;un site en pied de page, cet article est pour vous ! Avant de commencer, il est intéressant de noter que cette solution est compatible avec quasiment tous les navigateurs, une liste complète est disponible à cette adresse. Site de présentation [...]]]></description>
			<content:encoded><![CDATA[<p>Si comme moi vous recherchez une solution simple et rapide pour fixer le footer d&#8217;un site en pied de page, cet article est pour vous !<br />
Avant de commencer, il est intéressant de noter que cette solution est compatible avec quasiment tous les navigateurs, une liste complète est disponible <a href="http://www.cssstickyfooter.com/fr/liste-des-navigateurs.html">à cette adresse</a>.</p>
<p style="text-align: center;"><img src="http://www.4live.fr/wp-content/uploads/2010/03/css_sticky1.jpg" alt="" title="css_sticky" width="561" height="80" /><br />
<a href="http://www.cssstickyfooter.com/fr/">Site de présentation</a></p>
<p>Entrons maintenant dans le vif du sujet !<br />
<span id="more-185"></span></p>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;wrap&quot;&gt;
	&lt;div id=&quot;main&quot; class=&quot;clearfix&quot;&gt;
	&lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;footer&quot;&gt;
&lt;/div&gt;
</pre>
<p>Voici la structure du code HTML de vos pages.<br />
Prenons l&#8217;exemple du template 4live :</p>
<p style="text-align: center;"><a href="http://www.4live.fr/wp-content/uploads/2010/03/4live_sticky.jpg" rel="lightbox[185]" title="footer sticky exemple 4live"><img src="http://www.4live.fr/wp-content/uploads/2010/03/4live_sticky-291x300.jpg" alt="" title="footer sticky exemple 4live" width="291" height="300" class="alignnone size-medium wp-image-199" /></a></p>
<p>Ce qui nous donne en code HTML :</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;wrap&quot;&gt;
	&lt;div id=&quot;top_menu&quot;&gt;
		...
	&lt;/div&gt;
	&lt;div id=&quot;main&quot; class=&quot;clearfix&quot;&gt;
		...
	&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;footer&quot;&gt;
	...
&lt;/div&gt;
</pre>
<p>C&#8217;est simple non ? Passons maintenant au fichier CSS :</p>
<pre class="brush: css; title: ; notranslate">
html, body, #wrap {height: 100%;}

body &gt; #wrap {height: auto; min-height: 100%;}

#main {padding-bottom: xx_footerheight px;}  /* Taille &quot;height&quot; de votre footer */

#footer {position: relative;
	margin-top: - xx_footerheight px; /* Taille &quot;height&quot; de votre footer en negatif */
	height: xx_footerheight px;
	clear:both;}
</pre>
<p>N&#8217;oubliez pas de changer la taille &laquo;&nbsp;xx_footerheight&nbsp;&raquo; du footer qui est utilisée 3 fois ici.<br />
La propriété &laquo;&nbsp;height:auto&nbsp;&raquo; de la div #wrap permet d&#8217;élargir la hauteur de cette div à la hauteur de la fenêtre.<br />
La marge negative de #footer permet de l&#8217;apporter jusqu&#8217;au padding de votre #main.</p>
<p>Reste à appliquer le hack clearfix qui corrige pas mal de problèmes avec les éléments flottants qui peuvent &laquo;&nbsp;décoller&nbsp;&raquo; le footer dans certains navigateurs.</p>
<pre class="brush: css; title: ; notranslate">
.clearfix:after {content: &quot;.&quot;;
	display: block;
	height: 0;
	clear: both;
	visibility: hidden;}
.clearfix {display: inline-block;}
/* Hides from IE-mac \*/
* html .clearfix { height: 1%;}
.clearfix {display: block;}
/* End hide from IE-mac */
</pre>
<p>Nous en avons terminé !</p>
<p>Si vous souhaitez plus d&#8217;informations sur ce hack, <a href="http://www.cssstickyfooter.com/fr">rendez-vous sur le site de l&#8217;auteur</a> ou postez un commentaire <img src='http://www.4live.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.4live.fr/2010/03/10/tips-css-forcer-le-footer-en-pied-de-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>API Google map : Etape 3 – Stockage et Affichage de points</title>
		<link>http://www.4live.fr/2010/02/09/api-google-map-etape-3-%e2%80%93-stockage-et-affichage-de-points/</link>
		<comments>http://www.4live.fr/2010/02/09/api-google-map-etape-3-%e2%80%93-stockage-et-affichage-de-points/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 18:42:01 +0000</pubDate>
		<dc:creator>Jordan Matejicek</dc:creator>
				<category><![CDATA[Outils Google]]></category>
		<category><![CDATA[ajout dans la bdd]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[base de données]]></category>
		<category><![CDATA[Geolocalisation]]></category>
		<category><![CDATA[googlemap]]></category>

		<guid isPermaLink="false">http://www.4live.fr/?p=144</guid>
		<description><![CDATA[Aujourd'hui nous allons voir comment enregistrer des points dans une base de données et comment les afficher sur notre carte.]]></description>
			<content:encoded><![CDATA[<p>Aujourd&#8217;hui nous allons voir comment enregistrer des points dans une base de données et comment les afficher sur notre carte.<br />
Pour ce tutoriel vous aurez bien entendu besoin d&#8217;une base de données ( MySQL ou autre ) cependant si vous utilisez une BDD autre que MySQL il faudra vous adapter.</p>
<p><strong>1. Création de la table MySQL</strong></p>
<p>Pour commencer, téléchargez la base de données MySQL <a href="http://www.4live.fr/ressources_dl/geolocalisation-googlemap/SQL/geolocalisation_bdd.sql">à cette adresse</a>. Importez le fichier depuis votre interface phpmyadmin.</p>
<p>Voici la structure de cette BDD :</p>
<p style="text-align: center;"><img class="size-full wp-image-146" title="bdd_geolocalisation" src="http://www.4live.fr/wp-content/uploads/2010/02/bdd_geolocalisation.jpg" alt="" width="583" height="183" /></p>
<p><a href="http://www.4live.fr/wp-content/uploads/2010/02/bdd_geolocalisation.jpg"></a><span id="more-144"></span>Je ne vais pas vous détailler tous les champs, seulement ceux qui me semblent nécessaires :</p>
<p><span style="text-decoration: underline;">geo_statut :</span> Ce champ nous permettra de gérer si on le souhaite une validation des points par un administrateur.</p>
<p><span style="text-decoration: underline;">geo_pos :</span> La position du point sous la forme (longitude, latitude). Cela permet d&#8217;accélérer le processus d&#8217;affichage des points.</p>
<p>Passons maintenant a l&#8217;établissement de connexion avec la BDD.</p>
<p><strong>2. Connexion à la base de données MySQL</strong></p>
<p>Ouvrez votre fichier &quot;mysql_connect.php&quot; et collez y le code suivant :</p>
<pre class="brush: plain; title: ; notranslate">&lt;?php
$db_type = 'dbtype'; // ici remplacez par 'mysql'
$db_host = 'yourhost'; // l'host de votre bdd
$db_name = 'dbname'; // son nom
$db_username = 'dbusrname'; // votre username
$db_password = 'dbpass'; // votre password
$db_select = 'dbselect'; // la db ou votre table est enregistrée
$connexion = mysql_connect($db_host,$db_username,$db_password);
if ($connexion)
{
mysql_select_db($db_name,$connexion);
}
else
{
}
?&gt;</pre>
<p>Votre fichier de connexion est maintenant prêt ! Passons à l&#8217;ajout.</p>
<p><strong>3. Ajout d&#8217;un point à la base de données</strong></p>
<p>Ouvrez votre page &quot;ajout.php&quot; et collez y le code ci-dessous :</p>
<pre class="brush: plain; title: ; notranslate">&lt;h1&gt;D&amp;eacute;poser un ajout&lt;/h1&gt;
&lt;?php
// Partie de traitement du formulaire...

// Si la requete s'est bien effectuée et donc qu'un ajout a été effectué
if ($_GET['message']==&quot;ok&quot;)
{
 // On affiche un message de confirmation
 ?&gt;
 &lt;p&gt;Votre ajout a bien &amp;eacute;t&amp;eacute; ajout&amp;eacute;e &amp;agrave; notre base de donn&amp;eacute;es et sera trait&amp;eacute;e dans les plus brefs d&amp;eacute;lais.&lt;/p&gt;
 &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;index.php&quot;&gt;Retour &amp;agrave; l'index&lt;/a&gt;&lt;/p&gt;
 &lt;?php
}
// Si erreur dans la requete
else if($_GET['message']==&quot;errbdd&quot;)
{
 // On affiche un message d'erreur
 ?&gt;
 &lt;p&gt;Erreur de connexion à la Bdd...&lt;/p&gt;
 &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;index.php&quot;&gt;Retour &amp;agrave; l'index&lt;/a&gt;&lt;/p&gt;
 &lt;?php
}
// Sinon...
else
{
 // Si le bouton ajouter! a été appuyé
 if (isset($_POST['ajouter']) &amp;&amp; $_POST['ajouter'] == 'Ajouter!')
 {
 // Récuperation des variables postés
 $date = htmlentities($_POST['date']);
 $position = htmlentities($_POST['position']);
 $adresse = htmlentities($_POST['adresse']);
 $titre = htmlentities($_POST['titre']);
 $description = htmlentities($_POST['description']);
 // Si tous les champs ont étés remplis
 if ( $_POST['titre']!=&quot;&quot; &amp;&amp; $_POST['adresse']!=&quot;&quot; &amp;&amp; $_POST['description']!=&quot;&quot; &amp;&amp; $_POST['date']!=&quot;&quot; )
 {
 // Connexion avec la BDD
 $mysql_link = include ('mysql_connect.php');
 // Si connexion effectuée
 if($mysql_link)
 {
 // Requete et execution de la requete
 $requete = &quot;INSERT INTO geolocalisation (geo_id,geo_statut,geo_date,geo_pos,geo_adresse,geo_titre,geo_description) VALUES('','1','$date','$position','$adresse','$titre','$description')&quot;;
 $execution = mysql_db_query($db_select, $requete);
 // Suivi d'une redirection JS
 ?&gt;
 &lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;
 document.location.href=&quot;index.php?page=ajout&amp;message=ok&quot;
 &lt;/SCRIPT&gt;
 &lt;?php
 }
 // Si erreur de connexion à la bdd
 else
 {
 ?&gt;
 &lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;
 document.location.href=&quot;index.php?page=ajout&amp;message=errbdd&quot;
 &lt;/SCRIPT&gt;
 &lt;?php
 }
 ?&gt;
 &lt;?php
 }
 // Si un des champs est vide on affiche un message d'erreur
 else
 {
 ?&gt;
 &lt;h2&gt;Erreur&lt;/h2&gt;
 &lt;div&gt;&lt;/div&gt;
 &lt;p&gt;Au moins un des champs est vide !&lt;/p&gt;
 &lt;?php
 }
 }

// Partie formulaire
 ?&gt;
 &lt;form action=&quot;index.php?page=ajout&quot; method=&quot;POST&quot;&gt;
 &lt;div&gt;&lt;/div&gt;
 &lt;?php
 $date = date('Y-m-j H:i:s');

 ?&gt;
 &lt;h2&gt;Nom de votre ajout&lt;/h2&gt;
 &lt;p&gt;Entrez ici le nom de votre ajout. Cel&amp;agrave; peut &amp;ecirc;tre par exemple votre nom.&lt;/p&gt;
 &lt;p&gt;&lt;input name=&quot;titre&quot; type=&quot;text&quot; value=&quot;&lt;?php echo &quot;$titre&quot;;?&gt;&quot; size=&quot;50&quot; /&gt;&lt;/p&gt;
 &lt;h2&gt;Adresse&lt;/h2&gt;
 &lt;p&gt;Entrez ici l'adresse ou est localis&amp;eacute;e l'odeur.&lt;/p&gt;
 &lt;p&gt;&lt;input name=&quot;adresse&quot; type=&quot;text&quot; value=&quot;&lt;?php echo &quot;$adresse&quot;;?&gt;&quot; onchange=&quot;addAddress(this.value); return false&quot; size=&quot;50&quot; /&gt;&lt;input name=&quot;date&quot; type=&quot;hidden&quot; value=&quot;&lt;?php echo &quot;$date&quot;;?&gt;&quot;/&gt;&lt;input name=&quot;position&quot; id=&quot;position&quot; type=&quot;hidden&quot; value=&quot;&lt;?php echo &quot;$position&quot;;?&gt;&quot; readonly=&quot;readonly&quot;  /&gt;&lt;/p&gt;
 &lt;h2&gt;Description&lt;/h2&gt;
 &lt;p&gt;Entrez ici une courte description de l'odeur.&lt;/p&gt;
 &lt;p&gt;&lt;textarea name=&quot;description&quot; cols=&quot;38&quot; rows=&quot;&quot;&gt;&lt;?php echo &quot;$description&quot;;?&gt;&lt;/textarea&gt;&lt;/p&gt;
 &lt;p align=&quot;center&quot;&gt;&lt;input type=&quot;submit&quot; name=&quot;ajouter&quot; id=&quot;submit&quot; value=&quot;Ajouter!&quot;&gt;&lt;/p&gt;
 &lt;/form&gt;
 &lt;?php
}
?&gt;</pre>
<p>Pour une fois je ne vais pas détailler tout le code, tout est commenté. Cependant quelques détails sont necessaires.</p>
<p>Dans le formulaire &#8230;</p>
<pre class="brush: plain; title: ; notranslate">&lt;input name=&quot;adresse&quot; type=&quot;text&quot; value=&quot;&lt;?php echo &quot;$adresse&quot;;?&gt;&quot; onchange=&quot;addAddress(this.value); return false&quot; size=&quot;50&quot; /&gt;</pre>
<p>Quand l&#8217;utilisateur modifie le contenu de cet input, appel de la fonction &quot;addAdress()&quot; avec en paramètre la valeur de l&#8217;input !</p>
<p>La fonction &quot;addAdress()&quot; va renvoyer la position a un autre input nommé &quot;position&quot;.</p>
<p>Ouvrez votre fichier &quot;geolocalisation_javascript.php&quot; et collez y le code suivant :</p>
<pre class="brush: plain; title: ; notranslate">function addAddress(address) {
 document.getElementById('submit').disabled=true;
 geocoder = new GClientGeocoder();
 if (geocoder) {
 geocoder.getLatLng(
 address,
 function(point) {
 if (!point) {
 alert(address + &quot; not found&quot;);
 } else {
 document.getElementById('position').value=point;
 document.getElementById('submit').disabled=false;
 }
 }
 );
 }
 }</pre>
<p>Le fonctionnement est exactement le même que pour la fonction &quot;showaddress()&quot;. Simplement, elle enverra la valeur de &quot;point&quot; dans l&#8217;input nommé position !</p>
<pre class="brush: plain; title: ; notranslate">document.getElementById('position').value=point;</pre>
<p>Pourquoi ? Tout simplement car cela accélèrera le processus d&#8217;affichage des points étant donné qu&#8217;on demandera à l&#8217;API de travailler avec des positions déjà calculés&#8230;</p>
<p>Fermez votre fichier &quot;ajout.php&quot;, nous en avons terminé avec lui <img src='http://www.4live.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p><strong>4. Affichage des points sur notre carte</strong></p>
<p>Vous me direz que maintenant il faudrait afficher ces points sur la carte. C&#8217;est vrai ! Pour cela je vous ai codé une petite fonction nommée &quot;show()&quot; simplifiée qui elle n&#8217;est pas présente dans les sources. Si vous ne voulez pas afficher tous les points de la carte mais faire un formulaire de recherche par exemple, je vous invite à <a href="http://4live.fr/ressources_dl/geolocalisation-googlemap/Geolocalisation-googlemap-bdd.rar">consulter les sources</a>, tout y est !</p>
<p>Si vous souhaitez simplement afficher tous les points présents dans la BDD, ouvrez votre fichier &quot;geolocalisation-javascript.php&quot; et collez le code suivant HORS des balises de javascript :</p>
<pre class="brush: plain; title: ; notranslate">&lt;?php
include ('mysql_connect.php');
echo &quot;&lt;script type=\&quot;text/javascript\&quot;&gt;
 function show() {
 // Creation du marqueur
 var blueIcon = new GIcon(G_DEFAULT_ICON);

 blueIcon.shadow = \&quot;\&quot;;
 // On attribue le marqueur a l'option GMarkerOptions
 markerOptions = { icon:blueIcon };
 &quot;;

 $date = date('Y-m-j H:i:s');

 // Requete SQL
 $sql=&quot;SELECT * FROM geolocalisation&quot;;
 $retour_recherche=mysql_query($sql);

 // Tant qu'il y à des enregistrements
 while($this_last=mysql_fetch_array($retour_recherche))

 {
 $id = $this_last['geo_id'];
 $date = $this_last['geo_date'];
 $adresse = $this_last['geo_adresse'];
 $geo_pos = $this_last['geo_pos'];
 $titre = $this_last['geo_titre'];
 $description = $this_last['geo_description'];
 // On ajoute des points sur la carte
 echo &quot;
 var point = new GLatLng$geo_pos;
 var marker&quot;.$id.&quot; = new GMarker(point,markerOptions);
 map.addOverlay(marker&quot;.$id.&quot;);
 var html&quot;.$id.&quot; = \&quot;&lt;center&gt;&lt;b&gt;&lt;u&gt;$titre&lt;/u&gt;&lt;/b&gt;&lt;/center&gt;&lt;br/&gt;&lt;br/&gt;$description\&quot;;
 GEvent.addListener(marker&quot;.$id.&quot;, 'click', function() {
 marker&quot;.$id.&quot;.openInfoWindowHtml(html&quot;.$id.&quot;);
 });
 &quot;;

 }
 echo &quot;      }&lt;/script&gt;&quot;;</pre>
<p>Comme vous le constatez c&#8217;est un mélange de PHP et de JS, PHP pour récupérer les informations de la BDD et JS pour le traitement avec l&#8217;API.</p>
<p>Vous pouvez modifier les points par défaut googlemaps par des points personnalisés en ajoutant :</p>
<pre class="brush: plain; title: ; notranslate">blueIcon.image = \&quot;VotreImage\&quot;;</pre>
<p>Après la ligne :</p>
<pre class="brush: plain; title: ; notranslate">var blueIcon = new GIcon(G_DEFAULT_ICON);</pre>
<p>On oubliera pas bien entendu de modifier le body onload de notre &quot;index.php&quot; en y ajoutant &quot;show()&quot; ce qui nous donnera :</p>
<pre class="brush: plain; title: ; notranslate">&lt;body onload=&quot;initialize();show();&quot;&gt;</pre>
<p>Nous en avons maintenant terminé avec l&#8217;API Googlemaps.</p>
<p>Encore une fois ( je me répète je sais ! ) si vous souhaitez plus d&#8217;informations ou aller un peu plus loin en matière de traitement des points affichés je vous invite à <a href="http://4live.fr/ressources_dl/geolocalisation-googlemap/Geolocalisation-googlemap-bdd.rar">télécharger les sources</a> ou à consulter la <a href="http://code.google.com/intl/fr/apis/maps/documentation/services.html">documentation officielle</a>.</p>
<p>Je reste également à votre disposition si vous avez des questions bien entendu.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.4live.fr/2010/02/09/api-google-map-etape-3-%e2%80%93-stockage-et-affichage-de-points/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

