Échanger des données entre PHP / MySQL et Flash / AS3

4 questions

Écrit le 1 novembre par Matthieu
Publié dans le(s) sujet(s) Adobe Flash

Mots clés : , , , , , , , , ,

Dans cet article, nous allons apprendre Comment échanger des données entre Flash (AS3) et Php / MySQL.

Il y a plusieurs méthodes, la plus simple et efficace consiste à utiliser le Flash Remoting.

Qu’est ce que le Flash Remoting ?

Le Flash Remoting permet des échanges entre un client (flash) et un serveur (php). De plus, il possède un format de données propre : l’AMF pour Action Message Format.

Le format AMF (format binaire) permet, entre autre, d’échanger des variables typées et optimisées. Effectivement, les informations sont sérialisées puis envoyées au serveur (Php).

Pour simplifier : Flash encode les données en AMF et les transmet au serveur. Pour décoder le paquet reçu, le serveur a besoin d’une passerelle remoting.

Installation d’une passerelle Remoting

Dans notre tutoriel nous utiliserons AmfPhp pour dialoguer entre Flash et Php. Téléchargez la dernière version : amfphp 1.9.zip.

Dézippez le contenu sur votre serveur web, dans le dossier ‘www’ par exemple.

Il y a 2 dossiers et 1 fichier important :

  • browser : permet de tester vos services Php.
  • services : contient les Services Php ou classes de communication avec une base de données MySQL.
  • gateway.php : la passerelle à configurer dans votre fichier ActionScript pour lancer la communication de Flash avec Php.

Ensuite, tapez l’url d’accès la passerelle gateway.php, par exemple : http://www.votre-domaine.com/include/remoting/gateway.php

Un message vous indique que l’installation d’Amfphp est réussie.

Puis vous avez la possibilité de :

  • consulter la documentation sur le site Amfphp.
  • lancer le Browser pour tester vos services Php.

Création de la connection entre Flash et Php

Dans votre classe AS3, il suffit de renseigner l’url de la passerelle php (gateway.php). Très simple 🙂

[codesyntax lang= »actionscript3″ title= »addRemoting » bookmarkname= »addRemoting »]

[/codesyntax]

Les classes AS3 suivantes sont utilisées :

  • import flash.net.NetConnection; Permet d’établir la connection de Flash avec PhP.
  • import flash.net.Responder; Permet de renseigner à Flash, les méthodes AS3 à appeler dès la réception de la réponse de Php.

Échange de données entre Flash et Php

Le fonctionnement est le suivant : le Flash (en AS3) appelle un Service Php (une classe).

Création du Service Php

Sur votre serveur php, dans le répertoire services, créez un fichier php. Dans notre tutoriel, nous l’appellerons FlashRemoting.php.

Dans le constructeur de la classe php FlashRemonting, renseignez le nom des méthodes accessibles depuis flash.

[codesyntax lang= »php » title= »FlashRemonting.php » bookmarkname= »FlashRemoting.php »]

[/codesyntax]

Ensuite, il reste à implémenter votre script php dans la méthode getDate().

getDate() interroge le serveur php pour récupérer sa date tout simplement.

[codesyntax lang= »php » title= »FlashRemoting.php getDate() » bookmarkname= »FlashRemoting.php getDate() »]

[/codesyntax]

Dans la méthode getDate(), vous remarquerez l’ajout d’un paramètre en entrée.

C’est un objet envoyé par Flash, puis Php le retourne à Flash. C’est un exemple pour vous montrer cette possibilité : le contenu de cet objet peut être ajouté dans une base de données par exemple…

Test du service avec le browser

Une fois votre service Php crée, vous pouvez le tester avec le browser d’Amfphp.

Tapez l’url d’accès la passerelle gateway.php, par exemple : http://www.votre-domaine.com/include/remoting/gateway.php

Et cliquez sur Load the service browser.

amfphp browser

