Flash – PHP – MySQL le trio de choc Flash informatique

Transcription

Flash – PHP – MySQL le trio de choc Flash informatique
Flash – PHP – MySQL
le trio de choc
[email protected] & [email protected], DGC - IBAP
ujourd’hui, tout le monde connaît Flash de
Macromedia comme générateur de petits Mickey. Bien évidemment lorsque l’on se trouve en présence d’un outil de
dessin vectoriel aussi performant, offrant de surcroît des
possibilités d’animation aussi conviviales, on ne peut guère
s’étonner de la ruée des illustrateurs de tous bords vers cette
solution qui ouvre tout grand les portes de la toile aux pages
interactives animées. Dès lors ont foisonné (et foisonnent
encore) les sites Internet proposant des dessins animés ou
des jeux réalisés en Flash, ce qui n’est pas forcément très
représentatif de ses possibilités, ni bon pour la réputation de
ce dernier.
Mais Flash peut faire plus pour vous ! Tiens, on se croirait dans une pub pour de la lessive… Il peut même être
utilisé pour des trucs sérieux. Flash peut être utilisé comme
un précieux auxiliaire pour interfacer des pages au contenu
dynamique – plutôt qu’animé – saisissez la subtile nuance.
Vous avez pu lire, il y a déjà quelque temps, un article
évoquant l’heureux mariage entre PHP et MySQL (cf. Flash
Informatique n° 7/1 - http://sic.epfl.ch/publications/FI01/fi7-1/7-1-page1.html). Si ce n’est pas fait, nous vous le conseillons vivement. Et bien nous allons franchir un pas de
plus en introduisant la possibilité de créer des interfaces puissantes et attrayantes sur des pages dynamiques à l’aspect,
jusqu’à présent, souvent assez spartiate.
Comme nous l’avons dit plus haut, Flash est d’abord un
outil de dessin vectoriel, mais Flash contient également un
langage de programmation, Actionscript, permettant, comme
son nom l’indique, de composer des scripts capables de déclencher des actions simples ou complexes, influençant
dynamiquement le contenu de vos pages Web. Parmi la kyrielle de ces actions, certaines permettent d’échanger des variables avec des pages écrites par exemple en PHP, qui peu-
Flash informatique
Les articles ne reflètent que l’opinion de leurs auteurs. Toute
reproduction, même partielle, n’est autorisée qu’avec l’accord de la rédaction et des auteurs.
Rédacteur en chef:
Jacqueline Dousson, [email protected]
Mise en page & graphisme: Appoline Raposo de Barbosa
Comité de rédaction: Jean-Daniel Bonjour, Jacques Bovay,
Jean-Michel Chenais, Milan Crvcanin,
Jean-Jacques Dumont, Elaine Mc Murray,
Martin Rajman, François Roulet,
Christophe Salzmann & Jacques Virchaux
Impression:
Atelier de Reprographie EPFL
Tirage:
4000 exemplaires
Adresse Web:
http://sic.epfl.ch/publications/
Adresse:
SIC-SA EPFL, CP 121, CH-1015 - Lausanne
Téléphone:
+41 (21) 693 22 46 & 22 47
FI 10 – 18 décembre 2001 – page 2
vent gérer à leur tour des bases de données MySQL. Ooh la
belle bleue !
Comment ça marche ?
Prenons pour commencer un exemple simple qui, nous
vous l’accordons, ne justifierait pas en temps normal l’utilisation de Flash, mais comme nous voulons être lus et surtout compris, vous ne nous en tiendrez pas rigueur, merci.
Nous partons du principe que les manipulations de bases de Flash, comme la création d’un bouton, d’un champ
de texte dynamique ou autres, sont acquises (si ce n’est pas
le cas, le SIC organise des cours) et allons principalement
nous pencher sur la composition de notre exemple sans trop
entrer dans les détails de comment nous l’avons réalisé.
Nous allons créer un livre d’or (ou guestbook en langue
anglaise pour les non francophones). Ce livre d’or comportera une page de saisie et une page de consultation. Difficile
de faire plus simple.
La page de saisie
* Elle est constituée des rubriques: nom, prénom, e_mail,
message et ma_date.
* Elle possède également 4 boutons: effacer, envoyer, abandonner et consulter le livre d’or.
Nous allons nous pencher ici uniquement sur le bouton
envoyer qui renferme l’instruction capable de transmettre le
contenu de toutes les variables à notre base de données (pour
plus de détails, reportez-vous à l’URL donnée en fin d’article). La figure 1 de la page suivante donne la liste des instructions exécutées lorsque l’on survole, quitte ou relâche le
bouton envoyer.
La première action on (rollOver) est exécutée lorsque la
souris survole le bouton. On contrôle ainsi que toutes les
rubriques ont été complétées. En fonction du résultat du
test, la variable vide se voit attribuer la valeur 0 ou la valeur
100. Cette valeur est aussitôt utilisée pour afficher ou non
un message d’avertissement nous demandant de bien compléter toutes les rubriques. On joue ici avec le paramètre
_alpha du movie clip avertissement. Ce paramètre permet de
régler le degré de transparence d’un objet: pour vide = 0,
celui-ci reste invisible et pour vide = 100, il devient visible.
L’action on (rollOut) est exécutée lorsque le pointeur de
la souris sort de la surface occupée par le bouton. Dès que
cela se produit, on efface le message d’avertissement.
Finalement, l’action on (release) est déclenchée lorsque
l’on relâche le bouton. Mais là encore, on vérifie que les rubriques sont toutes complétées, et si c’est le cas, on passe à la
Flash – PHP – MySQL; le trio de choc
on (rollOver) {
if (prenom == "" or nom == "" or e_mail == "" or message == "") {
vide = 100;
} else {
vide = 0;
}
avertissement._alpha = vide;
}
on (rollOut) {
avertissement._alpha = 0;
}
on (release) {
if (vide == 0) {
message = escape(message);
loadVariablesNum ("livre_d_or_saisie.php", 0, "POST");
done = 0;
gotoAndPlay (3);
}
}
Figure 1 – Code de contrôle des actions Flash
suite. De là on procède d’abord à une petite manipulation
sur la variable message - susceptible de contenir des caractères spéciaux - qui consiste à échapper ces caractères (les traduire en codes standardisés afin de les rendre compréhensibles et transmissibles sans pertes ni erreurs par notre logiciel): cela nous permettra de les retrouver intacts lors de la
consultation du livre d’or.
Cela fait, l’action loadVariableNum peut être lancée.
Comme son nom ne l’indique pas vraiment, cette action ne
sert pas uniquement à charger des variables, mais également
à en transmettre. Il suffit alors de simplement spécifier l’URL
de la page à laquelle on désire transmettre nos variables. Le 0
suivant est un paramètre optionnel et le POST indique la
méthode (du protocole HTTP) de transmission des variables. On force ensuite la variable done à 0. Cette variable,
comme on le verra plus loin existe également dans la page
PHP: c’est elle qui nous indiquera la fin du transfert des
variables.
C’est ici (figure 2) qu’entre en jeu notre code PHP qui
va interroger notre base de données MySQL qui va stocker
(ou emmagasiner pour les puristes) les informations de notre livre d’or. Encore une fois, rien de sorcier. Allons-y !
On commence par demander une connexion au serveur
(identifié par son URL, par exemple http://isswww.epfl.ch)
avec la commande mysql_connect(…) après avoir correctement paramétré les informations de connexion telles que:
utilisateur et mot de passe. Ensuite on sélectionne la base de
données par laquelle on veut dialoguer avec mysql_select
_db(…). Finalement on envoie une requête à cette base, en
langage SQL standard, avec la commande mysql_query(…).
Le tour est joué. Peut-on rêver plus simple ?
Nous retrouvons bien-sûr à la dernière ligne la variable
done qui est mise à 1 à l’issue du traitement des données.
Pour transférer nos variables à notre page PHP, nous
avons choisi la commande loadVariableNum. Mais nous
aurions également pu choisir la commande getURL qui se
<?php
/***************************************************************************/
// Parse les var. pour flash afin de lui envoyer dans le bon format
function parse($variable,$valeur)
{
echo "&$variable=$valeur";
}
/***************************************************************************/
// Preparation de la connexion
$host = "localhost";
$user = "votre user";
$password = "votre password";
$bdd = "votre base de donnees";
// Connexion
mysql_connect($host, $user, $password) or die ("impossible de se connecter au
serveur");
mysql_select_db($bdd) or die ("impossible de se connecter a la base de
donnees");
$SQLQuery = "INSERT INTO livre_d_or (no_fiche, prenom, nom, e_mail, message,
ma_date) VALUES ('', '$prenom', '$nom', '$e_mail','$message','$ma_date') ";
$result = mysql_query($SQLQuery);
mysql_close();
// ----- traitement termine
parse("done",1);
?>
Figure 2 – Code PHP d’accès à la base de données
FI 10 – 18 décembre 2001 – page 3
Flash – PHP – MySQL; le trio de choc
paramètre de façon quasi identique, si ce n’est pour le paramètre central qui représente dans ce cas le target de la page
que l’on appelle, c’est à dire la façon dont on désire voir la
page s’afficher (même page, nouvelle page etc… ). Car la
différence est là: l’usage de getURL implique l’affichage de
la page appelée, ce qui n’est pas le cas avec loadVariableNum
qui lance l’exécution de la page PHP de façon totalement
cachée. Le choix de l’une ou l’autre de ces commandes dépend donc uniquement de ce que l’on désire en matière d’affichage.
Mais revenons à notre animation Flash. Nous venons
d’envoyer nos variables et il nous serait agréable de savoir si
elles sont arrivées à destination. C’est à ce moment qu’intervient notre petite variable done que nous a renvoyée notre
page PHP. Ce qui est assez sympathique c’est que du côté de
Flash, nous n’avons besoin d’aucune autre instruction de
chargement de variables. Par notre commande
loadVariableNum de tout à l’heure, nous avons établi un
véritable dialogue avec notre base de données, commençant
par une requête (envoi des variables) et se terminant par l’obtention d’un résultat (quittance de fin de traitement).
Pour assurer le bon déroulement de l’opération, il est
primordial de faire patienter notre animation Flash jusqu’à
ce qu’elle ait effectivement obtenu la quittance de fin de traitement avec la variable done. Cela se réalise simplement en
faisant tourner l’animation entre deux frames (images d’une
animation) dont l’un teste la valeur de done et redirige la tête
de lecture de l’animation une fois que la valeur attendue est
arrivée.
Nous ne détaillerons pas ici la page qui permet de consulter le livre d’or, puisqu’elle fonctionne selon le même principe. Par contre, ceux que la question intéresse, peuvent aller jeter un œil à l’adresse suivante: http://isswww.epfl.ch/
flash_php_mysql/ à laquelle ils pourront tester le livre d’or,
télécharger les fichiers Flash et PHP le constituant, et finalement visualiser un deuxième exemple plus concret qui permet de consulter la base de données de réservation des machines d’essai de notre institut.
Ce dernier fait partie du système de gestion d’équipements de notre laboratoire DGC-ISS (Institut de Statique
et de Structures du Département de Génie Civil) : il a entièrement été réalisé avec ces trois technologies en quelques
semaines seulement, afin de succéder à une série de bases de
données Filemaker qui n’étaient à l’époque utilisables que
par un responsable, et sur un seul poste, en posant des pro-
FI 10 – 18 décembre 2001 – page 4
blèmes d’administration fort ennuyeux. Il offre une convivialité accrue et une interface intuitive à l’utilisateur des équipements (qui peut assez librement gérer son affaire), tout en
garantissant une sécurité appréciée et nécessaire au niveau
du contrôle des différentes saisies de données et finalement
un suivi on-line toujours actualisé du calendrier des essais,
des équipements réservés ou non, au sein de notre institut.
Il fonctionne sur un serveur Windows NT4 disposant de
disques durs en RAID 5 et d’un backup journalier : une sécurité optimale est assurée.
Ce logiciel étant difficilement disponible en libre accès –
pour des raisons de sécurité – nous vous prions de prendre
contact avec nous pour une convaincante démonstration personnalisée, en cas d’intérêt.
Conclusion
Loin de nous l’idée que hors Flash il n’y a point de salut!
Flash est une solution parmi une quantité d’autres. Elle nous
a paru intéressante du fait de la mise en commun d’un outil
graphique vectoriel puissant et d’un langage de programmation non moins performant. L’utilisation de Flash en collaboration avec PHP et MySQL permet ainsi de mettre à disposition des utilisateurs des sites Web au contenu dynamique avec une interactivité importante et des interfaces attrayantes, ce qui n’est aujourd’hui de loin pas négligeable.
Pour terminer nous citerons un autre avantage de ces
outils: le créateur de site Internet peut offrir à ses «clients»
des outils de gestion de site très accessibles ne nécessitant
aucun logiciel d’édition style Dreamweaver, Golive ou autres.
Cette souplesse leur permet de mettre à jour eux-mêmes le
contenu de leurs pages directement depuis leur navigateur
préféré.
Les liens
❚
❚
❚
❚
❚
Site de Flash: http://www.macromedia.com/
Site officiel PHP, documentation multilingue: http://
www.php.net/
Site officiel MYSQL: http://www.mysql.com
Site en français pour applications PHP – MySQL: http:/
/www.nexen.net/
plus de 3000 scripts PHP prêts à l’emploi; http://
www.hotscripts.com/PHP/ ■