Archive pour le ‘PHP’ catégorie

Alterner les couleurs des lignes d’un tableau (PHP ou jQuery)

9 mars 2010

Pour faciliter la lecture d’un tableau il est fréquent d’alterner la couleur de chaque ligne.
Le principe est d’attribuer aux lignes paires un style et un autre aux lignes impaires.

En PHP

Voir la démo
Créons tout d’abord 2 styles.
[cc lang=’css’ width=’100%’]
.style1{
background-color : #F2F1EB;
}
.style2{
background-color : #DAE9F4;
}
[/cc]

En PHP on utilise le modulo % (reste de la division) . Le modulo d’une division par 2 permet de savoir si la ligne est paire ou impaire, il ne reste plus qu’à affecter un style pour chacun des 2 cas.
[cc lang=’php’ width=’100%’]
echo « 

« ;
for($i=1; $i < = 10; $i++){ if($i%2){ $classe = "style1"; }else{ $classe = "style2"; } echo "

< /tr> « ;
}
echo « 

ligne $i ligne $i

« ;
[/cc]
On affecte à la variable $classe l’un ou l’autre des styles et on l’applique à la ligne.

En jQuery

Voir la démo
Partons du même tableau.
[cc lang=’php’ width=’100%’]
echo « 

« ;
for($i=1; $i < = 10; $i++){ echo "

< /tr> « ;
}
echo « 

ligne $i ligne $i

« ;
[/cc]
et appliquons un style différent selon que les lignes soient paires (even) ou impaires (odd)

[cc lang=’js’ width=’100%’]
$(document).ready(function(){
$(‘table.monTab tr:nth-child(even)’).addClass(‘style1’);
$(‘table.monTab tr:nth-child(odd)’).addClass(‘style2’);
});
[/cc]
On applique donc le style style1 à chaque ligne paire (even) et le style2 à chaque ligne impaire (odd) du/des tableau(x) dont la classe est monTab grâce à la méthode addClass de jQuery, qui ajoute une classe à un élément.

L’utilisation de nth-child permet d’éviter que jQuery se perde si vous avez plusieurs tableaux dans votre page, en effet sinon il continu d’attribuer les couleurs sans repartir à zéro. Ainsi la première ligne du tableau 1 pourrait être bleue alors que la première ligne du tableau 2 serait blanche.

Numéro de téléphone avec des points et conversion de date en français avec PHP

8 mars 2010

Téléphone

Lorsque vous demandez à un visiteur de saisir son numéro de téléphone, il est plus simple pour lui de le taper sans utiliser de points ou d’espaces etc… Pourtant lorsque vous l’affichez c’est quand même plus lisible que les chiffres ne soient pas tous collés.
Une possibilité, consiste à utiliser wordwrap
[cc lang=’php’ width=’100%’]
$tel = « 0145666666 »;
$tel_formate = wordwrap ($tel, 2, ‘.’, 1); // 01.45.66.66.66
[/cc]
string wordwrap ( string str , int width , string break , bool cut )
wordwrap retourne la chaîne str , après avoir inséré break tous les width caractères.

Convertir une date au format français

Si vous récupérez une date issue de votre base mysql par exemple, le format sera YYYY-MM-DD, cependant pour l’afficher à l’écran les français préféreront une date au format JJ/MM/AAAA.
Une solution consiste à utiliser preg_replace qui recherche et remplace par expression rationnelle.
[cc lang=’php’ width=’100%’]
$maDate = preg_replace(‘/^(.{4})-(.{2})-(.{2})$/’,’$3/$2/$1′, $maDate );
[/cc]
mixed preg_replace ( mixed pattern , mixed replacement , mixed subject , int limit , int count )
preg_replace analyse subject pour trouver l’expression rationnelle pattern et remplace les résultats par replacement

Téléphone 2

On peut aussi modifier le numéro de téléphone avec preg_replace.
Avec par exemple :
[cc lang=’php’ width=’100%’]
$tel = preg_replace(« /(\d{2}) *(?!\z)/ », »$1. »,$tel);
[/cc]
NB : pour wordwrap comme pour l’exemple ci-dessus, on n’a pas vérifié la taille de la chaine !

Nabaztag et Google Reader (OPML)

