PHP & MySQL

Utiliser Gravatar pour votre projet 2.0

4 réactions Le 31 octobre 2007 à 11:15 par Céd'

Plantons le décors : vous développez un site web 2.0, et vous désirez proposer à vos visiteurs la possibilité d’utiliser un avatar pour afficher graphiquement leur identité lors de leurs interventions sur le site.

La façon la plus directe, à priori, consisterait à coder une méthode vous-meme. Mais les inconvénients sont de poids, surtout si vous désirez bien faire les choses :

  • Nécessité d’utiliser des librairies lourdes (GD, ImageMagick);
  • Proposer l’upload, le recadrage, etc. demande un temps considérable;
  • Exige de l’espace disque, surtout si votre projet commence à etre connu;
  • etc.

Un homme intelligent évite l’effort inutile, un homme intelligent utilisera donc Gravatar.

GravatarGravatar (Globally Recognized Avatar), est un service en ligne permettant de lier une adresse e-mail à un avatar. L’avatage principal est d’éviter aux gens de devoir re-télécharger leur avatar sur l’ensemble des sites auxquels ils souscrivent. Le secondaire est d’offrir une solution facile aux webmasters désirant proposer cette fonctionnalité sur leur site.

Le code permettant de récuperer cet avatar n’importe où est très simple :

  1. $email = "email@domain.tld";
  2. $default = "http://www.somewhere.com/homestar.jpg";
  3. $size = 80;
  4. $gravatar = "http://www.gravatar.com/avatar.php?gravatar_id="
  5. .md5($email)."&default=".urlencode($default)."&size=".$size;
  • La variable $email contiendra l’adresse e-mail du membre dont on veut afficher le gravatar;
  • La variable $default définira l’image par défaut, utilisée si aucun gravatar n’est attaché à l’adresse e-mail renseignée;
  • La variable $size définira, en pixel, la taille du gravatar (maximum 80);
  • Et enfin la variable $gravatar permettra l’affichage.

Pour afficher votre image ou vous le désirez, placez ce code dans votre page :

  1. <img scr="<?php echo $gravatar ?>" />

Et voilà, j’espère que ça vous évitera des heures interminables de code!

PHP & MySQL

Générer des urls optimisées et lisibles

14 réactions Le 27 octobre 2007 à 22:35 par chris

Ce n’est un secret pour personne, Google prend en compte les mots clés se trouvant dans les urls des pages web, aussi, une url contenant le titre de la page est plutôt bien vue.

Ensuite, c’est toujours plus sympa de savoir de quoi parle une page avant de cliquer sur son url.

Voici comment procéder pour exploiter des urls type “mapage/10-le-smashing-coding” au lieu de “mapage/?id=10

pour commencer , copier coller cette fonction dans dans la page PHP qui va générer l’url:

  1. function pre_url($texte) {$texte = html_entity_decode($texte);$tofind = utf8_decode( ‘ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËéèêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ’ );
  2. $replac = utf8_decode( ‘AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn’ );
  3. $texte_pre_pre_pre = trim(strtolower(strtr($texte,$tofind,$replac)));
  4. $texte_pre_pre = eregi_replace(‘[^a-zA-Z0-9_]’, ‘-’, $texte_pre_pre_pre);
  5. $texte_pre = eregi_replace(‘-+’, ‘-’, $texte_pre_pre);
  6. $texte_final = substr($texte_pre, ‘0′, ‘128′);
  7. $end = substr($texte_final, -1, 1);
  8. if ($end == "-") $texte_final = substr($texte_final, 0, -1);
  9. return $texte_final;
  10. }

Comme vous pouvez le constater, cette fonction va convertir un texte genre “à l’école” en “a-l-ecole”.

Il peut être nécessaire d’adapter cette fonction selon votre type d’encodage de caractères.

Maintenant, imaginons que vous publiez une liste d’articles, vous utiliserez une requête Mysql de ce genre:

  1. $req = mysql_query("SELECT id, titre FROM malist WHERE category = ‘$cat’ ");
  2. while($data = mysql_fetch_assoc($req))
  3. {
  4. echo ‘<li><a href="mapage/’. $data[‘id’] .‘-’. pre_url($data[‘titre’]).‘">’. $data[‘titre’] .‘</a></li>’;
  5. }

