Cet article à pour but de vous montrer comment récupérer des informations depuis le serveur avec une application SOLO.
Une application SOLO est uniquement composée d’un fichier SWF(flash) mis à disposition sur le serveur Web, elle ne nécessite pas de serveur LPS, c’est la méthode idéale pour publier un site sans avoir besoin de recourir à un serveur Tomcat.
Ici, notre application va récupérer une liste d’utilisateurs stockés dans une base SQL (MySQL), pour la présenter à l’écran.
1- Métodologie
Voilà comment nous allons procéder.
L’application Flash va effectuer une requête au serveur avec la fonction « XMLHttpRequest()« , bien connue des programmeurs AJAX, à l’attention du fichier getusers.php.
Le script PHP getuser.php va effectuer la requête d’extraction des données de la base SQL puis, formater et envoyer au client les informations sous forme XML.
L’application flash va récupérer ses informations XML et les intégrer dans un dataset pour ensuite pouvoir les utiliser.
2- Le serveur
La partie serveur se compose de la base de données SQL qui contient dans une table « users » la liste des utilisateurs. On peut créer cette table avec la commande SQL suivante :
Requête SQL – Création de la table utilisateurs -
- CREATE TABLE `users` (
- `id` int(10) unsigned NOT NULL auto_increment,
- `nick` varchar(30) NOT NULL default '',
- `name` varchar(30) default NULL,
- `surname` varchar(30) default NULL,
- `password` varchar(100) NOT NULL default '',
- PRIMARY KEY (`id`)
- )
Le but du script PHP est de récupérer les informations sur chaque utilisateur stocké dans la base pour les formater en XML.
L’objectif est d’obtenir un document XML avec les informations suivantes pour chaque utilisateur :
- > id
- > nick
- > prénom
- > nom
le document sera format ainsi :
Document XML – Format des données -
- <utilisateurs>
- <user id="1" nick="xxxx" prenom="xxxx" nom="xxxx"/>
- <user id="2" nick="yyyy" prenom="yyyy" nom="yyyy"/>
- .......
- <user id="3" nick="zzzz" prenom="zzzz" nom="zzzz"/>
- </utilisateurs>
Voilà maintenant le script PHP pour créer cette structure XML à partir de la base de donnée
Script PHP – Création du document XML -
- <?php
- // définition de l'en-tête XML
- header("Content-type: text/xml; charset=UTF-8");
- //configuration et connexion à la DB
- include"includes/config.inc";
- include"includes/connect.inc";
- //ouverture de la balise <utilisateur>
- echo"<utilisateurs>\n";
- // liste des utilisateurs
- $query = 'SELECT `id`, `nick`, `name`, `surname` FROM `users`';
- $result = mysql_query($query) or die("impossible de récupérer la liste des utilisateurs");
- // pour chaque utilisateur
- while ($line = mysql_fetch_assoc($result)) {
- $id = $line["id"];
- $nick = $line["nick"];
- $prenom = $line['name'];
- $nom = $line['surname'];
- // on ajoute une balise <user> avec les attributs correspondants
- echo"<user id=\"$id\" nick=\"$nick\" prenom=\"$prenom\" nom=\"$nom\" />\n";
- }
- mysql_free_result($result);
- // déconnexion de la DB
- include"includes/disconnect.inc";
- //on ferme la balise <utilisateur>
- echo"</utilisateurs>\n";
- ?>
On commence par définir un en-tête XML pour donner l’illusion au client qu’il accède en lecture à un fichier XML, on se connecte à la base puis on ouvre le tag <utilisateur>, on effectue la requête SQL pour lister les utilisateurs et pour chaque ligne on extrait les données pour les écrire dans le format XML défini auparavant. Une fois la liste terminée on libère les résultats puis on se déconnecte de la base pour enfin fermer le tag </utilisateur>.
On peut immédiatement observer le bon déroulement du script dans un navigateur, ainsi dans Firefox :

3- Le client
Le client est composé de 3 parties :
- l’appel à la fonction de récupération des données au lancement
- la fonction de récupération des données
- l’affichage des données
l’appel à la fonction de récupération des données au lancement
Cela se fait très facilement en ajoutant le nom de la fonction dans un attribut « Oninit » de la balise <canvas>, ainsi :
Script LZX partie 1 - appel à la fonction loadXMLUsers() -
- <?xml version="1.0" encoding="UTF-8" ?>
- <canvas width="500" height="500" proxied="false" oninit="loadXMLUsers()">
Vous remarquerez l’attribut « proxied= »false » » qui renseigne explicitement la nature SOLO de notre application.
la fonction de récupération des données
Cette fonction sera positionnée dans une balise <script/> au sein de l’application ainsi :
Script LZX partie 2 - fonctions de récupération des données -
- <!-- AJAX -->
- <include href="rpc/ajax.lzx" />
- <dataset name="utilisateurs"/>
- <script>
- <![CDATA[
- var req = null;
- function loadXMLUsers() {
- // requete XMLHttpRequest
- req = new XMLHttpRequest();
- req.onreadystatechange = processReqChange;
- req.open("GET", "http://localhost/getusers/getusers.php", true);
- req.send(null);
- }
- function processReqChange() {
- // only if req shows "loaded"
- if (req.readyState == 4) {
- // only if "OK"
- if (req.status == 200) {
- // enregistrement des données du XML dans le dataset
- canvas.utilisateurs.setChildNodes(req.responseXML.childNodes )
- } else {
- Debug.write("Problème lors de la récupération des données:\n" + req.statusText);
- }
- }
- }
- ]]>
- </script>
On commence par inclure la bibliothèque AJAX puis nous créons un dataset nommé « utilisateurs » qui servira à contenir les futures données. Les balises <script/> contiennes 2 fonctions, loadXMLUsers() et processReqChange(), la première est appelée au lancement de l’application et la seconde est appelé lors de la réception des données depuis le serveur dans le but d’intégrer les données dans le dataset, ou prévenir d’une erreur le cas échéant.
l’affichage des données
L’affichage se fera au moyen du composant <grid/> qui permet de créer et contrôler très facilement une liste de données et particulier depuis un dataset.
Script LZX partie 3- Affichage des données -
- <view x="20" y="20">
- <grid name="grid_users" datapath="utilisateurs:/utilisateurs">
- <gridtext datapath="@id"> Id </gridtext>
- <gridtext datapath="@nick"> Nick </gridtext>
- <gridtext datapath="@prenom"> Prénom </gridtext>
- <gridtext datapath="@nom"> Nom </gridtext>
- </grid>
- </view>
- </canvas>
On assigne le dataset utilisateur au composant <grid/> avec l’attribut « datapath » en lui précisant le chemin à partir duquel démarrer les itérations, pour chaque tag trouvé entre les balises <utilisateurs/> du document XML, une ligne sera ajoutée avec les informations correspondantes.

Voilà , le grand intérêt pour les applications open laszlo est de pouvoir bénéficier du même dynamisme que les applications web standard sans avoir la contrainte de posséder un serveur Tomcat ou équivalent, ce qui n’est pas le cas chez la plupart des hébergeurs à faible coût.








BlogoSquare