Cette interface en Flash vous permet :

  • de détecter les erreurs de syntaxe PhP.
  • d’appeler les méthodes de votre service Php.
  • d’effectuer des tests de performances de votre serveur Php.

Appel de PhP à partir de Flash

En AS3, vous utilisez l’instance de la classe NetConnection pour appeler votre passerelle Php.

[codesyntax lang= »actionscript3″ title= »appelPhp() » bookmarkname= »appelPhp »]

[/codesyntax]

L’instance de la classe Responder indique à Flash les méthodes à appeler en cas de connection réussie ou d’échec.

Vous remarquerez l’ajout du Logger pour afficher du Debug dans Firefox (très pratique)!

La méthode succesServeurPhp reçoit l’objet directement envoyé par la méthode getDate() de la classe Php FlashRemoting.

[codesyntax lang= »actionscript3″ title= »succesServeurPhp() » bookmarkname= »succesServeurPhp() »]

[/codesyntax]

Echanger des données entre flash

et une base de données MySQL

Sur le même principe, Flash peut communiquer avec une base de données, de type MySQL par exemple.

Dans votre service Php, vous implémentez vos requêtes MySQL, c’est aussi simple que cela!

J’ai ajouté à ce tutoriel la classe Mysql.php. Elle possède quelques fonctionnalités bien sympathiques. Je vous laisse les découvrir par vous même.

La classe Mysql.php est commentée, et avec des exemples d’utilisation.

Création d’un compteur de visite en Flash

Nous allons créer un compteur de visites en Flash.

Le Flash va interroger la base de données Mysql via Php pour mettre à jour et afficher le nombre de visiteurs de l’application.

Tout d’abord, renseignez les données de connection à votre base dans la classe Mysql.php

[codesyntax lang= »php » title= »Mysql.php » bookmarkname= »Mysql.php »]

[/codesyntax]

Puis exécutez ces requêtes sql sur votre base de données (via phpmyadmin).

[codesyntax lang= »sql » title= »compteur visite » bookmarkname= »compteur visite »]

[/codesyntax]

Ensuite, ajoutez un nouvel accès dans le constructeur de votre service php. Ainsi que la création de la connection à la base de données.

[codesyntax lang= »php » title= »FlashRemoting.php » bookmarkname= »FlashRemoting.php »]

[/codesyntax]

Ensuite, vous implémentez les différentes requêtes sql nécessaires dans votre service Php.

[codesyntax lang= »php » title= »getVisitCount() » bookmarkname= »getVisitCount() »]

[/codesyntax]

Voici le code AS3 pour demander à Mysql les informations du compteur de visites.

[codesyntax lang= »actionscript3″ title= »appelMysql() » bookmarkname= »appelMysql() »]

[/codesyntax]

Et pour terminer, la méthode AS3 appelée par le Php. Nous utilisons les informations de la base de données, à travers un objet envoyé par Php.

[codesyntax lang= »actionscript3″ title= »succesServeurMysql() » bookmarkname= »succesServeurMysql() »]

[/codesyntax]

Conclusion

Et voici le résultat avec les Composants Button du Framework AS3 Facile.

Sources Commentées

Vous trouverez ci-dessous l’ensemble des classes créées. Elles sont commentées pour vous permettre de comprendre au mieux leur fonctionnement.

Le fichier zip contient également le logiciel AMFPHP en version 1.9 😉

Vous pouvez télécharger le fichier zip :

Télécharger “Flash Remoting AS3 / Php / MySQL (AMFPHP 1.9 inclus)”

flash_remoting_as3_facile.zip – Téléchargé 1426 fois – 532,83 Ko

Quelle technique préférez-vous utiliser pour échanger des données entre Php et Flash ?

Partagez-les ci-dessous avec l’ensemble des Développeurs ActionScript. Il y a des solutions plus rapides à mettre en place avec les classes AS3 :

  • URLVariables.
  • URLRequest.
  • URLLoader.