Tutorial Flash vs Bases de datos

IS4kO

Interacción de ActionScript con Bases de datos a través de php
Fecha: 28-02-2005

Por: IS4kO

Hola compañeros, pues nada que he estado investigando un poquillo sobre algo que creo que no es muy conocido, y que pienso que a todos os vendrá bien saber, ya que la mayoría soleis trabajar mucho o bastante con PHP.

Bien, antes de empezar decir, que iwal que vamos a trabajar el tema con php, se puede hacer con ASP, es exactamente la misma metodología de programación, solo que las páginas de ataque hacia la base de datos, tendran un codigo distinto, al de las paginas .php, por ejemplo, si en php para devolver un determinado valor usaremos echo "valor= X"; en ASP seria response.write("valor= X");

Tb advertir de que esta guía va dirigida a aquellas personas que tienen un mínimo de conocimientos en Flash y un poco más concreto en actionScript, ya que aunque la forma de trabajar las bases de datos no es nada complicada en un principio, pues si quieres hacer cosas distintas, necesitarás conocimientos de ámbitos de variables, de control de la película, objetos, etc ...

Bueno al tema:

INDICE:

  1. Definición de Bases de Datos.
  2. Creación de la escena.
    2.1 Creación de las cajas de texto.
    2.1.a Texto Estático.
    2.1.b Texto Dinamico.
    2.1.c Texto Tipo “Introducción de texto”.
    2.2 Pasando a la acción.
    3 Programación.
    3.1 El Objeto LoadVars().
    3.1.a Carga de LoadVars().
    3.2 Nuestro .PHP
  3. Fin

1º Definición de las Bases de Datos

No me extenderé mucho en este apartado ya que casi todos a los que va dirigida esta guia saben crearse una base de datos, unas tablas y unos registros para dichas tablas asi que nada, solo apuntar que trabajaremos con mySQL, el cual podeis obtener por ejemplo en http://www.appservnetwork.com ó en www.google.es :)

Para nuestro ejemplo nos crearemos una tabla Usuarios con los campos (ID, Nombre, Apellidos y Comentarios)

2º Creacion de la Escena

Bueno haber que tal explico este apartado.

Como sabreis, la linea de tiempo de ejecución de un .fla se puede dividir en frames ó fotogramas, bien pues en nuestro ejemplo vamos a trabajar con 2 fotogramas.

El primero dirigido hacia la inserción de datos en la base de datos y el segundo hacia la lectura de los mismos.(Aunque no vamos a ver todo el código del ejemplo, hago referencia a que en este hay dos fotogramas, para que os pilleis la idea de la posibilidad de crearte todo un portal, con ditintas escenas, frames etc…)

2.1 Cajas de Texto

Vamos a dibujar nuestra interfaz, para ello necesitaremos varias cajas de texto, y aunque la mayoría sabréis como diseñarlas, no quiero pasar por alto ciertos detalles que creo son importantes. Y es que hay que diferenciar entre los distintos tipos de Texto que tenemos en un .fla .

2.1.a Texto Estático
Pues como bien su nombre indica es aquel texto que núnca cambia, es decir por ejemplo en nuestro caso pondríamos un texto en el que pusiera:

Nombre:
Apellidos:
Comentarios:

2.1.b Texto Dinámico:

Pues seria ese texto que puede cambiar pero que tu no puedes cambiar manualmente, en nuestro ejemplo por ejemplo seria lo que va a continuación del Nombre: es decir una especie de caja de texto, en la que se mostrarán los registros que vengan de las bases de datos.

2.1.c Texto Introducción de texto:

Este sería el tipo que nos falta, es decir la típica caja de texto en la que puedes escribir.

Otro aspecto importante son las distintas propiedades que van a poder tener estos textos.

En principio son tres, la propiedad de permitir formato HTML, la de permitir que la caja de texto sea o no seleccionable y la de El borde de caja de texto (esta última hay que activarla si lo que quieres es que tu texto tenga aspecto de caja de texto de formulario, es decir, porde y fondo blanco).

Para acceder a estas propiedades basta con mirar en panel de propiedades, con uno de tus textos seleccionados, veréis tres iconitos juntos justo al lado de u menú que especifica si quieres o no que tu texto sea multilinea etc.. (Siento no especificar más, pero no se como deciros donde están sin una capturilla, pero vamos que son de fácil acceso y se ven muy fácilmente) :p

