Une nouveauté très intéressante de PHP 5 : la fonction simpleXML, qui permet d'utiliser vraiment facilement les fichiers XML. Malheureusement, certainement ni votre hébergeur ni votre serveur en local (EasyPHP) ne permet encore l'utilisation de cette fonction, uniquement ajoutée depuis la version 5 de PHP.
Pour utiliser PHP 5 en local, téléchargez Wampserver , équivalent d' EasyPHP pour PHP 5, installez le et vous pourrez traiter ce tutorial.
Note : il est possible que s'affichent des messages d'erreur concernant le chargement du fichier XML. Dans ce cas vérifiez si l'attribut xmlns="?" n'est pas appliqué à la balise rss en début de fichier. Si c'est le cas, supprimez cet attribut et sa valeur.
Pour utiliser et traiter le fichier XML, vous devez tout d'abord le charger.
Notre projet dans ce tutorial est d'utiliser le fichier RSS de flashxpress pour afficher les 5 dernières actualités du portail, sans faire de connexion à la base de donnée. Nous utiliserons donc le fichier situé ici : http://www.flashxpress.net/blog/rss.xml Vous pouvez l'enregistrer en local pour faire vos tests.
Pour lire le fichier XML, nous allons utiliser la nouvelle fonction simplexml_load_file.
La page PHP crée étant située dans le même dossier que le fichier XML, nous aurons donc simplement comme code PHP :
$xml = simplexml_load_file('rss.xml');
En ajoutant une sécurité par rapport à l'existence du fichier, le code devient :
if (file_exists('rss.xml')) {
$xml = simplexml_load_file('rss.xml');
} else {
exit('Erreur !.');
}
Dans tout fichier RSS, vous pouvez récupérer des informations générales sur le fichier, le site etc. Par exemple, on peut récupérer le titre du fil RSS, la description, la langue, la date de dernière modification et les contacts.
Il peut être intéressant dans un premier temps de récupérer par exemple le titre, la description et l'url donnés dans le fil. Dans notre fichier XML d'exemple, nous récupérerons "Flashxpress", " Portail de ressources Flash et Dreamweaver " et "http://www.flashxpress.net".
Si vous connaissez un peu XML, vous savez comment les éléments se constuisent. Dans notre XML, nous avons pour les informations générales :
<channel>
<title>Flashxpress</title>
<link>http://www.flashxpress.net</link>
<description>Portail de ressources Flash et Dreamweaver</description>
<language>fr</language>
<lastBuildDate>Tue, 8 Jun 2004 10:56:26 GMT</lastBuildDate>
<managingEditor>contact@flashxpress.net</managingEditor>
<webMaster>contact@flashxpress.net</webMaster>
...
...
</channel>
On constate donc que le titre est contenu dans la balise <title> qui elle-même est contenue dans <channel>.
Donc pour récupérer le contenu de <title>, la syntaxe est :
$xml->channel->title;
Vous pouvez ainsi repérer la structure en noeuds transposée en PHP. Ce bref exemple vous montre la simplicité de cette fonction.
Donc pour récupérer nos trois valeurs, on peut utiliser ce script :
$titre = $xml->channel->title;
$link = $xml->channel->link;
$description = $xml->channel->description;
Vous l'avez compris, cette fonction utilise intelligemment la structure de XML. Il vous faudra donc connaître le XML pour bien l'utiliser.
Réfléchissons à la manière dont est structuré une actualité dans notre XML :
Chaque actualité est représentée par la balise <item> , qui contient elle-même les balises title, author, pubDate, category, link, enclosure, description et source. Celles qui nous intéressent peuvent se limiter au titre, lien et description.
Voici un exemple d'une actualité dans le XML :
<item>
<title>Concours PHP 5</title>
<author>yeca@ultimteam.com (yeca)</author>
<pubDate>Tue, 8 Jun 2004 10:56:26 GMT</pubDate>
<category>Evènement, culture, festival, expo</category>
-
<link>
http://www.flashxpress.net/forum/
showthread.php?s=&threadid=39933
</link>
<enclosure url="http://www.flashxpress.net/blog/images/culture.jpg" length="1" type="image/jpeg"/>
-
<description>
Zend organise un concours international de code PHP, à l'occasion de la sortie de la version 5 de PHP.
Plusieurs thèmes sont donnés, vous pouvez concourrir seul ou en équipe.
Si vous cherchez des coéquipiés pour réaliser un bon projet, manifestez vous dans le
<a href="http://www.flashxpress.net/
forum/showthread.php?s=&threadid=39933" target="_blank">forum</a>.
Sinon, trouvez plus d'informations sur
<a href="http://www.zend.com/php5/contest/contest.php" target="_blank">le site de Zend</a>
</description>
<source url="http://www.flashxpress.net/forum/showthread.php?s=&
threadid=39933">Flashxpress</source>
</item>
On pourrait facilement récupérer ces valeurs en utilisant par exemple :
$xml->channel->item->title;
Mais de cette manière, nous ne pourrions récupérer que la dernière actualité postée. Ainsi, si une balise XML est répétée, vous pouvez y accéder en utilisant les tableaux pour cette valeur. Comme la balise item est répétée, et que la première valeur d'un tableau en PHP commence à 0, l'item de la première actualité est item[0] , puis item[1] etc.
Les valeurs qui nous intéressent pour la première actualité sont donc :
$xml->channel->item[0]->title;
$xml->channel->item[0]->link;
$xml->channel->item[0]->description;
Puis pour la seconde :
$xml->channel->item[1]->title;
$xml->channel->item[1]->link;
$xml->channel->item[1]->description;
Etc.
Bien sûr, une boucle vous permettra de gérer ces valeurs plus proprement :
for ($i=0; $i<5; $i++) {
echo "<p>";
echo $xml->channel->item[$i]->title."<br />";
echo $xml->channel->item[$i]->link."<br />";
echo $xml->channel->item[$i]->description."<br />";
echo "</p>";
}
Pour afficher toutes les actualités, nous aurions pu utiliser la fonction foreach :
foreach ($xml->channel->item as $item) {
echo $item->title, '<br />';
}
Ce script permet, pour chaque ligne (for each) item, contenu dans channel, d'écrire la valeur contenue dans titre.
En XML, vous pouvez également avoir besoin des attributs de certaines balises. C'est le cas par exemple de la balise :
<source url="http://www.flashxpress.net/forum/
showthread.php?s=&threadid=39933">Flashxpress</source>
Pour récupérer la valeur de l'attribut url pour la première actualité, il faut utiliser :
$xml->channel->item[0]->source['url'];
Une autre manière de récupérer l'ensemble des actualités est d'utiliser Xpath, qui permet de récupérer les balises portant le nom qu'on lui donne. Par exemple, on peut définir qu'on récupère tout à partir de la balise <item> :
foreach($xml->xpath('//item') as $item) {
echo $item->title, ': <br />', $item->description, '<br /><br />';
}
PHP et MySQL (versions 4 et 5)
Exemple de site que vous pouvez construire avec Dreamweaver : poker.bwin.com. Développez votre propre site de paris sur le foot avec le logiciel Dreamweaver. Avec un peu d'expérience, vous saurez développer rapidement et efficacement un module qui permette à vos visiteurs de parier en direct. Vous pourrez alors proposer une interface qui permet de faire des paris sur le foot sur votre site.


