<?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>Awelty : société de création de site - Référencement - Amiens, Somme, Picardie &#187; astuces</title>
	<atom:link href="http://www.awelty.fr/tag/astuces/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.awelty.fr</link>
	<description>Agence web à Amiens</description>
	<lastBuildDate>Fri, 16 Dec 2011 17:00:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Créer un contrôle javascript universel en Javascript / jQuery</title>
		<link>http://www.awelty.fr/developpement-web/jquery/</link>
		<comments>http://www.awelty.fr/developpement-web/jquery/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 16:10:00 +0000</pubDate>
		<dc:creator>Tony Samson</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[astuces]]></category>
		<category><![CDATA[controle formulaire]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.awelty.fr/v5/e-monsite/jquery/</guid>
		<description><![CDATA[En plus de la création des formulaires en HTML, pour laquelle j&#8217;ai déjà donné une astuce dans un précédent billet, il y a un autre aspect long et peu intéressant dans la conception de formulaires : les contrôles javascript. Ces derniers permettent de vérifier que le formulaire a été dûment rempli par l&#8217;internaute avant d&#8217;enregistrer [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">En plus de la <a href="http://www.awelty.fr/developpement-web/php-astuce-pour-faire-des-pages-de-formulaires-et-gagner-du-temps/">création des formulaires en HTML</a>, pour laquelle j&#8217;ai déjà donné une astuce dans <a href="http://www.awelty.fr/developpement-web/php-astuce-pour-faire-des-pages-de-formulaires-et-gagner-du-temps/">un précédent billet</a>, il y a un autre aspect long et peu intéressant dans la conception de formulaires : les contrôles javascript. Ces derniers permettent de vérifier que le formulaire a été dûment rempli par l&#8217;internaute avant d&#8217;enregistrer ou d&#8217;envoyer par E-mail les données saisies.</p>
<p style="text-align: justify;">En général, pour chaque formulaire sur un site on créé une fonction spécifique. Ce qui peut s&#8217;avérer rapidement une grosse perte de temps.</p>
<p style="text-align: justify;">La problématique est donc posée : <strong>comment gagner du temps tout en effectuant des contrôles sur les formulaires </strong>en bonne et due forme <strong>?</strong></p>
<p style="text-align: justify;">Il suffit d&#8217;avoir une seule et même fonction pour l&#8217;ensemble des formulaires. C&#8217;est là que l&#8217;utilisation de jQuery devient très intéressante. En effet, avec jQuery il est possible d&#8217;agir sur les éléments de la page ayant le même <a href="http://jquery.developpeur-web2.com/documentation/selecteurs.php">sélecteur</a>.</p>
<p style="text-align: justify;">Nous allons donc définir une classe spécifique aux éléments de formulaire obligatoires. De plus, nous allons indiquer un élément <em>title</em> aux champs formulaires afin de pouvoir les réutiliser dans notre fonction :</p>
<p style="text-align: justify;"><code>&lt;input name="nom" id="nom" class="obligatoire" title="Nom" type="text"&gt;</code></p>
<p style="text-align: justify;">Ainsi, tous les éléments ayant la classe &laquo;&nbsp;obligatoire&nbsp;&raquo; devront être remplis. La fonction javascript suivante se charge du contrôle :</p>
<p style="text-align: justify;"><code>function VerifForm(){<br />
var count=1;<br />
var message="";<br />
$(".obligatoire").map(function(){</code></p>
<p style="text-align: justify;">if($(this).val()==&nbsp;&raquo;)<br />
{<br />
message += &laquo;&nbsp;\n &#8211; &laquo;&nbsp;+$(this).attr(&laquo;&nbsp;title&nbsp;&raquo;);<br />
count++;<br />
}<br />
});</p>
<p style="text-align: justify;">message += &laquo;&nbsp;\n\n&nbsp;&raquo;+&nbsp;&raquo;Puis validez de nouveau le formulaire&nbsp;&raquo;;</p>
<p style="text-align: justify;">if(count==2) { alert(&laquo;&nbsp;Veuillez remplir ce champ :\n&nbsp;&raquo;+message);<br />
return false; }<br />
else if(count&gt;2) { alert(&laquo;&nbsp;Veuillez remplir ces champs\n&nbsp;&raquo;+message);<br />
return false; }<br />
else { return true; }</p>
<p style="text-align: justify;">}</p>
<p style="text-align: justify;">Ainsi, si le champ &laquo;&nbsp;nom&nbsp;&raquo; n&#8217;est pas rempli, une alerte javascript (qui peut être modifiée par une alerte ajax, avec par exemple le plugin <a href="http://famspam.com/facebox/">facebox</a>) indiquera que le champ n&#8217;est pas rempli.</p>
<p style="text-align: justify;">Il ne faut pas oublier d&#8217;appeler cette fonction dans la balise &lt;form&gt; : onsubmit=&nbsp;&raquo;return VerifForm();&nbsp;&raquo;</p>
<p style="text-align: justify;">Cette fonction est basique et doit être améliorée pour prendre en compte d&#8217;autres éléments de formulaire tels que les cases checkbox, les boutons radio, etc. De plus, il serait judicieux de définir des classes différentes pour contrôler les adresses email, les numéros de téléphone, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.awelty.fr/developpement-web/jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>4 fonctions php pour effectuer des requêtes SQL</title>
		<link>http://www.awelty.fr/developpement-web/4-fonctions-php-pour-effectuer-des-requetes-sql/</link>
		<comments>http://www.awelty.fr/developpement-web/4-fonctions-php-pour-effectuer-des-requetes-sql/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 10:33:00 +0000</pubDate>
		<dc:creator>Tony Samson</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[astuces]]></category>
		<category><![CDATA[fonctions php]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.awelty.fr/v5/e-monsite/4-fonctions-php-pour-effectuer-des-requetes-sql/</guid>
		<description><![CDATA[<p>Je vais essayer de donner régulièrement des astuces de programmation php/sql sur ce blog. Ainsi, je vais m'éfforcer de publier les fonctions php que j'utilise pour me faciliter le développement, des astuces d'<a href="../index.php?post/2008/04/09/Des-pistes-pour-optimiser-les-performances-dacces-dun-site-web">optimisation</a>, des méthodes de développement, etc.</p> <p>Pour inaugurer cette partie, je vous fournis 4 fonctions (+ 2 variantes) bien utiles pour faire des traitements SQL de base à savoir : SELECT, INSERT, UPDATE et DELETE.</p> <p>Ces fonctions sont finalement assez simples, mais ça fait gagner du temps. De plus, ce genre de fonction permet d'opérer des changements sur toutes les requêtes identiques très simplement (ex : en cas de changement de système de base de données).</p> <p><strong>Insérer un enregistrement :</strong></p> <p><code>function inserer_sql($table,$champs,$donnees)<br />{<br />$sql = "INSERT INTO $table ($champs) ";<br />$sql .= "VALUES ($donnees)";<br /><br />&#160;&#160;&#160; if(mysql_query($sql))<br />&#160;&#160;&#160; {<br />&#160;&#160;&#160; return true;<br />&#160;&#160;&#160; }<br />&#160;&#160;&#160; else<br />&#160;&#160;&#160; {<br />&#160;&#160;&#160; return false;<br />&#160;&#160;&#160; }<br />}</code></p> <p>Et pour l'utiliser, c'est tout aussi simple. Par exemple :</p> <p><code>if(inserer_sql("utilisateurs","email,nom,prenom",<br />"'$_POST[email]','$_POST[nom]','$_POST[prenom]'"))<br />echo"L'ajout a été effectué avec succès";<br />else echo"L'ajout a échoué";</code></p>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Je vais essayer de donner régulièrement des astuces de programmation php/sql sur ce blog. Ainsi, je vais m&#8217;efforcer de publier les fonctions php que j&#8217;utilise pour me faciliter le développement, des astuces d&#8217;<a href="http://www.awelty.fr/developpement-web/des-pistes-pour-optimiser-les-performances-dacces-dun-site-web/">optimisation</a>, des méthodes de développement, etc.</p>
<p style="text-align: justify;">Pour inaugurer cette partie, je vous fournis 4 fonctions (+ 2 variantes) bien utiles pour faire des traitements SQL de base à savoir : SELECT, INSERT, UPDATE et DELETE.</p>
<p style="text-align: justify;">Ces fonctions sont finalement assez simples, mais ça fait gagner du temps. De plus, ce genre de fonction permet d&#8217;opérer des changements sur toutes les requêtes identiques très simplement (ex : en cas de changement de système de base de données).</p>
<p style="text-align: justify;"><strong>Insérer un enregistrement :</strong></p>
<p style="text-align: justify;"><code>function inserer_sql($table,$champs,$donnees)<br />
{<br />
$sql = "INSERT INTO $table ($champs) ";<br />
$sql .= "VALUES ($donnees)";</code></p>
<p style="text-align: justify;">if(mysql_query($sql))<br />
{<br />
return true;<br />
}<br />
else<br />
{<br />
return false;<br />
}<br />
}</p>
<p style="text-align: justify;">Et pour l&#8217;utiliser, c&#8217;est tout aussi simple. Par exemple :</p>
<p style="text-align: justify;"><code>if(inserer_sql("utilisateurs","email,nom,prenom",<br />
"'$_POST[email]','$_POST[nom]','$_POST[prenom]'"))<br />
echo"L'ajout a été effectué avec succès";<br />
else echo"L'ajout a échoué";</code></p>
<p style="text-align: justify;">Ensuite, pour gagner du temps j&#8217;utilise une autre fonction qui n&#8217;a comme arguments que le nom de la table et la liste des champs à ajouter (sous forme de tableau). Cela suppose bien sur une correspondance des champs du formulaire (données POST) et des champs de la table :</p>
<p style="text-align: justify;"><code>function inserer_sql_array($table,$array)<br />
{<br />
$req="";<br />
$i=1;<br />
foreach($array as $k)<br />
{</code></p>
<p>if($i!=&#8217;1&#8242;) { $req.=&nbsp;&raquo;, &laquo;&nbsp;; $req2.=&nbsp;&raquo;, &laquo;&nbsp;; }</p>
<p>$req.=&nbsp;&raquo;$k&nbsp;&raquo;;<br />
$req2.=&nbsp;&raquo;&#8216;$_POST[$k]&#8216;&nbsp;&raquo;;<br />
$i++;<br />
}</p>
<p style="text-align: justify;">return inserer_sql($table,$req,$req2);<br />
}</p>
<p style="text-align: justify;">Il suffit de l&#8217;utiliser comme ceci :</p>
<p style="text-align: justify;"><code>if(inserer_sql_array("utilisateurs",array("email,nom,prenom"))<br />
echo"L'ajout a été effectué avec succès";<br />
else echo"L'ajout a échoué";</code></p>
<p style="text-align: justify;"><strong>Modification de données :</strong></p>
<p style="text-align: justify;">Sur le même principe que pour l&#8217;ajout j&#8217;ai cette fonction :</p>
<p style="text-align: justify;"><code>function maj_sql($table,$action,$where)<br />
{<br />
if($where=='') { $where=1; }</code></p>
<p style="text-align: justify;">$sql = &laquo;&nbsp;UPDATE $table SET $action &laquo;&nbsp;;<br />
$sql .= &laquo;&nbsp;WHERE $where&nbsp;&raquo;;</p>
<p style="text-align: justify;">if(mysql_query($sql))<br />
{<br />
return true;<br />
}<br />
else<br />
{<br />
return false;<br />
}<br />
}</p>
<p style="text-align: justify;">Dans cette fonction, il est permis de modifier tous les enregistrements d&#8217;une table (en laissant l&#8217;argument $where à vide). Mais, par mesure de sécurité, on peut désactiver cela en testant la variable $where au début et en renvoyant <strong>false</strong> si elle est vide.</p>
<p style="text-align: justify;">Pour utiliser cette fonction, il suffit de tester que la fonction renvoie bien <strong>true.</strong></p>
<p style="text-align: justify;">La variante de cette fonction qui génère la requête à partir d&#8217;un tableau array() :</p>
<p style="text-align: justify;"><code>function maj_sql_array($table,$array,$where)<br />
{<br />
$req="";<br />
$i=1;<br />
foreach($array as $k)<br />
{<br />
if($i!='1') $req.=", ";</code></p>
<p>$req.=&nbsp;&raquo;$k=&#8217;$_POST[$k]&#8216;&nbsp;&raquo;;<br />
$i++;<br />
}</p>
<p style="text-align: justify;">maj_sql($table,$req,$where);<br />
}</p>
<p style="text-align: justify;"><strong>Suppression de données :</strong></p>
<p style="text-align: justify;">Cette fonction permet de supprimer un ou plusieurs enregistrements dans une table en précisant uniquement la table et la condition à remplir. Cependant, par mesure de sécurité, il est impossible de ne pas préciser de condition (cela supprimerait tous les enregistrements de la table) :</p>
<p style="text-align: justify;"><code>function sup_sql($table,$where)<br />
{</code></p>
<p style="text-align: justify;">if($where==&nbsp;&raquo;) {<br />
return false;<br />
}<br />
else<br />
{<br />
$sql = &laquo;&nbsp;DELETE FROM $table &laquo;&nbsp;;<br />
$sql .= &laquo;&nbsp;WHERE $where&nbsp;&raquo;;</p>
<p style="text-align: justify;">if(mysql_query($sql))<br />
{<br />
return true;<br />
}<br />
else<br />
{<br />
return false;<br />
}<br />
}<br />
}</p>
<p style="text-align: justify;"><strong>Lire une ligne d&#8217;une table</strong> :</p>
<p style="text-align: justify;">Enfin, la dernière fonction permet d&#8217;extraire les données d&#8217;un enregistrement d&#8217;une table. C&#8217;est bien sûr en fait un simple SELECT mais comme pour les autres fonctions, cela permet de gagner du temps.</p>
<p style="text-align: justify;"><code>function requete_sql($table,$champs,$where)<br />
{<br />
// si $where est vide on lui attribue une valeur par défaut<br />
if($where=='') { $where=1; }</code></p>
<p style="text-align: justify;">// en cas de jointure on utilise le nom de la première table pour le tri par ID.<br />
$tab=explode(&laquo;&nbsp;,&nbsp;&raquo;,$table);</p>
<p style="text-align: justify;">$sql = &laquo;&nbsp;select $champs from $table where $where ORDER by $tab[0].id DESC LIMIT 1&#8243;;<br />
$p = mysql_query($sql)OR DIE(&laquo;&nbsp;Erreur sur la requete SELECT $champs FROM $table WHERE $where&nbsp;&raquo;);<br />
return mysql_fetch_array($p);<br />
}</p>
<p style="text-align: justify;">Le résultat de cette fonction est un tableau contenant les données précisées dans l&#8217;argument $champs. Exemple :</p>
<p style="text-align: justify;"><code>$requete=requete_sql("utilisateurs","nom,prenom,email","id='$_GET[user]'");<br />
echo"Bonjour ".$requete[prenom]." !";</code></p>
<p style="text-align: justify;">En bonus, voici la fonction qui permet de compter le nombre d&#8217;enregistrements dans une table pour une condition précise. Cette fonction effectue un mysql_numrows sur une requête SELECT. Les puristes préféreraient sans doûte un SELECT count(id), cependant, il me semble que ma méthode est moins lourde :</p>
<p style="text-align: justify;"><code>function compter_sql($table,$where)<br />
{<br />
if($where=='') { $where=1; }<br />
$sql = "select id from $table where $where";<br />
$p = mysql_query($sql)OR DIE("Erreur sur la requete SELECT id FROM $table WHERE $where");<br />
return mysql_numrows($p);<br />
}</code></p>
<p style="text-align: justify;">Cette fonction suppose que vous avez une colonne <strong>id</strong> dans votre table puisque le SELECT est effectué dessus. Pour l&#8217;utiliser, rien de plus simple :</p>
<p style="text-align: justify;"><code>$nb_utilisateurs_hommes = compter_sql("utilisateurs","sexe='H'");</code></p>
<p style="text-align: justify;"><strong>Conclusion :</strong></p>
<p style="text-align: justify;">Ces petites fonctions ne sont pas révolutionnaires en soit puisqu&#8217;elles reprennent les principes de base de SQL. Cependant, et ce n&#8217;est pas négligeable, elles permettent réellement de gagner du temps car elles sont plus rapides à écrire et plus faciles à retenir (je retiens mieux des noms de fonction en français qu&#8217;en anglais).</p>
<p style="text-align: justify;">Bien sûr, elles ne sont pas parfaites, il faudrait protéger les données à insérer ou à modifier par des htmlspecialchars() et addslashes(). Mais pour ça, c&#8217;est à vous de jouer, je ne vais pas vous prémacher tout le travail non plus !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.awelty.fr/developpement-web/4-fonctions-php-pour-effectuer-des-requetes-sql/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Des pistes pour optimiser les performances d&#8217;accès d&#8217;un site web</title>
		<link>http://www.awelty.fr/developpement-web/des-pistes-pour-optimiser-les-performances-dacces-dun-site-web/</link>
		<comments>http://www.awelty.fr/developpement-web/des-pistes-pour-optimiser-les-performances-dacces-dun-site-web/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 12:19:00 +0000</pubDate>
		<dc:creator>Tony Samson</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[astuces]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.awelty.fr/v5/e-monsite/des-pistes-pour-optimiser-les-performances-dacces-dun-site-web/</guid>
		<description><![CDATA[Les difficultés rencontrées avec un site à fort trafic (E-monsite en est un bon exemple) sont compliquées à gérer. Il y a d&#8217;un côté la partie matérielle qui doit être suffisante, et d&#8217;un autre côté la partie développement qui doit être optimale. C&#8217;est ce second point que je vais aborder dans ce billet qui regroupe [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Les difficultés rencontrées avec un site à fort trafic (<a title="Creer un site Internet" href="http://www.e-monsite.com">E-monsite</a> en est un bon exemple) sont compliquées à gérer. Il y a d&#8217;un côté la partie matérielle qui doit être suffisante, et d&#8217;un autre côté la partie développement qui doit être optimale. C&#8217;est ce second point que je vais aborder dans ce billet qui regroupe toutes les techniques et astuces que j&#8217;utilise afin de soulager la charge du serveur.</p>
<ul style="text-align: justify;">
<li> Bien penser la structure de sa base de données avant le développement afin de réduire au maximum le nombre de requêtes SQL dans le développement (par exemple, ne pas hésiter à créer une colonne contenant le nombre de messages postés par un utilisateur &#8211; qui sera remis à jour à chaque message qu&#8217;il postera &#8211; plutôt que de faire un mysql_num_rows à chaque affichage de ce nombre).</li>
</ul>
<ul style="text-align: justify;">
<li>Mettre en cache tout ou une partie du contenu (stocker la page dans un fichier html et l&#8217;afficher s&#8217;il existe ou sinon affichage de la page php et génération du cache).</li>
</ul>
<ul style="text-align: justify;">
<li>Mettre en cache des variables avec les fonctions serialize et unserialize. Cela permet par exemple de mettre en cache le résultat d&#8217;un mysql_fetch_array assez lourd appelé sur chaque page (comme des variables sur l&#8217;utilisateur ou le contenu de menus&#8230;). J&#8217;y reviendrais plus en détail dans un prochain billet.</li>
</ul>
<ul style="text-align: justify;">
<li>Optimiser les requêtes SQL : utiliser les jointures (SELECT sur plusieurs table ayant des champs en communs) et ne pas faire de SELECT * (select sur tous les champs) mais lister les champs utilisés (SELECT id,login,nom FROM &#8230;).</li>
</ul>
<ul style="text-align: justify;">
<li>Mettre des index intelligents sur les tables SQL. Les index permettent un gain de temps d&#8217;accès énorme. Il faut les placer sur les colonnes utilisées dans la clause WHERE.</li>
</ul>
<ul style="text-align: justify;">
<li>Compresser vos pages web, fichiers CSS et javascripts à l&#8217;aide de la fonction gzip de php. Vous trouverez sur <a href="http://aciddrop.com/2008/01/21/boost-your-website-load-time-with-3-lines-of-code/">ce site</a> une classe complète pour compresser vos pages. Cela peut paraître idiot à l&#8217;heure du haut débit : il faut optimiser le poids des images car des images lourdes ralentissent malgré tout le chargement de la page.</li>
</ul>
<ul style="text-align: justify;">
<li>Vérifier qu&#8217;un script, notamment de régie publicitaire, ne ralentit pas l&#8217;affichage de la page. Cela arrive fréquemment et certaines régies sont championnes dans ce domaine !</li>
</ul>
<p style="text-align: justify;">
<p style="text-align: justify;">N&#8217;hésitez pas à compléter si j&#8217;ai oublié des choses <img src='http://www.awelty.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.awelty.fr/developpement-web/des-pistes-pour-optimiser-les-performances-dacces-dun-site-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