Bon ça c’est bien joli, mais ensuite, il faut lire les urls.

C’est pas compliqué avec la magie du .htaccess
dans un .htaccess se situant à la racine du site, vous placerez ces lignes:

  1. Options +FollowSymlinks
  2. RewriteEngine on
  3. RewriteRule ^mapage/([0-9]+)-(.*)$ mapage/index.php?id=$1 [L]

Et voilà, c’est magique, vos urls seront bien plus jolies

PHP & MySQL

Librairie “mail” en PHP5 : Partie I

9 réactions Le 23 octobre 2007 à 23:22 par Tomtom

La fonction mail est très souvent utilisé sur un site pour des newsletters ou des confirmations d’inscription par exemple. Il se peut que l’on soit amené à l’utiliser relativement souvent lorsque que l’on développe une application web, c’est pourquoi plutôt que de récrire sans cesse le même code, il est préférable d’utiliser une librairie (on perd moins de temps du coup) ! D’autant plus qu’il faut respecter certains paramètres afin que les mails envoyés soient correctement formatés et qu’ils ne tombent pas directement dans le panier “Spams” des webmails.

Ce qu’il faut savoir, c’est qu’un email, c’est structuré. Et pour vous montrer visuellement ce que ça donne, je vous ai fait un petit schéma aux couleurs sympas!

Structure d’un email

Les deux premières parties sont obligatoires. On verra la prochaine fois que la partie texte peut être modulable. Je vais donc vous détailler dans ce billet comment faire la première partie : les entêtes

(lire la suite…)

PHP & MySQL

Les techniques de cache en PHP

5 réactions Le à 20:32 par Séverin

A partir du moment où on veut optimiser la vitesse d’affichage de pages, réduire les ressources utilisées, limiter les accès base de données, il faut se tourner vers les techniques de cache.

En version simplifiée, le cache est une version mémorisée du résultat d’une action qu’on utilise plutôt que de refaire cette action à chaque fois. On économise ainsi les ressources et le temps de l’action.

Par exemple, sur un digg-like, le code HTML de la page des dernières news peut être mémorisé dans un fichier. Ce fichier n’est recréé que quand une nouvelle news est ajoutée. Entre temps, les utilisateurs reçoivent donc instantanément le code HTML sans avoir à passer par la base de donnée.

Comme dans cet exemple, on peut stocker le code HTML afin de le renvoyer directement, mais on peut aussi cacher des données, par exemple le résultat de requêtes SQL. (lire la suite…)

PHP & MySQL

Dire bonjour à la manière de Flickr

4 réactions Le 22 octobre 2007 à 9:36 par spylberg

J’ai toujours trouvé très sympathique (et ô combien “web 2.0 communautaire”) la manière dont vous salut Flickr en plusieurs langues sur la page d’accueil, lorsque vous êtes logué.

J’ai donc créé une petite fonction en Php qui affiche un “bonjour” dans une langue prise au hasard dans un tableau, à chaque rechargement de la page.

(lire la suite…)

PHP & MySQL

Réaliser un nuage de tags en Php MySql

7 réactions Le 19 octobre 2007 à 9:58 par spylberg

J’ai dû réaliser récemment un module de recherche avancée pour ma boite, et j’ai voulu intégrer une recherche par tag.

Avant de me lancer je recherche souvent sur le web la meilleur manière de faire (souvent en dev, rien ne sert de réinventer ce qui a été maintes fois fait !), mais j’avoue que ce que je trouvais ne me satisfaisait pas.

Donc, en glanant et en regroupant toutes les infos récoltées, j’ai réaliser mon script. Alors voici pour vous un tutoriel pour réaliser votre propre nuage de tags…

(lire la suite…)

PHP & MySQL

Lire un XML en PHP5

4 réactions Le 15 octobre 2007 à 22:09 par Tomtom