7 mars 2010

Voici un petit script permettant à votre lapin de vous donner les dernières news provenant de l’ensemble de vos flux Google Reader.
Vous pouvez tester le résultat ici

Parser le fichier OPML

Pour cela, nous allons parser le fichier OPML que vous pouvez récupérer en cliquant sur Gérer mes abonnements (tout en bas à gauche de votre interface Google Reader) puis Importer/Exporter et enfin Exporter vos abonnements.

D’abord il faut extraire les différents flux du fichier OPML, pour cela j’ai créé une fonction recupFlux récursive.
[cc lang=’php’ width=’100%’]

// Flux google reader
$url_flux_rss = « http://*******/google-reader-subscriptions.xml »; // à remplacer évidemment
$tabFlux = array();
$tabNewRSS = array();

function recupFlux($xml,$prof=1) {
global $tabFlux;
foreach($xml->children() as $child) {
if (isset($child[‘xmlUrl’])) {
$tabFlux[] = $child[‘xmlUrl’];
}
recupFlux($child,$prof+1);
}

}
$opml= new SimpleXMLElement($url_flux_rss,null,true);
recupFlux($opml->body);

[/cc]

Vous obtenez ainsi un tableau $tabFlux contenant tous les flux.

Ensuite vous pouvez aller chercher chacune des 2 dernières news de chaque flux (par exemple).

[cc lang=’php’ width=’100%’]

foreach($tabFlux as $flux){
// recup des 2 dernières infos de chaque flux
$limite       = 2; // nombre d’actus à afficher

$Xml = @simplexml_load_file($flux); // charge le fichier
if($Xml === false){
die(« Erreur Flux, vérifiez l’adresse du flux »);
}

$i = 0;
foreach ($Xml->channel->item as $mon_rss){
$titre = (string) utf8_decode($mon_rss->title);
$quand = (string) utf8_decode($mon_rss->pubDate);
$i++;

$tabNewRSS[strtotime($quand)] = $titre; // on créé un nouveau tableau
if($i >= $limite){
break;
}
}

}
krsort($tabNewRSS); // trie le tableau pour avoir les dernières news dans l’ordre tous flux confondus

[/cc]
J’ai mis en clé du tableau le timestamp de la publication de la news (dans l’absolu, si 2 news avaient la même date la 2ème écraserait l’autre…)

Parle mon lapin

Il ne reste plus qu’à donner la parole à votre lapin, comme vu dans l’article précédent

[cc lang=’php’ width=’100%’]
include(‘nabClass.php’);
$serial = « **** »;
$token = « **** »;

$nabaztag = new nabaztag($serial,$token);
$phrase = «  »;
foreach($tabNewRSS as $final){
$phrase .= $final. ». « ;
}

$phrase = html_entity_decode($phrase);

if ($phrase){
$nabaztag->speak(utf8_encode($phrase));
}

$nabaztag->display_api_response();

[/cc]

Vous pouvez tester le résultat ici
A noter que ce script envoi à votre Nabaztag les infos à un instant T, mais on pourrait très facilement recréer un nouveau fichier RSS à partir de $tabNewRSS pour le soumettre à l’interface de Violet, ainsi votre Lapin vous tiendrait au courant au fur et à mesure des nouvelles informations…

Générer un nouveau flux RSS

Le but est de soumettre à l’interface de violet la page qui va générer le flux RSS qui mixe les flux de notre Google Reader.
Première chose, indiquez que le résultat sera du XML, avec la balise Header
[cc lang=’php’ width=’100%’]
header(« Content-Type: text/xml;charset=utf-8 »);
[/cc]
Ensuite, au lieu d’envoyer le texte au Nabaztag, nous allons générer un flux RSS à partir du tableau $tabNewRSS que nous avons créé ci-dessus.

[cc lang=’php’ width=’100%’]
$rss = ‘< ?xml version="1.0" encoding="utf-8"?>‘;
$rss .= ‘‘;
$rss .= « « ;
$rss .= « Mon Google Reader RSS« ;
$rss .= « http://blog.yann.info« ;
$rss .= « Compilation de mes flux Google Reader« ;
$rss .= « fr-FR« ;

