Conectar Flash(AS3) Con MySQL Mediante PHP

En este artículo aprenderemos a enlazar Flash con una base de datos MySQL.

Para ello enviamos datos desde Flash a un archivo PHP y a recibir datos de dicho PHP, obtenidos a partir de una consulta en la base de datos MySQL. El código que usaremos en el Flash será Action Script 3 (AS3).

Antes de empezar, tengo que decir que este método de enlace es válido en dos casos:

– Cuando la consulta “SELECT” no genere más de un registro (no importa el número de campos).

– Cuando se hagan acciones de modificación de la base de datos (“INSERT INTO”, “CREATE TABLE”…)

Para familiarizarnos con esta forma de enlace FLASH-MYSQL, os pondré tres ejemplos de cómo un programa Flash se relaciona con una tabla llamada “CONTACTO” que está en la base de datos.

Os comparto la estructura de la tabla “CONTACTO” así como registros de dicha tabla, que usé para aprender y a desarrollar los ejemplos que veremos a continuación:

CREATE TABLE contacto(

nombre varchar(20),
apellido varchar(20),
telefono varchar(9),
ciudad varchar(20),

PRIMARY KEY (telefono)

);

INSERT INTO contacto VALUES (“francisco”,”garcia”,”666555999″,”alicante”);
INSERT INTO contacto VALUES (“lorena”,”rodriguez”,”444666555″,”ciudad-real”);
INSERT INTO contacto VALUES (“vanessa”,”bernal”,”564564564″,”alicante”);

Sobre esta informacíon en la base de datos, realizaremos tres acciones:

– El usuario introduce el número de teléfono y se mostrará el nombre del contacto (ejemplo 1)

– El usuario introduce el número de teléfono y se mostrará todos los datos del contacto (ejemplo 2)

– El usuario introduce todos los datos para almacenar un nuevo registro en la tabla y luego se mostrará el nuevo registro añadido (ejemplo 3)

Antes de empezar con los ejemlos, tengo que advertiros, que el código que pondré no está preparado para gestionar errores. Asi que en caso de introducir un número de teléfono que no está en ningún registro de la base de datos, os saldra mensajes de flash que quizas no sepamos a que se refieren exactamente.

El usuario introduce el número de teléfono y se mostrará el nombre del contacto (ejemplo 1)

En este ejemplo, el usuario introduce el número de teléfono para averiguar el nombre de la persona que tenga ese número.

Flash enviará el número de teléfono a PHP para que éste realice una consulta a MySQL, para encontrar el contacto que tenga ese número de teléfono.

Finalmente, para que Flash pueda recibir el resultado de la consulta, usaremos un “ECHO” donde especificaremos un nombre de campo de datos y a éste campo le asignaremos el nombre de contacto.

Para desarrollar este ejemplo, usaremos el siguiente código PHP en un archivo llamado “buscarNombreContacto.php”.

<?php

//DATOS DE CONEXION A LA BASE DE DATOS
$HOST = “”;
$USUARIO = “”;
$CLAVE = “”;
$BASEDATOS= “”;

//NOS CONECTAMOS A LA BASE DE DATOS
$Conexion = mysql_connect($HOST,$USUARIO,$CLAVE) or die (mysql_error());
mysql_select_db($BASEDATOS,$Conexion) or die (mysql_error());

//RECOGEMOS EL NUMERO DE TELEFONO ENVIADO DESDE FLASH CON EL MÉTODO POST
$Telefono=$_POST[“telefono”];

