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/ ■