foreach($tabNewRSS as $final){
$rss .= « « ;
$rss .= «  » . clean($final) . « « ;
$rss .= « http://blog.yann.info« ;
$rss .= « « .date(« D, d M Y H:i:s »). »« ;
$rss .= « « ;
$rss .= « 
« ;
}

$rss .= « « ;
$rss .= « « ;
echo $rss;
[/cc]
Pour voir un exemple de ce que ça peut donner cliquez ici
Le résultat est un nouveau flux RSS, que vous pouvez soumettre à l’interface Violet. Les news sont à chaque fois régénérées donc votre lapin ne vous donnera que les dernières news dès qu’il y aura du nouveau.
Comme le lapin ne lira que le titre du RSS je n’ai rempli que cette partie dynamiquement.

[cc lang=’php’ width=’100%’]
function clean($titre) {
return utf8_encode(htmlspecialchars(stripslashes($titre)));
}
[/cc]

Débuter avec son Nabaztag

6 mars 2010

Vous venez de recevoir votre lapin, mais vous ne savez pas encore quoi faire avec, alors je vais essayer de vous éclairer un peu.

C’est quoi ce lapin !?

Ce lapin se connecte à internet et est capable de parler, il est capable de lire à haute voix du texte. Une des principales compétence de celui ci est notamment de pouvoir lire les titres des flux RSS. Un flux RSS est un fichier XML qui est utilisé sur presque tout les sites web pour vous notifier des nouvelles informations. Exemple le flux RSS des actualités de google se trouve ici en vous y abonnant vous pouvez par exemple l’intégrer à votre barre personnelle de firefox pour être tenu au courant des dernières infos. Ce qui permet en un clic de surveiller les dernières nouveautés de vos sites préférés.

google_actus_RSS

Oui et le rapport avec ce lapin ? le rapport, c’est que le Nabaztag sera capable de lire ces informations. Ainsi, si on prend l’exemple du flux RSS de google ci-dessus, votre lapin va vous dire : « Agriculture : Sarkozy ne propose aucune solution immédiate. Le Monde » puis il va enchainer avec « Eric Besson: Je n’ai pas fait le jeu du Front national – 20minutes.fr » etc…

Le nombre de news qu’il lira est paramétrable ainsi que la fréquence (soit dès qu’il y a du nouveau, soit à heures fixes) mais on verra ça plus bas…

Sinon votre lapin est capable de « danser » disons qu’il fait des chorégraphies (il bouge les oreilles et clignote de plusieurs couleurs) c’est pas très utile mais amusant, dirons nous… A ce sujet il peut s’accorder avec un autre lapin de la communauté.

Ce qui est vraiment intéressant avec ce lapin c’est que l’API est ouverte, c’est à dire que l’on peut programmer (vous ou la communauté) des fonctions supplémentaires.

Pour voir une vidéo de ce qu’il sait faire allez ici

Connectez votre lapin en wifi

La procédure complète pour connecter votre lapin en wifi se trouve ici. Et oui car tout l’intérêt du lapin est d’être connecté à internet.

Créez un compte Violet

Maintenant qu’il est connecté au net, vous devez créer un compte ici afin de pouvoir gérer les applications de votre lapin (choix des flux RSS etc…).

Les choses

Vous avez la possibilité d’interagir avec le lapin grâce à des accessoires supplémentaires (payants). Le but est de lancer une action sur demande, c’est à ça que servent les Ztamp:s et les Nano:ztag

ztamps

nanoztag

Nano:ztag

Ztamp:s

En effet, en les plaçant devant le lapin vous allez déclencher l’action. Quelle action ? et bien c’est vous qui choisirez, sur le site de Violet, que pour tel timbre ou tel Nano (mini lapin), c’est telle action qui est exécutée. Par exemple j’ai collé un Ztamp:s sur la télécommande de ma TV et quand je la passe devant le lapin, il me dit le programme TV.

Il existe également des livres spéciaux, que votre lapin sera capable de lire, ainsi que le Mir:ror qui est une station d’accueil pour les Nano et les Ztamps, en gros au lieu de les passez devant le lapin vous les passez devant le Mir:ror qui est branché à votre PC (pour ouvrir un fichier sur votre PC par exemple…)

