Flash et SVG
savent gérer de façon souple et transparente leurs
besoins de communication avec une base de données. Les
éléments qui suivent concernent plus spécifiquement
Flash, qui dispose d'objets dédiés de gestion des
données distantes très puissants.
On appelle dans tous les cas une page de script écrite
dans un langage que le serveur comprend (ASP, PHP, JSP...), en
lui passant des paramètres. Exemple de page appelée
: data.php?dept=12&var1=pop2099&var2=poptot99
Cette page comprend typiquement des instructions de connection
à la base de données et construit une requête
SQL à partir des paramètres qu'elle reçoit.
exemple en PHP :
$connection = mysql_connect(SERVEUR,NOM,PASSE)
or die("connection impossible à la base.");
$data =mysql_select_db(BASE) ;
$sql="select code_com, $HTTP_GET_VARS["var1"],
$HTTP_GET_VARS["var2"] from result_rp99 where dept='$HTTP_GET_VARS["dept"]'
";
$rs =mysql_query($sql) ;
Une fois la requête exécutée, il s'agit
de mettre en forme le résultat et de le renvoyer vers le
lecteur Flash (vers la carte). On distinguera deux cas de figure
:
le
résultat est transmis sous forme de fichier texte : il
se présente au format url-encoded (d1=12&d2=45&d3=67...)
ou xml. L'idéal consiste à pouvoir le compresser
automatiquement avec ZLIB et les fonctions PHP
ob_start("ob_gzhandler") et ob_end_flush() ; il est
ainsi, si le navigateur client prend en charge la décompression,
compressé par le serveur avant transmission au poste client
;
le
résultat est transmis sous forme de fichier SWF, c'est
à dire en binaire, idéalement de surcroît
compressé avec la ZLIB : c'est le format de loin le
plus compact parmi les technologies existantes. Il faut alors
utiliser, avant compression, des fonctions d'écriture au
format swf (fonctions perso à partir des spécifications
du format SWF, ou fonctions de la librairie PHP Ming)
;
Flash gère la réception
des données au format texte via les fonctions loadVars()
ou loadXml(), au format SWF via la fonction loadMovie(). Les données
sont chargées dans un objet indépendant. Mieux encore,
la progression du chargement est suivie en temps réel par
la fonction getBytesLoaded(). Outre que cette info aide l'utilisateur
à patienter, elle permet au programme d'attendre que le
chargement soit terminé pour passer à l'étape
suivante et d'éviter le déclenchement de messages
d'erreur avec le lecteur SVG d'Adobe, qui se produit quand des
fonctions javascript sont appelées alors que les objets
ne sont pas tous chargés.

|