2.2 Pasando a la Acción

Llegados a este punto recuerdo que esta guía iba destinada a gente que más o menos sepa un pokillo del tema, así que me voy a saltar los pasos de creación de botones y demás ya que supongo que no hay complicación en crearte un boton guardar y otro que se llame seleccionar :p, asi que antes de empezar con el codigo resumir que tenemos dos fotogramas.
Un primero dirigido a insertar datos en la base de datos, con varias cajas de texto, un boton guardar y otro seleccionar (este segundo lo unico que nos hace es que al pincharles pues no manda al segundo fotograma con un gotoAndPlay(2);
Y un segundo que lo que nos hará es recibir datos dependiendo de una id.

3º Programación

3.1 El objeto Load Vars()

Objeto que se ha empezado a utilizar a partir de la version 5 de flash, uno de los atractivos mas grandes de LoadVars es que nos permite enviar datos como si fuera un formulario HTML, que puede ser procesado por cualquier Script del lado del servidor (ASP, PHP, CFML, JSP, Perl, CGI, etc…).

var MVar = new LoadVars();
MVar.onLoad = function()
{
_root.txtNombre.text = MVar.nombre;
_root.txtApellido.text = MVar.apellidos;
_root.txtComentarios.text = MVar.comentarios;
_root.txtId.text = MVar.id;
_root.txtNum.text = MVar.num;
}

Bueno expliquemos este codigo, lo que estamos haciendo es crearnos un objeto llamado MVar q es de tipo Loadvar(). Y que cuando es cargada (llamada) desde alguna linea de nuestro programa, pues ejecuta una función que lo que hace es asignar a nuestras cajas de texto, que en nuestro ejemplo las hemos llamado txtNombre.text, txtApellido.text,… el _root delante del nombre de las variables lo que indica es que coje el ambito más superior que existe dentro de la película, ya que no es lo mismo una variable X definida en la escena ppal a una variable X definida dentro de un MovieClip por ejemplo.)

Bien el siguiente paso seria explicar que significa el MVar.nombre, bueno como sabiamos MVar es un objeto, y como tal puede contener variables o incluso otros objetos dentro. En nuestro caso contiene unas variables que le mandamos desde un .php

3.1.a Carga de LoadVars

Como observais en el codigo, se hace referencia a una funcion cuando se cargue el objeto loadVars, y para que este se cargue pues hay que llamarle, esto se hace de la siguiente forma, por ejemplo que cuando pulses un determinado botón lo cargue:

Hay dos tipos de carga:

MVar.load("Select.php"); //Si el .load es para recibir datos
MVar2.sendAndLoad("save.php",MVar2,"post"); // el .sendAndLoad se usa para mandarle datos al .php a traves del loadVars MVar2

3.2 Nuestro PHP
Bueno como casi todos, se que controlais bastante de PHP y no voy a usar nada raro simplemente os pego el codigo de lo que serían unas simples consultas

SELECT.php

<?

//Parametros de conexion

$host = "";
$user = "";
$pass = "";
$bbdd = "";

//Conexion

$conexion = mysql_connect($host,$user,$pass) or die(mysql_error());

mysql_select_db($bbdd,$conexio) or die(mysql_error());

if($REQUEST_METHOD == "POST")
{
$campo2 = htmlentities($_POST[campoSelect2]);
$consulta = "SELECT * FROM usuarios where id=$campo2 ORDER BY ID";
$total = mysql_query("SELECT * FROM usuarios");
$res = mysql_query($consulta)or die(mysql_error());
$numRegs=mysql_num_rows($total);
if ($campo2<=$numRegs) //Compruebo que el id que le paso por url no sobrepasa en numero de registros de la tabla
{
while($val=mysql_fetch_array($res))
{
echo "nombre=".$val[nombre]."&apellidos=".$val[apellidos]."&comentarios=".$val[comentarios]."&id=".$val[id]."&num=$numRegs";
}
}
else
{
echo "nombre=NoMas&apellidos=No + regs &comentarios=No + regs&id=No +regs";
}
}
?>

Bueno en cuanto a explicación, pues más bien poca ya que no creo que tengais problems en entender el código.

Solo indicaros un par de cosas:

1º El ID del where se lo paso via post (como se explica en el punto 3.1.a).

2º Si os dais cuenta, en el echo imprimimos unas variables las cuales tendrán el valor de los registros de las consultas. Pues esas variables son las que pillará el ActionScript y son las que asignaremos a las cajas de texto (recordad _root.txtNombre.text = MVar.nombre;) lo que trae el campo nombre del objeto MVar se lo asignabamos a la caja de texto txtNombre.text.

3º Fijaos tb que he puesto una condición, para que si yo le he pasado un ID no valido al php me devuelva unos parámetros determinados, esto nos puede servir, ya que luego en Flash podemos determinar que si por ejemplo el nombre.txt vale X pues nos haga una cosa u otra &#61514;

Carga.php

Bien, habiendo visto y comprendido lo que hace el select.php pues el carga.php será mucho más simple a la hora de verlo, se hace exactamente lo mismo que en el select, lo único que en vez de pasarle un ID (que en el select usabamos para realizar la consulta) pues le pasamos los valores que tiene que meter en un insert :D

Por ejem:

$c = "INSERT INTO usuarios ( ID , nombre , apellidos , comentarios ) VALUES ('', '$campo1', '$campo2', '$campo3');";

4. FIN

Bueno para acabar dedicar esta mini-guia a toda la comunidad de Media-Vida, que aunque a algunos se les/nos va la pinza a veces, no cabe duda de que hay gente de que vale mucho y de que merece la pena esforzarte un pelín por colaborar y ayudarnos entre todos.

MEDIA-VIDA RLZ

p.D: Siento la mala sintaxis, ortografía, y redacción, pero es la primera guia que hago, y sin capturas y tal pues me resulta difícil ejemplificar cosas tan gráficas como son el lugar de un icono, lo he intentado explicar de la mejor forma posible, no se si conseguiré ayudar a alguien pero bueno ahí queda eso, y para cualquier pregunta, aportación o corrección, pues ya sabeis, mensajillo y listo :p

erdanblo

No lo he leido entero, pero me parece muy bien que lo hayas puesto... yo lo he leido ya en otra web.

Es un hecho lo bien que se llevan As y PHP y por lo tanto con MySQL... y la verdad también... es que es muy utíl.

EnZo

Muy bueno :D

Ahora mismo no lo necesito pero de aqui a un par de dias si porque tengo que hacer un sistema de identificacion de usuarios y voy a hacerlo en flash.

Felicidades

Whose

Muy bueno, yo tengo un libro sobre como añadir PHP a una escena en flash, esto viene a ser algo parecido pero mas resumido, genial tio ^^

B

no lo he terminado, ahora sigo

enorme !

xDDDDD ta mu bien por lo q llevo buen trabajo :D

SMF_

Como le haceis caso a este cacho de lamer..
Si lo unico q sabe hacer bien es chuparmela xDD
I love.
Alguna vez quisiera aprender a hacer to eso pero mi vagancia me lo impide, algun dia lograre superarla.

IS4kO

SMF_ no saques aqui nuestra relación es algo personal xD sabes que me encanta tu sabor ummMMmmMm :p

NiBeLHe1M

M parece q no t abia dado permiso para q publikaras MI guia, y menos a tu nombre

=_)

IS4kO

#8 Muajajeejej tu sigue calculando los dias que hay entre dos años que se meten por teclado, xxdddddd, juh juh juh chichirruchi, ps2 is coming soon juh

u lous i GUIN

Ga1lego

chapó IS4kO :D

1 mes después
Rapaz

chapó? que es una buena guía?

Me cago en la ostia si tiene más faltas de ortografía, expresión y gramática que yo con 5 años.

Continuamente se come letras en las palabras, mete ese nefasto "haber", cuando quiere decir "a ver", dice "no" cuando quiere decir "nos".

Sinceramente, NINGUNO de los que habeis posteado aquí arriba se ha leido la guía.

Mal explicada y redactada.

Podrías habertelo currado mejor, sino podría haber hecho yo la guía o cualquier diseñador web de flash medianamente mediocre.

Un saludo.

B

#11

te reto a que la superes

IS4kO

#11 yo te invito a que colabores pasandome posibles fallos y añadidos por msg para mejorarla, el fin de la guia es ayudar, y cuantas más mejoras mejor :)

Usuarios habituales