Première application

Vous verrez sur le site de Violet qu’il y a plusieurs applications. Pour attribuer votre première Appli à votre lapin, connectez vous sur le site de violet et allez dans le sélecteur d’objet en haut de la page pour sélectionner votre lapin, ensuite, à gauche vous verrez le nom de votre lapin et en dessous un lien Ses Applis, cliquez dessus et vous verrez tout à droite un lien Ajouter application, cliquez dessus et vous arriverez sur le champ de compétence de votre lapin.

Applcations nabaztag

Il y a plein de fonctions rangées par catégories, la plupart sont très explicites, donc là je vous propose plutôt d’aller ajouter le flux RSS de Google actus que l’on a évoqué plus haut. (enfin vous pouvez aussi mettre mon flux RSS )

Rendez-vous dans la rubrique Vie très pratique puis dans Lire un flux RSS, là vous allez entrer le nom de votre flux, exemple Actualités de Google, dans Adresse du flux vous copiez/collez l’adresse du flux de google, le nombre de news à lire, vous choisissez la langue des infos, ici Français et enfin la fréquence soit : à une heure fixe de votre choix, soit dès qu’il y a du nouveau.

RSS nabaztag

Bien sûr vous cliquez sur ajouter ces paramètres en bas de la page. N’hesitez pas à ajouter plusieurs applications, pour que vous puissiez tester les capacités de votre lapin, vous les supprimerez après si elles ne vous conviennent pas. Parmi les applications on peut citer des radios WEB, des notifications de mails, des informations…

Trouver le numéro de série et le token de mon Nabaztag

Si vous voulez exploiter l’API de votre lapin ou les applications de la communauté vous aurez besoin du numéro de série et du token qui identifie votre Nabaztag. Pour cela rendez vous dans paramètres, puis Ecosystème.

nabaztag serie token

Ajouter une application à un objet

Pour attribuer une action à un objet, cliquez sur le sélecteur d’objet en haut de la page puis sélectionnez l’objet dans la liste, s’il n’apparaît pas, passez le devant le nez du lapin et il sera ensuite reconnu… ensuite cliquez sur ses applis comme pour le lapin.

Les applications ne sont pas exactement les mêmes ! il y a surtout la rubrique /dev qui vous permet de créer vos programmes pour votre nabaztag 😉

Horoscope et Programme TV

Pour que votre lapin vous dise votre horoscope cliquez ici

Pour le programme TV du soir cliquez ici

Pour voir comment j’ai fait, allez consulter mon ancien article : nabaztag-dis-moi-ce-que-je-veux-entendre/

Pour plus d’infos

http://nabaztag.forumactif.fr/forum.htm

http://www.zcripts.com

http://www.nabzone.com

L’API de votre lapin

http://doc.nabaztag.com/api/home.html

Mysql : ON DUPLICATE KEY UPDATE

4 mars 2010

Une petite clause bien pratique : ON DUPLICATE KEY UPDATE.
Imaginez que vous vouliez mettre à jour un enregistrement dans votre base dans le cas ou celui ci existe déjà et sinon, s’il n’existe pas, en créer un nouveau. Une solution serait de faire un SELECT sur la clé, et soit un UPDATE ou un INSERT selon que la clé existe ou non. Une autre solution serait de faire un UPDATE et si mysql_affected_rows == 0 alors vous faites un INSERT… Pourquoi pas.

Mais MySQL permet de faire tout ça en une seule requête !
[cc lang=’php’ width=’100%’]
INSERT INTO maTable (id_table,champ_table)
VALUES (‘152′,’valeur à modifier’)
ON DUPLICATE KEY UPDATE
champ_table=’valeur à modifier’;
[/cc]
Bien entendu, pas besoin de mettre de WHERE dans la partie UPDATE vu que c’est parce que la clé existe que le update est exécuté

A noter que ON DUPLICATE KEY UPDATE est différent de REPLACE qui s’apparente plutôt à un DELETE + INSERT qui oblige à donner une valeur à tous les champs, alors qu’avec ON DUPLICATE KEY UPDATE on ne spécifie que les champs qui sont à modifier.

jQuery ou comment simplifier les requêtes Ajax

2 mars 2010