//REALIZAMOS LA CONSULTA CON LA CORRESPONDIENTE CONDICION
$Consulta=mysql_query(“SELECT nombre FROM contacto WHERE telefono=’$Telefono'”,$Conexion) or die (mysql_error());

//GUARDAMOS LA BUSQUEDA
if (mysql_num_rows($Consulta)>0){

while ($fila_Consulta=mysql_fetch_object($Consulta)){

/*creamos la variable para almacenar el nombre (escribiendo el nombre de la variable seguido del igual, todo esto entre comillas)
y le asignamos el resultado de la consulta realizada.
Ésta es la variable que se enviará a Flash.*/

echo “nombre=”.$fila_Consulta->nombre;

}

}

//CERRAMOS LA CONEXION A LA BASE DE DATOS
mysql_close($Conexion);

?>

Ahora abriremos Adobe Flash (recordar que usaremos AS3):

Captura de pantalla de la presentación de Flash:

– La caja de texto que está al lado de “INTRODUZCA NUMERO TELEFONO:” le ponemos como nombre de instancia “tTelefono” y como tipo de control elegimos “introducción de texto” y le limitamos a nueve los caracteres a introducir, en la opción “Número máximo de carácteres”.

– “BUSCAR” en un texto de tipo “texto estático” que lo convertiremos en simbolo de tipo “BOTON”. Luego le ponemos como nombre de instancia “bBuscar”.

– La caja de texto que está al lado de “NOMBRE DEL CONTACTO:” le ponemos como nombre de instancia “tNombre” y como tipo de control elegimos “texto dinámico”.

– La caja de texto que está al lado de “¿ERROR?:” le ponemos como nombre de instancia “tError” y como tipo de control elegimos “texto dinámico”.

Ahora toca poner el código AS3. Para ello hacemos clik derecho en el fotograma y hacemos click en “Acciones” y pegamos el siguiente código:

//SECCION 1: IMPORTAR LAS CLASES NECESARIAS PARA LA CONEXION VIA URL

import flash.display.Sprite;
import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.net.sendToURL;

//*******************************************************************
//*******************************************************************

//SECCION 2: CONFIGURAMOS LA CONEXION

//Ruta exacta del archivo PHP
const DireccionArchivoPHP:String=”http://localhost/buscarNombreContacto.php&#8221;;

/*Si estamos trabajando en modo local,
tenemos que copiar el archivo PHP en la carpeta asignada como LOCALHOST en el servidor APACHE.
Además dicho servidor tiene que estar encendido.*/

//Creo la variable para configurar el envio de información a PHP
var EnviarDatos:URLRequest = new URLRequest(DireccionArchivoPHP);

//Indico el método por el que se va a enviar la información a PHP.
EnviarDatos.method = URLRequestMethod.POST;//elegimos el metodo POST

//Creo la variable que enviara los datos. Esta variable puede contener varias subvariables
var datos:URLVariables = new URLVariables();

//Creo la variable para configurar la respuesta que se recibe desde PHP
var RecibirDatos:URLLoader = new URLLoader();

//Especificamos el formato de los datos llegados desde PHP
RecibirDatos.dataFormat = URLLoaderDataFormat.VARIABLES;//elegimos datos contenidos en variables

//Escucha para recibir los datos cuando la conexión tiene éxito
RecibirDatos.addEventListener(Event.COMPLETE,Respuesta);

//Escucha en caso de ocurrir un error en la conexión
RecibirDatos.addEventListener(IOErrorEvent.IO_ERROR,HayError);

//*******************************************************************
//*******************************************************************

//SECCION 3: ESCUCHAS DE RESPUESTA DEL PHP

//creamos la función “Respuesta” para trabajar con los datos llegados desde PHP
function Respuesta(event:Event){

tNombre.text=RecibirDatos.data.nombre;

/*Las variables que escribamos en la variable “RecibirDatos”
tienen que coincidir con los campos creados en el ECHO del PHP.*/

}

//Creamos la función “HayError” para que nos informe en caso de un error en la conexión
function HayError(event:IOErrorEvent):void {

tError.text=”Error al cargar la url”;

}

//*******************************************************************
//*******************************************************************

//SECCION 4: ENVIAMOS LA PETICION A PHP

//Creamos el evento CLICK para el botón “bBuscar” y le asignamos una función
bBuscar.addEventListener(MouseEvent.CLICK, BuscarNombreContacto);

//Creamos la función “BuscarNombreContacto” que será llamada desde el evento CLICK del botón “bBuscar”
function BuscarNombreContacto(e:MouseEvent):void{

//GUARDO LOS DATOS A ENVIAR AÑADIENDO A LA VARIABLE “DATOS” LA SUBVARIABLE “TELEFONO”
datos.telefono=tTelefono.text;

/*las subvariables que añadimos tienen que coincidir con el nombre de variables
que se usen en los “$_POST” del archivo PHP*/

//especificamos que variable contiene lo datos a enviar.
EnviarDatos.data = datos;

/*procedemos a enviar la petición a PHP, para el envio y llegada de información,
mediantes dos variables previamente configuradas para el envio y la respuesta*/
RecibirDatos.load(EnviarDatos);

}

Guardamos el proyecto Flash con el nombre “BuscarNombreContacto.fla”

Ahora vamos a probarlo. En la barra de herramientas pulsamos “Control” –> “Probar película”. Introducimos un número de teléfono que este en alguno de los registros que hemos grabado anteriormente en la tabla “contacto” y luego pulsamos “BUSCAR”.

PULSAR EN LA CARPETA PARA DESCARGAR ESTE EJEMPLO

El usuario introduce el número de teléfono y se mostrará todos los datos del contacto (ejemplo 2)

En este ejemplo, el usuario introduce el número de teléfono para averiguar todos los datos de la persona que tenga ese número.

Para conseguir esto, tan solo tenemos que realizar una pequeña modificación del archivo php y del código AS3 del ejemplo anterior, pues la única diferencia es que PHP realizará una consulta a MySQL con más de un campo y se enviará a Flash más de una variable.

Creamos un archivo php con el nombre “buscarDatosContacto.php” y le pegamos el contenido de “buscarNombreContacto.php” del Ejemplo 1. Hacemos las siguiente modificaciones:

Cambiamos la línea

$Consulta=mysql_query(“SELECT nombre FROM contacto WHERE telefono=’$Telefono’”,$Conexion) or die (mysql_error());

por esta

$Consulta=mysql_query(“SELECT * FROM contacto WHERE telefono=’$Telefono'”,$Conexion) or die (mysql_error());

Sólo hemos cambiado “nombre” del SELECT por un asterisco para recoger toda la información del contacto.

Ahora cambiamos la siguiente línea

echo “nombre=”.$fila_Consulta->nombre;

por esta

echo “nombre=”.$fila_Consulta->nombre.”&apellido=”.$fila_Consulta->apellido.”&telefono=”.$fila_Consulta->telefono.”&ciudad=”.$fila_Consulta->ciudad;

Se han añadido mas variables al ECHO mediante los ampersand “&”.

Realizadas estas dos modificaciones, el archivo “buscarDatosContacto.php” quedaría así

<?php

//DATOS DE CONEXION A LA BASE DE DATOS
$HOST = “”;
$USUARIO = “”;
$CLAVE = “”;
$BASEDATOS= “”;

//NOS CONECTAMOS A LA BASE DE DATOS
$Conexion = mysql_connect($HOST,$USUARIO,$CLAVE) or die (mysql_error());
mysql_select_db($BASEDATOS,$Conexion) or die (mysql_error());

//RECOGEMOS EL NUMERO DE TELEFONO ENVIADO DESDE FLASH CON EL MÉTODO POST
$Telefono=$_POST[“telefono”];

//REALIZAMOS LA CONSULTA CON LA CORRESPONDIENTE CONDICION
$Consulta=mysql_query(“SELECT * FROM contacto WHERE telefono=’$Telefono'”,$Conexion) or die (mysql_error());

//GUARDAMOS LA BUSQUEDA
if (mysql_num_rows($Consulta)>0){

while ($fila_Consulta=mysql_fetch_object($Consulta)){

/*creamos las variables para almacenar todos los datos del contacto (escribiendo el nombre de la variable seguido del igual, todo esto entre comillas)
y le asignamos el resultado de la consulta realizada.
Para añadir otra variable ponemos el ampersand “&” y luego el nombre de la variable…
Éstas son las variables que se enviarás a Flash.*/

echo “nombre=”.$fila_Consulta->nombre.”&apellido=”.$fila_Consulta->apellido.”&telefono=”.$fila_Consulta->telefono.”&ciudad=”.$fila_Consulta->ciudad;

}

}

//CERRAMOS LA CONEXION A LA BASE DE DATOS
mysql_close($Conexion);

?>

Ahora abriremos Adobe Flash (recordar que usaremos AS3):

Anuncios
Publicado en actionscript3, as3, flash, mysql, php | Etiquetado , , , , , , , | 8 comentarios