<?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 - Développement Web</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 - Développement Web</description>
	<lastBuildDate>Thu, 03 Jun 2010 18:16:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<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;">&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;">
		$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;">
		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;">
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;">
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;">
		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;">
		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;">
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;">
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;">&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>0</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;">
&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;">
&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;">
&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;">
&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;">
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;">
.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;">&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;">&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;">&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;">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;">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;">&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;">blueIcon.image = \&quot;VotreImage\&quot;;</pre>
<p>Après la ligne :</p>
<pre class="brush: plain;">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;">&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>0</slash:comments>
		</item>
		<item>
		<title>API Google map : Etape 2 – Recherche et zoom</title>
		<link>http://www.4live.fr/2010/02/08/api-google-map-etape-2-%e2%80%93-recherche-zoom/</link>
		<comments>http://www.4live.fr/2010/02/08/api-google-map-etape-2-%e2%80%93-recherche-zoom/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 00:33:43 +0000</pubDate>
		<dc:creator>Jordan Matejicek</dc:creator>
				<category><![CDATA[Outils Google]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Geolocalisation]]></category>
		<category><![CDATA[googlemap]]></category>
		<category><![CDATA[interaction]]></category>

		<guid isPermaLink="false">http://www.4live.fr/?p=112</guid>
		<description><![CDATA[Nous avons vu précédemment  comment afficher une carte du type Google Map sur son site. Nous allons voir aujourd'hui comment interagir simplement avec l'API, en commençant par un simple zoom sur une adresse donnée.]]></description>
			<content:encoded><![CDATA[<p>Nous avons vu <a href="http://www.4live.fr/2010/02/07/initiation-a-lapi-google-map-etape-1-creation-et-affichage-dune-carte/#more-67">précédemment</a> comment afficher une carte du type Google Map sur son site. Nous allons voir aujourd&#8217;hui comment interagir simplement avec l&#8217;API, en commençant par un simple zoom sur une adresse donnée.</p>
<p style="text-align: center;"><img class="size-full wp-image-115  aligncenter" title="tuto_geolocalisation 2" src="http://www.4live.fr/wp-content/uploads/2010/02/gmaps1.png" alt="" width="400" height="138" /></p>
<p><span id="more-112"></span></p>
<p><strong>1. Création du champ de recherche</strong></p>
<p>Ouvrez votre page &quot;geolocalisation.php&quot; et collez y le code suivant :</p>
<pre class="brush: plain;">// Formulaire d'affichage &quot;zoom sur carte&quot; d'une adresse
&lt;form action=&quot;#&quot; onsubmit=&quot;javascript:showAddress(this.address.value); return false&quot;&gt;
&lt;h2&gt;Voir adresse&lt;/h2&gt;
&lt;table width=&quot;700&quot; border=&quot;0&quot; cellspacing=&quot;0&quot;&gt;
 &lt;tr&gt;
 &lt;td width=&quot;200&quot; align=&quot;left&quot;&gt;Adresse : &lt;/td&gt;
 &lt;td width=&quot;400&quot; align=&quot;left&quot;&gt;&lt;input type=&quot;text&quot; size=&quot;60&quot; name=&quot;address&quot; value=&quot;&quot; /&gt;&lt;/td&gt;
 &lt;td width=&quot;100&quot; align=&quot;right&quot;&gt;&lt;input type=&quot;submit&quot; value=&quot;Voir&quot; /&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;
&lt;/form&gt;</pre>
<p><em>Explications :</em></p>
<pre class="brush: plain;">&lt;form action=&quot;#&quot; onsubmit=&quot;javascript:showAddress(this.address.value); return false&quot;&gt;</pre>
<p>On ouvre notre formulaire avec aucune action afin de ne pas recharger la page du navigateur pour rien. Pour appeler notre fonction javascript on fait un &quot;onsubmit=showAddress()&quot; avec en paramètre &quot;this.adress.value&quot;, ce qui correspond a la valeur du champ &quot;address&quot;.</p>
<pre class="brush: plain;">&lt;h2&gt;Voir adresse&lt;/h2&gt;
&lt;table width=&quot;700&quot; border=&quot;0&quot; cellspacing=&quot;0&quot;&gt;
 &lt;tr&gt;
 &lt;td width=&quot;200&quot; align=&quot;left&quot;&gt;Adresse : &lt;/td&gt;
 &lt;td width=&quot;400&quot; align=&quot;left&quot;&gt;&lt;input type=&quot;text&quot; size=&quot;60&quot; name=&quot;address&quot; value=&quot;&quot; /&gt;&lt;/td&gt;
 &lt;td width=&quot;100&quot; align=&quot;right&quot;&gt;&lt;input type=&quot;submit&quot; value=&quot;Voir&quot; /&gt;&lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;
&lt;/form&gt;</pre>
<p>Ici simple mise en forme du champ de recherche, simplement ne pas oublier de mettre name=&quot;address&quot; a notre text-input.</p>
<p>C&#8217;est terminé pour cette page, passons maintenant à &quot;geolocalisation_javascript.php&quot;.</p>
<p><strong>2. Fonction JS de recherche</strong></p>
<p>On va créer la fonction qui permettra à l&#8217;API de zoomer sur l&#8217;adresse demandée. Nous appellerons cette fonction &quot;showAddress()&quot;. Avant de commencer, sachez que ma fonction est inspirée de <a href="http://code.google.com/intl/fr/apis/maps/documentation/services.html">la doc de L&#8217;API Google Maps</a>, vous y trouverez facilement d&#8217;autres exemples.</p>
<p>Ouvrez la page &quot;geolocalisation_javascript.php&quot; et collez y le code suivant. Attention, n&#8217;oubliez pas de placer tout ce code entre les balises &quot;&lt;script type=&quot;text/javascript&quot;&gt;&quot; et &quot;&lt;/script&gt;&quot;.</p>
<pre class="brush: plain;">function showAddress(address) {
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + &quot; not found&quot;);
            } else {
              map.setCenter(point, 11);
            }
          }
        );
      }
    }</pre>