Avant il fallait jongler avec XMLHttpRequest, bien sûr ça fonctionne très bien, mais une fois qu’on a essayé jQuery difficile de faire machine arrière !
En effet ce simple code ci dessous permet d’envoyer la variable js info à page.php avec la méthode POST, pendant l’envoi et en attendant le retour de page.php, l’image load.gif est affichée dans le div chargement et enfin si tout s’est bien passé, retourPHP affiche ce que renvoi page.php.

Démo du script

[cc lang= »js » width=’100%’ line=’20’]
$.ajax({
type : « POST »,
url : « page.php »,
data : « info = »+info,
send : $(‘#chargement’).html(« chargement« ),
error :function(msg){
alert( « Erreur :  » + msg );
},
success : function(data){
$(‘#retourPHP’).html(data);
}});
[/cc]

Tout d’abord pour faire patienter l’internaute vous pouvez créer votre gif de chargement avec AjaxLoad

Mise en place du script :

D’abord insérez l’appel à jQuery
[cc lang= »js » width=’100%’]

[/cc]
Ensuite on va créer un champ monChamp qui contiendra les données à envoyer, un bouton envoiAjax et une balise div retourPHP qui renverra la valeur saisie dans le champ
[cc lang= »html » width=’100%’]

[/cc]
Avec jQuery on surveille le click sur envoiAjax et on récupère le value de monChamp que l’on stocke dans la variable info (le reste est expliqué au début de l’article)
[cc lang= »js » width=’100%’]

[/cc]

et page.php y’a quoi dedans ? pas pas grand chose on se contente d’afficher ce que l’on a reçu (sans vérification de contenu : ni isset, ni empty ni rien…)

[cc lang= »php » width= »100% »]
< ?php echo "reception de : " . $_POST['info']; ?>
[/cc]
et voilà !

Ajaxload créez votre gif de chargement Ajax

2 mars 2010

Vous utilisez ajax et vous avez besoin d’un petit gif animé pour occuper l’internaute pendant le chargement de votre script ? ne cherchez plus ! créez-le en quelques secondes avec http://www.ajaxload.info/

ajax-loader

Ajax-loader

Conseils pour la certification PHP5

14 février 2010

ZCE logo

Révisez bien chaque thème, n’en négligez aucun

Pour ma part, j’ai révisé (au mépris du danger, car mes révisions ont été accompagnées d’un peu de caféine distribuée par une Senseo capable d’exploser à tout moment…), peut-être que vous êtes déjà suffisamment à l’aise pour ne pas réviser… c’est vous qui voyez…

Les thèmes abordés par la certification PHP sont très vastes ! , jugez par vous même : Exam information, or il y a des questions dans chaque domaine… il y a évidemment des fonctionnalités qu’on utilise plus que d’autres et par conséquent, une piqûre de rappel dans les domaines que vous utilisez le moins souvent ne fera pas de mal. Il faudra également vous replonger dans le passé et vous souvenir des lacunes de PHP 4, par exemple.

Zend garde secret le score à obtenir, néanmoins j’ai lu sur internet (source non fiable) que si l’on avait un « fail » dans un des domaines c’était éliminatoire…

Testez-vous !

On trouve sur internet des tests préparatoires très proches de l’examen réel. Les payants, ce sont ceux qui ressemblent le plus à l’examen final.

  • Vulcan-Zend PHP 5 Certification Simulator
    Vous pouvez les acheter à l’unité, par 5 ou par 10. Alors très franchement, évidemment un seul ne suffit pas, mais en prendre 10 est vraiment inutile, car au bout de 4-5 vous aurez fait le tour des questions. Ces tests sont très bien faits, car l’interface et les conditions (nombre de questions, temps) sont quasi identiques à la certif. Cependant il y a un bémol, certaines questions ont quelques problèmes : exemple : on vous demande de choisir 3 réponses, alors que (après test pour confirmer) il n’y a que 2 réponses bonnes, ou alors des fautes de frappe (volontaires ???) avec par exemple l’utilisation de la fonction explode sur une chaine vide explode( »,$tableau);’;
    Un copier/coller des questions qui vous posent problème est une bonne solution pour vérifier vos doutes…
Tests gratuits

Mes tests

Pour vous donner une idée, voici les captures de mes résultats aux tests Vulcan…
Avant révisions
test1
Pendant mes révisions
test2
La veille de mon passage
test3

Je ne sais pas s’il est nécessaire d’avoir « excellent » dans chaque domaine, pour se présenter à la certification, mais en tout cas il est certain que cela permet d’y aller avec plus de sér&eactue;nité. Et franchement, quand j’ai cliqué sur « fin » j’avais quand même un doute…

Certification en français ou en anglais ??

Il faut savoir que la traduction de l’examen à quelques imperfections (relativement gênantes). Le meilleur exemple est, je crois, le « réussissez » pour réussi qui est inscrit sur le papier certifiant que vous êtes certifié.
Dans les questions j’ai eu un truc du genre tableau(‘a’,’b’,’c’) au lieu de array(‘a’,’b’,’c’) peut-être un excès de traduction 😉
Néanmoins vous évitez des erreurs de précipitation, comme par exemple cocher les réponses ‘bonnes’ alors qu’on vous demande les réponses ‘fausses’.
Les tests de préparation sont en anglais, donc si vous ne voulez pas être perturbé choisissez anglais… A vous de voir

Oui ! mais en vrai, ça se passe comment ?

  • 70 questions (en général QCM, parfois il faut inscrire le nom d’une fonction)
  • Quelle fonction fait quoi ? quel est le résultat d’un script (souvent un peu tordu), quel ’bout de code’ à été masqué…
  • Plus dur ou plus simple que les tests Vulcan ? je dirais pareil, mais le problème c’est que comme l’on ne connait pas le score à obtenir, chaque question pour laquelle vous avez un doute contribue à l’impression de difficulté du test réel
  • Ca coute combien le passage ? 125 euros, en cas d’echec j’ai lu je ne sais plus où ? qu’il est possible d’avoir une réduction pour un second passage en écrivant simplement à Zend (à vérifier)
  • J’ai accès à internet ? ben non ! et puis quoi encore 😉 non ! aucun document autorisé (faut presque aller tout nu à l’examen lol)
  • Et je calcule tout dans ma tête comme ça…? non vous avez le droit à un papier et un crayon, quand même…!
  • Les réponses fausses ne pénalisent pas… alors dans le doute répondez quand même
  • Pendant l’examen, pour chaque question vous pouvez cocher une case « revoir » qui vous permettra de revenir sur les questions pour lesquelles vous avez un doute (évidemment le sablier continue de couler alors attention…) passe partout ne sera pas là pour vous dire « Sors ! sors… »
  • Vous avez répondu aux 70 questions vous arrivez sur un récapitulatif qui vous permet de retourner aux questions marquées « à revoir » ainsi que les questions incomplètes (ex : on vous demande de cocher 2 réponses et vous n’en avez coché que 1)
  • Bon et alors… ? il l’a ? en bas de l’écran récapitulatif vous avez un bouton « mettre fin à l’examen », vous cliquez… et vous saurez… si vous l’avez il y aura écrit : « félicitation vous avez passé le (oui le) certification Zend » sinon..? ben je sais pas (mais j’avais lu que l’on avait alors un écran du genre des tests Vulcan, mais j’en suis pas certain, j’suis même plutôt content de ne pas le savoir 😉 )

Les livres pour réviser

Attention ! le livre « certification study guide » n’est pas exhaustif ! même si vous le savez par coeur, il ne couvre pas tout l’examen

Pièges !!

Faites attention !

  • Lisez bien les questions ! parfois on vous demande quelle fonction fait telle chose et parfois, quelle fonction NE FAIT PAS telle chose…
  • Les variables ou les fonctions qui commencent par un chiffre par exemple !!!
  • Le point concatène ! attention à $a = 1; $b = 3; $c = $a.$b; (ce n’est pas un ‘+’)
  • Il me semble qu’à la certif on vous demande de respecter la casse PHP pour les noms de fonctions
  • count() sur une chaine de caractères
  • Portée des variables et variables par référence
  • Vous avez un doute??? testez !!! testez le script avant le jour de l’examen, anticipez les questions
  • Y’a t’il un return dans la fonction ???

Les liens pour réviser

Les liens pour avoir des infos sur la certif

Formation Anaska

  • La Formation expert certifié est sans doute le meilleur moyen de vous préparer ! J’ai suivi cette formation l’an dernier (mais pour pas mal de raisons, je n’ai pu me présenter à l’examen que cette année) qui est très intéressante et qui en plus vous permettra de cotoyer quelques uns des ‘grands noms’ du PHP français 😉
  • La formation en ligne de Zend

Nabaztag, dis moi ce que je veux entendre !

12 février 2010

Pour tester :

Pour que votre lapin vous dise votre horoscope cliquez ici

Pour le programme TV du soir cliquez ici

Si vous possédez un lapin nabaztag, vous voudriez peut-être disposer de plus de fonctionnalités…

Exemple : Lapin ! donnes moi mon horoscope ou le programme TV !

Oui, mais le problème c’est que si vous demandez à votre cher et tendre lapin de lire un flux RSS, le résultat ne sera peut être pas celui que vous attendiez. En effet, il va peut être se contenter de dire « horoscope du lundi » puis « horoscope du mardi » etc… et oui car le lapin lit les titres du flux, hors, ce qui vous intéresse c’est juste la balise description du premier item du flux. Pour plus d’infos sur les flux RSS, consultez Wikipedia.

Donc ce que je vous propose de faire, à partir de la classe PHP développée par Dan Ruscoe, qui se trouve à l’adresse http://ruscoe.org/php-class-for-the-nabaztag-api/, c’est tout simplement de ne lire que n entrées du flux et de l’envoyer à votre Lapin chéri.

Vous devez tout d’abord, inclure la classe, puis renseigner le serial et le token de votre nabaztag. Enfin, vous saisissez l’adresse du flux et le nombre d’infos que le lapin devra dire.

[cc lang= »php » tab_size= »4″ width= »100% » lines= »70″]
include(‘nabClass.php’);
// ———- variables à modifier———
$serial = ‘*******’; // le serial de votre lapin
$token = ‘*******’; // le token de votre lapin
// Flux RSS ex : Horoscope
$url_flux_rss = « http://www.un_flux_rss_horoscope/rss/verseau.php »;
// nombre d’actus (horoscope =  1,  pour prog TV = nb chaines…)
$limite =  1;

//———————————————

$phrase = «  »; // initialisation du texte à prononcer

// Creation de l’objet nabaztag
$nabaztag = new nabaztag($serial,$token);

$Xml = @simplexml_load_file($url_flux_rss);
if($Xml === false){
die(« Erreur Flux, vérifiez l’adresse du flux »);
}

$i = 0;
foreach ($Xml->channel->item as $mon_rss){
$titre = (string) utf8_decode($mon_rss->title);
$description = (string) utf8_decode($mon_rss->description);
$i++;
$phrase .= $titre. » . « .$description;

if($i >= $limite){
break;
}
}
$phrase = html_entity_decode($phrase);
echo $phrase; // si on veut on affiche le texte qu’il va dire

if ($phrase){
$nabaztag->speak(utf8_encode($phrase)); // envoi son texte au lapin
}

// infos debug (optionnel)

echo  »


Paramètres API: « ;

$nabaztag->display_api_params();

echo « Réponse :« ;

$nabaztag->display_api_response();

[/cc]

NB : pour des questions de droits/autorisations je n’ai pas mis un vrai flux, cependant je suis certain que vous n’aurez pas de mal à trouver un flux d’horoscope ou de programme tv ou ce que vous voulez….

Ensuite vous mettez le script en ligne. Pour l’executer, soit vous passez par un ztamp:s ou un nano:ztag et vous lui attribuer l’application : transmettre des données dans une url (dans /dev) sur le site de violet, et vous indiquez l’adresse du script. Soit vous passez par un cron sur votre hébergement pour qu’il soit dit à heure fixe.

Perso pour le programme TV, j’ai ajouté ça :

[cc lang= »php » tab_size= »4″ width= »100% » lines= »7″]
if(eregi(« 20: »,$titre) ){
$titre = preg_replace(‘#\((.+)\)#U’,  », $titre);
$phrase .= $titre. ». « ;
}
[/cc]
pour n’avoir que la première partie de soirée.