Cómo conectar una aplicación Flash con una base de datos a través de PHP
En este post mostraré como comunicar una aplicación Flash/AIR con una base de datos MySQL a través de un fichero PHP en el servidor. Para realizar acciones como, por ejemplo, enviar puntuaciones de juegos, visializar rankings o enviar registros.
En la parte de Flash crearemos una clase de Actionscript 3 que realizará el envío de variables a través de las clases URLLoader y URLVariables.
- package org.codigoactionscript.data
- {
- import flash.net.URLRequestMethod;
- import flash.net.URLVariables;
- import flash.events.Event;
- import flash.events.EventDispatcher;
- import flash.net.URLLoader;
- import flash.net.URLRequest;
- //------------------------------------------------------
- public class PHPVarsData extends EventDispatcher
- {
- public static var CARGADO:String = "DATA_CARGADA";
- public static var ERROR:String = "DATA_ERROR";
- protected var _data:*;
- private var __loader:URLLoader = new URLLoader;
- private var __request:URLRequest = new URLRequest();
- private var __postObject:Object;
- private var __variables:URLVariables;
- //------------------------------------------------------
- public function PHPVarsData(url:String, vars:Object = null)
- {
- __postObject = vars;
- _ini(url);
- }
- public function get data():*
- {
- return _data;
- }
- //------------------------------------------------------
- protected function _ini(url:String):void
- {
- __request.url = url;
- __loader.addEventListener(Event.COMPLETE, onLoadComplete);
- if (__postObject != null) {
- var variables:URLVariables = new URLVariables;
- for (var n in __postObject) {
- variables[n] = __postObject[n];
- }
- __request.data = variables;
- }
- __request.method = URLRequestMethod.POST;
- __variables = new URLVariables;
- __loader.load(__request);
- }
- protected function onLoadComplete(e:Event):void
- {
- try {
- __variables = new URLVariables;
- __variables.decode(__loader.data);
- _data = __variables;
- dispatchEvent(new Event(PHPVarsData.CARGADO));
- } catch (e:Error) {
- dispatchEvent(new Event(PHPVarsData.ERROR));
- }
- }
- }
- }
A esta clase le pasaremos como parámetros la URL del archivo PHP a ejecutar, y un objeto con las variables que necesitemos procesar.
La clase extiende de EventDispatcher con lo que lanzaremos un evento cuando los datos se hayan enviado y recibido correctamente.
Por la parte de PHP, crearemos un fichero que conecte con nuestra base de datos y ejecute la consulta SQL.
Para este ejemplo este archivo PHP recibirá por POST una variable “user” con un nombre de usuario y una variable “score” con un valor de puntuación. Al recibir estos datos actualizará una tabla de puntuaciones sumando estos puntos al usuario. Para acabar devolverá la suma total de puntos acumulados.
Descarga los ficheros:
*Debes de estar registrado para ver este contenido. Login | Registro
buenas. me viene de perlas todo esto mil gracias. solo una pregunta si no es mucha molestia, esto mismo me serviria para realizar un registro de usuarios en una app para android que estoy haciendo? o tendria que variar cosas? la verdad es que en esta cuestio ando bastante perdido.
Hola Bismun
Desde una App de Android (o iOS) puedes hacer peticiones a un servidor (php) para enviar o recibir datos sin problema.
Lo único que tendrías que añadir a este ejemplo (si quieres mejorar tu app) es que detecte si hay conexión disponible o no, para no enviar peticiones que te devuelvan un error de timeout…
No descarga….
Como descargo por favor? me interesa mucho, haciendolo no me funciona.
Hola Maximiliano
Acabo de comprobar que el enlace es correcto.
Al darle al enlace tienes que volver a clickar en “PHPVarsData” para descargar el archivo ZIP
Si sigues teniendo problemas para descargarlo te lo puedo mandar por email ;P
Saludos
Hola, está genial! (el enlace está bien)
Por desgracia soy novato y me perdí configurando la base de datos para que funcionara el ejemplo subiendo el php en el servidor
Si pruebo desde flash me da el siguiente error:
Warning: Source path “/Users/zguillez/Documents/SVN/API/as3/” does not resolve to a valid directory.
Alguna indicación para la configurar el ejemplo?
Gracias.
Me daba “undefined” pero ahora funciona perfecto, sólo tenía que eliminar los saltos de línea en el php.
Muchas gracias.
@jnthn: El error de path te lo da por la ruta donde el FLA busca las clases.. Debes modificar esa ruta desde el panel de configuración del documento.
Buenas tardes,
Perdón pero intento descargarme el archivo adjunto y no existe, pueden revisarlo?
Muchas gracias y muy buen trabajo.
Saludos,
Albert Escobar
Perdón, rectifico, clickaba donde no tocaba.
Sorry,
Albert Escobar
Hola
var data: Object = {
user: “zguillez”,
score: 12345
};
si quisiera cambiar “zquillez” por el texto de una variable como seria?
var obj = “zguillez”;
var data: Object = {
user: obj,
score: 12345
};