<p><em>Explications :</em></p>
<pre class="brush: plain;">function showAddress(address) {
 if (geocoder) {</pre>
<p>On créer donc notre fonction &quot;showAddress()&quot; avec un paramètre appelé ici &quot;address&quot;, puis on vérifie si l&#8217;API est bien chargée via la variable &quot;geocoder&quot;.</p>
<pre class="brush: plain;">geocoder.getLatLng(
 address,
 function(point) {
 if (!point) {
 alert(address + &quot; not found&quot;);
 } else {
 map.setCenter(point, 11);
 }
 }
 );
 }
 }</pre>
<p>On demande simplement à l&#8217;api via la methode &quot;geocoder.getLatLng&quot; de récuperer la longitude et la latitude de notre adresse. Si l&#8217;adresse n&#8217;existe pas, on ouvre une fenêtre d&#8217;erreur en JS ( libre à vous de faire ca plus proprement ) afin d&#8217;afficher à l&#8217;utilisateur que son adresse n&#8217;est pas bonne. Si l&#8217;adresse existe, on zoom sur la carte via &quot;map.setCenter(point, 11);&quot;, le premier argument étant notre position recherchée et le 2eme le niveau de zoom appliqué.</p>
<p>C&#8217;est terminé pour cette étape 2 ! Essayez donc d&#8217;entrer une adresse dans le champ de recherche, la carte devrait automatiquement ce centrer dessus.</p>
<p>N&#8217;oubliez pas qu&#8217;un complément de documentation est disponible <a href="http://code.google.com/intl/fr/apis/maps/documentation/services.html">dans la doc officielle</a>.</p>
<p>Dans la 3eme étape, nous verrons comment stocker les données nécessaires à l&#8217;affichage dans une base de données de type MySQL.</p>
<p>A bientôt !</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.4live.fr/2010/02/08/api-google-map-etape-2-%e2%80%93-recherche-zoom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>API Google map : Etape 1 &#8211; Création et affichage d&#8217;une carte</title>
		<link>http://www.4live.fr/2010/02/07/initiation-a-lapi-google-map-etape-1-creation-et-affichage-dune-carte/</link>
		<comments>http://www.4live.fr/2010/02/07/initiation-a-lapi-google-map-etape-1-creation-et-affichage-dune-carte/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 16:15:11 +0000</pubDate>
		<dc:creator>Jordan Matejicek</dc:creator>
				<category><![CDATA[Outils Google]]></category>

		<guid isPermaLink="false">http://www.4live.fr/?p=67</guid>
		<description><![CDATA[Googlemap propose à travers son API libre d'intégrer toutes les fonctions de l'application à vos sites web. Je vais essayer à travers ce tutoriel de vous expliquer dans un premier temps comment mettre en place Googlemap sur votre site web, puis nous verrons comment gérer les interactions entre une base de données ( ici MySQL ) et l'API.]]></description>
			<content:encoded><![CDATA[<p>Googlemap propose à travers son API libre d&#8217;intégrer toutes les  fonctions de l&#8217;application à vos sites web. Je vais essayer à travers ce  tutoriel de vous expliquer dans un premier temps comment mettre en  place Googlemap sur votre site web, puis nous verrons comment gérer les  interactions entre une base de données ( ici MySQL ) et l&#8217;API.</p>
<p><strong>1. Création des fichiers necessaires</strong></p>
<p>Voici la liste des fichiers qui seront nécessaires dans ce tutoriel :</p>
<ul>
<li>index.php &#8211; Notre index, il contiendra les fonctions nécessaires et  appellera les différentes pages.</li>
<li>geolocalisation_javascript.php &#8211; Ce fichier contiendra les fonctions  javascript pour le fonctionnement de l&#8217;API.</li>
<li>geolocalisation.php &#8211; Notre carte.</li>
<li>ajout.php &#8211; Cette page permettra l&#8217;ajout à la base de données de  nouvelles adresses.</li>
<li>mysql_connect.php &#8211; Notre fichier de connexion à la base de données  MySQL.</li>
</ul>
<p>Vous pouvez directement télécharger les sources <a href="http://4live.fr/ressources_dl/geolocalisation-googlemap/Geolocalisation-googlemap-bdd.rar">ici</a>.</p>
<p><span id="more-67"></span></p>
<p><strong>2. Générer une &quot;API key&quot; pour son site</strong></p>
<p>Pour utiliser librement Googlemap sur votre site, vous devez dans un  premier temps générer une clé <a href="http://code.google.com/intl/fr/apis/maps/signup.html">ici</a>.  Cette clé nous servira a &quot;authentifier&quot; notre site lors de  l&#8217;initialisation de l&#8217;API. Commençons donc par rajouter le javascript  permettant d&#8217;utiliser l&#8217;api à notre fichier &quot;index.php&quot; entre les balises &lt;head&gt; et &lt;/head&gt; :</p>
<pre class="brush: plain;">&lt;script src=&quot;http://maps.google.com/maps?file=api&amp;amp;v=2.x&amp;amp;sensor=false&amp;amp;key=YOURKEY&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</pre>
<p>Remplacez YOURKEY par la clé que nous avons généré.</p>
<p>On va également en profiter pour inclure la page qui contiendra tout le code javascript :</p>
<pre class="brush: plain;">&lt;?php include(&quot;geolocalisation_javascript.php&quot;);?&gt;</pre>
<p>Pour terminer, on va ajouter un moyen de naviguer entre nos deux pages principales ( Ajout d&#8217;un point via &laquo;&nbsp;ajout.php&nbsp;&raquo; &amp; Affichage de la carte via &quot;geolocalisation.php&quot; ) entre les balises &lt;body&gt; et &lt;/body&gt; :</p>
<pre class="brush: plain;">&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;index.php?page=geolocalisation&quot;&gt;Geolocalisation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;index.php?page=ajout&quot;&gt;Ajout&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;?php
 if ($_GET['page'] == 'geolocalisation') { include(&quot;geolocalisation.php&quot;); }
 elseif ($_GET['page'] == 'ajout') { include(&quot;ajout.php&quot;); }
 else { }
?&gt;</pre>
<p>Rien de bien compliqué ici, c&#8217;est assez basique, si vous possédez déjà un site et que vous procédez à une intégration de googlemap, vous pouvez sauter cette étape.</p>
<p><strong>3. Initialisation et affichage de la carte</strong></p>
<p>Pour le moment, vous ne voyez rien et c&#8217;est tout à fait normal. On va voir comment initialiser la carte une fois l&#8217;authentification avec la key reussie.</p>
<p>On va commencer par le fichier &quot;geolocalisation.php&quot; qui je vous le rappelle est le fichier ou la carte sera affichée. Editez donc ce fichier et collez y le code suivant :</p>
<pre class="brush: plain;">&lt;h1&gt;G&amp;eacute;olocalisation&lt;/h1&gt;
&lt;h2&gt;Carte&lt;/h2&gt;
 &lt;div id=&quot;map_canvas&quot; style=&quot;width: 700px; height: 350px;margin-top:5px;&quot;&gt;&lt;/div&gt;</pre>
<p>Je vous passe le détail de la ligne 1 et 2 c&#8217;est de la simple mise en page.</p>
<p>Passons a la ligne</p>
<pre class="brush: plain;">&lt;div id=&quot;map_canvas&quot; style=&quot;width: 700px; height:  350px;margin-top:5px;&quot;&gt;&lt;/div&gt;</pre>
<p>On créer une div avec comme id &quot;map_canvas&quot;, cette id indiquera a la fonction JS d&#8217;afficher la map dans cette div. On lui attribue ensuite une taille, ici 700px de large pour 350px de haut. Une petite marge au dessus pour la mise en page et c&#8217;est terminé !</p>
<p>Passons ensuite aux choses serieuses. Ouvrez votre fichier &quot;geolocalisation_javascript.php&quot; et collez y le code suivant je vous l&#8217;expliquerai juste en dessous :</p>
<pre class="brush: plain;">&lt;script type=&quot;text/javascript&quot;&gt;

 var map = null;
 var geocoder = null;
 var marker;

 function initialize() {
 if (GBrowserIsCompatible()) {
 map = new GMap2(document.getElementById(&quot;map_canvas&quot;));
 geocoder = new GClientGeocoder();
 map.setUIToDefault();
 }

&lt;/script&gt;</pre>
<p><em>Explications :</em></p>
<pre class="brush: plain;">
&lt;pre&gt; var map = null;
 var geocoder = null;
 var marker;
</pre>
<p>Simple initialisation de variables qui nous serviront dans les fonctions JS.</p>
<pre class="brush: plain;">function initialize() {</pre>
<p>On créer une nouvelle fonction que l&#8217;on appelle &quot;initialize()&quot;</p>
<pre class="brush: plain;">if (GBrowserIsCompatible()) {</pre>
<p>Vérification si le browser est compatible&#8230; Si ce n&#8217;est pas le cas, je vous laisse gérer l&#8217;affichage d&#8217;un petit message d&#8217;erreur <img src='http://www.4live.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<pre class="brush: plain;">map = new GMap2(document.getElementById(&quot;map_canvas&quot;));</pre>
<p>C&#8217;est ici que l&#8217;on va demander au code JS de créer la carte de de l&#8217;afficher dans la div que l&#8217;on a créer précédemment, d&#8217;où l&#8217;importance de définir une ID à notre div.</p>
<pre class="brush: plain;">geocoder = new GClientGeocoder();</pre>
<p>Créer une nouvelle instance de Geocoder, cela nous permettra d&#8217;envoyer des requêtes aux serveurs Google Map.</p>
<pre class="brush: plain;">map.setUIToDefault();</pre>
<p>Utilisation de l&#8217;interface de navigation de base de Google Map.</p>
<p>Voila ! Rendez-vous sur votre index.php, cliquez sur géolocalisation et si tout va bien, vous devriez obtenir le résultat suivant :</p>
<p style="text-align: left;"><a href="http://www.4live.fr/wp-content/uploads/2010/02/geolocalisation.png" rel="lightbox[67]" title="tuto_geolocalisation 1"><img class="aligncenter size-full wp-image-95" title="tuto_geolocalisation 1" src="http://www.4live.fr/wp-content/uploads/2010/02/geolocalisation.png" alt="" width="569" height="422" /></a></p>
<p style="text-align: left;"><a href="http://www.4live.fr/wp-content/uploads/2010/02/geolocalisation.png"></a>Félicitations ! Nous verrons dans la prochaine étape comment ajouter un champ de recherche afin de zoomer sur une partie de la carte. D&#8217;ici la, n&#8217;hésitez pas à consulter <a href="http://4live.fr/ressources_dl/geolocalisation-googlemap/Geolocalisation-googlemap-bdd.rar">les sources</a>!</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.4live.fr/2010/02/07/initiation-a-lapi-google-map-etape-1-creation-et-affichage-dune-carte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Premier tutoriel : Initiation à l&#8217;API Google maps</title>
		<link>http://www.4live.fr/2010/02/07/premier-tutoriel-initiation-a-lapi-google-maps/</link>
		<comments>http://www.4live.fr/2010/02/07/premier-tutoriel-initiation-a-lapi-google-maps/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 05:18:43 +0000</pubDate>
		<dc:creator>Jordan Matejicek</dc:creator>
				<category><![CDATA[Outils Google]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[base de données]]></category>
		<category><![CDATA[Geolocalisation]]></category>
		<category><![CDATA[googlemap]]></category>
		<category><![CDATA[integration]]></category>

		<guid isPermaLink="false">http://www.4live.fr/?p=79</guid>
		<description><![CDATA[Le premier tutoriel traitera de l&#8217;API Google maps ainsi que de l&#8217;enregistrement des informations relatives à la géolocalisation dans une base de données afin d&#8217;afficher plusieurs positions issus d&#8217;une BDD sur une même carte. Sa première partie traitant de l&#8217;initialisation et de l&#8217;affichage de la carte sera disponible en début de soirée, le temps pour [...]]]></description>
			<content:encoded><![CDATA[<p>Le premier tutoriel traitera de l&#8217;API Google maps ainsi que de l&#8217;enregistrement des informations relatives à la géolocalisation dans une base de données afin d&#8217;afficher plusieurs positions issus d&#8217;une BDD sur une même carte.</p>
<p style="text-align: center;"><img class="size-full wp-image-80    aligncenter" title="Google Maps" src="http://www.4live.fr/wp-content/uploads/2010/02/gmaps.png" alt="" width="450" height="245" /></p>
<p style="text-align: left;">Sa première partie traitant de l&#8217;initialisation et de l&#8217;affichage de la carte sera disponible en début de soirée, le temps pour moi de rédiger une explication claire du code. Ce dernier à été réalisé lors de mon Projet BTS ou il m&#8217;a été demandé de réaliser un site pour une plateforme du reseau ATMO Lorraine Nord, organisme qui contrôle la qualité de l&#8217;air en Lorraine. Le visiteur devait via le site pouvoir déposer une plainte suite à la pollution et consulter la carte avec une visualisation des dernières plaintes.</p>
<p style="text-align: left;">Pour ce tutoriel, tous les styles ont été supprimés afin de simplifier le code au maximum.</p>
<p style="text-align: left;">En attendant, vous pouvez d&#8217;ores et déjà télécharger les sources complètes <a title="Geolocalisation_sources" href="http://www.4live.fr/ressources_dl/geolocalisation-googlemap/Geolocalisation-googlemap-bdd.rar">directement sur notre site</a>.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.4live.fr/2010/02/07/premier-tutoriel-initiation-a-lapi-google-maps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ouverture de 4live Créations</title>
		<link>http://www.4live.fr/2010/02/06/ouverture-4livecreations/</link>
		<comments>http://www.4live.fr/2010/02/06/ouverture-4livecreations/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 18:35:42 +0000</pubDate>
		<dc:creator>Jordan Matejicek</dc:creator>
				<category><![CDATA[Site]]></category>

		<guid isPermaLink="false">http://4live.fr/?p=1</guid>
		<description><![CDATA[Bienvenue sur 4live Créations, votre nouveau portail pour vos créations web. Vous y retrouverez l'actualité des nouvelles technologies web, des tutoriels en PHP, CSS et XHTML ainsi que nos dernières créations.]]></description>
			<content:encoded><![CDATA[<p>Bienvenue sur 4live Créations, votre nouveau portail pour vos créations web.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-8" title="Logo 4live" src="http://www.4live.fr/wp-content/uploads/2010/02/4live_logo.png" alt="4live" width="216" height="83" /></p>
<p>Vous y retrouverez l&#8217;actualité des nouvelles technologies web, des tutoriels en PHP, CSS et XHTML ainsi que nos dernières créations.</p>
<p>Le site vient à peine d&#8217;être mis en ligne, je vais essayer d&#8217;ajouter du contenu dans les prochaines heures.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.4live.fr/2010/02/06/ouverture-4livecreations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