Aujourd’hui, le XML est un format incontournable sur le web. Toutes les API des services web2.0 renvoient des fichiers XML contenant les résultats de la requête. Il est donc vital de savoir correctement lire un fichier XML. Nous allons donc faire ça en utilisant des fonctionnalités native dans PHP5 : SimpleXML Heureusement pour nous, PHP5 a grandement simplifié la lecture d’un fichier XML par rapport à PHP4, c’est donc avec ces nouvelles fonctions que je vais travailler. Imaginons donc que l’on veuille lire un fichier comme ceci :

  1. <?xml version="1.0" encoding="windows-1250"?>
  2. <famille nom="SmashingCoding">
  3. <membres>
  4. <membre nom="Chris" type="fondateur" />
  5. <membre nom="Tom" type="contributeur" />
  6. <membre nom="Gérald" type="contributeur" />
  7. <membre nom="Nicolas" type="contributeur" />
  8. <membre nom="Tomtom" type="contributeur" />
  9. </membres>
  10. <competences>
  11. <competence nom="PHP" membre="Tomtom" />
  12. <competence nom="MySQL" membre="Chris" />
  13. <competence nom="CSS" membre="Tom" />
  14. <competence nom="Ajax" membre="Tomtom" />
  15. <competence nom="XHTML" membre="Gérald" />
  16. <competence nom="Référencement" membre="Gérald" />
  17. <competence nom="Ajax" membre="Nicolas" />
  18. </competences>
  19. </famille>

On commence donc par ouvrir le fichier XML :

  1. # On peut remplacer fichier.xml par une URL
  2. $file = ‘fichier.xml’;
  3. # On initialise l’objet $xml
  4. $xml = simplexml_load_file($file);

A partir de là, on a fait le plus dur. Il ne reste plus qu’a parcourir le fichier. La syntaxe est très simple à retenir :

  1. # Atteindre le noeud ‘nom_du_noeud’
  2. $xml->nom_du_noeud;
  3. # Atteindre le noeud fils ‘nom_du_noeud2′ du noeud père ‘nom_du_noeud1′
  4. $xml->nom_du_noeud1->nom_du_noeud2;
  5. # Lire l’attribut ‘titre_attribut’ du noeud ‘nom_du_noeud’
  6. $xml->nom_du_noeud[‘titre_attribut’];

Imaginons que l’on veuille par exemple récupérer la liste des membres de la famille SmashingCoding:

  1. echo ‘<p>Liste des membres :</p><ul>’;
  2. foreach($xml->famille->membres->membre as $membre) {
  3. echo ‘<li>’.$membre[‘nom’].‘ est membre et ‘.$membre[‘type’].‘ de la famille ‘.$xml->famille[‘nom’].‘</li>’;
  4. }
  5. echo ‘</ul>’;

Ce qui affichera :

Liste des membres :
  • Chris est membre et fondateur de la famille SmashingCoding
  • Tom est membre et contributeur de la famille SmashingCoding
  • Gérald est membre et contributeur de la famille SmashingCoding
  • Nicolas est membre et contributeur de la famille SmashingCoding
  • Tomtom est membre et contributeur de la famille SmashingCoding

Mais on peut aller plus loin. Imaginons que l’on veuille maintenant récupérer la liste des compétences par utilisateur :

  1. echo ‘<p>Liste des membres :</p><ul>’;
  2. foreach($xml->famille->membres->membre as $membre) {
  3. $res = ;
  4. foreach($xml->famille->competences->competence as $competence) {
  5. if($competence[‘membre’] == $membre[‘nom’]) $res .= $competence[‘nom’].‘ ‘;
  6. }
  7. $item = ‘<li>’.$membre[‘nom’].‘ est membre et ‘.$membre[‘type’].‘ de la famille ‘.$xml->famille[‘nom’].‘ %s</li>’;
  8. echo (emtpy($res)) : sprintf($item,‘(Aucune compétence)’) ? sprintf($item,‘(’.$res.‘)’);
  9. }
  10. echo ‘</ul>’;

On obtiendra donc :

Liste des membres :
  • Chris est membre et fondateur de la famille SmashingCoding (MySQL)
  • Tom est membre et contributeur de la famille SmashingCoding (CSS)
  • Gérald est membre et contributeur de la famille SmashingCoding (XHTML Référencement)
  • Nicolas est membre et contributeur de la famille SmashingCoding (Ajax)
  • Tomtom est membre et contributeur de la famille SmashingCoding (PHP Ajax)

Finger in the nose! Maitenant, vous aussi vous pouvez faire joujou avec les API

« Page précédente
Valid XHTML 1.0 Transitional