1.- Introducción

El objetivo de este tutorial es la creación de un pequeño sistema que desde flash permita la lectura e insercción de datos en una tabla de una Base de datos. Para ello intentaremos crear un pequeño libro de visitas en el cual podamos insertar comentarios y leer los ya existentes.

La idea de este tutorial, no es otra que la de ser un recurso didactico más para aprender a combinar php y mysql con actionscript. En ningún momento tengo como objetivo el de proporcionar un libro de visitas ya hecho a medida, y para que este tutorial sirva de guía se recomienda tener unos conocimientos mínimos de php y actionscript. Además se recomienda tener unas nociones básicas de sql, o por lo menos saber lo que es.

Para poder hacer pruebas y realizar el libro de visitas, es necesario disponer de un servidor que tenga php y mysql instalado.

2.- Creación de la Base de datos (MySql)

En este caso tan sólo voy a utilizar una tabla y contendrá la siguiente estructura:

TABLA SQL
CREATE TABLE libro_visitas (
id INT(11) NOT NULL AUTO_INCREMENT,
nombre VARCHAR(100) NULL,
email VARCHAR(250) NULL,
mensaje TEXT NULL,
fecha DATETIME NULL,
PRIMARY KEY(id)
);

Para la creación de la única tabla que necesitamos, utilizaremos phpMyAdmin que no debería de suponer ninguna compliación, ya que podremos crear nuestra tabla mediante el script sql que hay más arriba o mediante las funciones que ofrece el interface de phpMyAdmin..

Sí se piensa utilizar los scripts php que se encuentran más abajo, es importante que se mantenga la estructura de la tabla tal como se indica arriba, con los mismos nombres de columnas y tipos..

3.-Operaciones con la Base de datos (Php)

Para recuperar los datos se optará por obtener los datos mediante php, y generando un archivo xml que más tarde se leerá desde flash mediante los métodos predefinidos del objeto LoadVars que incorpora Flash.

En cuanto a la insercción tendremos un archivo php que recibirá una serie de variables y mediante una consulta sql realizará la insercción de dichas variables en nuestra tabla de la base de datos.

3.1.-Lectura de registros

Para la lectura de los datos, lanzaremos la siguiente consulta sql:

SQL:

  1. SELECT * FROM libro_visitas ORDER BY fecha ASC

Con esta consulta obtendremos todos los registros que haya en la tabla libro_visitas ordenados por el campo fecha y generaremos dinámicamente mediante php un archivo xml que luego leeremos desde flash.

Este podría ser el código fuente para nuestro archivo obtener_datos.php:

PHP: 

 

  1. // Nos conectamos con la base de datos
  2. $conexion = mysql_connect(“host”,”usuario,”contraseña)
  3. or die(‘No pudo conectarse : ‘ . mysql_error());
  4. mysql_select_db(“nombre_bd”);
  5. // Hacemos la consulta para obtener los datos
  6. $sql = ‘select * from libro_visitas order by fecha asc’;
  7. $consulta = mysql_query($sql,$conexion);
  8. $n = mysql_num_rows($consulta); // Empezamos a generar el archivo xml
  9. echo “\n\n”;
  10. // Por cada fila de la base de datos generaremos una fila en el xml
  11. for ($i=0; $i<$n; $i++) {
  12. $id=mysql_result($consulta, $i,’id’);
  13. $nombre=mysql_result($consulta, $i,’nombre’);
  14. $email=mysql_result($consulta, $i,’email’);
  15. $mensaje=mysql_result($consulta, $i,’mensaje’);
  16. $fecha=mysql_result($consulta, $i,’fecha’);
  17. nombre=\”$nombre\” mensaje=\”$mensaje\” fecha=\”$fecha\” />\n”);
  18. }
  19. echo “\n”;
  20. $buffersize = ob_get_length();
  21. header(“Content-Length: $buffersize”);
  22. header(‘Content-type: text/xml; charset=UTF-8′);
  23. mysql_close($conexion);
  24. ?>

**Nota: Sí se copia y se pega el código debes de sustituir los datos de conexión de tu base de datos.

Sí se ha creado la base de datos correctamente al ejecutar este php deberíamos ver la estructura de la base de datos en xml. Evidentemente si no hay datos en la base de datos, no sé verán nodos aquí, a modo de pruebas se pueden insertar registros desde phpmyadmin.

3.2.-Insercción de registros

Para la insercción realizaremos un pequeño script en php que reciba las varibles necesarias via get, para después lanzar el script sql.

Un ejemplo de insercción podría ser:

SQL: 

 

  1. INSERT INTO libro_visitas VALUES(”, ‘..sErGiO..’, ‘mi_email@mi_email.com”, ‘mi comentario’, NOW());

Este podría ser nuestro código para insertar_comentario.php:

PHP: 

 

  1. // Nos conectamos con la base de datos
  2. $conexion = mysql_connect(“host”,”usuario”,”contraseña”)
  3. or die(‘No pudo conectarse : ‘ . mysql_error());
  4. //echo ‘Conexión exitosa’;
  5. mysql_select_db(“nombe_bd”);
  6. // Recogemos las variables
  7. $id=$HTTP_GET_VARS['id'];
  8. $nombre=$HTTP_GET_VARS['nombre'];
  9. $email=$HTTP_GET_VARS['email'];
  10. $mensaje=$HTTP_GET_VARS['mensaje'];
  11. // Inicializamos una variable que servirá para controlar errores
  12. $error=0;
  13. // Pequeña validación
  14. if($mensaje==”){
  15. $error=1;
  16. }
  17. if($nombre==”){
  18. $nombre=’Anónimo’;
  19. }
  20. // Si todo esta correcto lanzamos el script de insercción
  21. if ($error!=1){
  22. $sql = “INSERT INTO `libro_visitas` VALUES(”, ‘”.$nombre.”‘, ‘”.$email.”‘, ‘”.$mensaje.”‘, NOW());”;
  23. $consulta = mysql_query($sql,$conexion);
  24. if ($consulta==1) {
  25. echo ‘&resultado=1′;
  26. } else {
  27. echo ‘&resultado=0′;
  28. }
  29. }
  30. $buffersize = ob_get_length();
  31. header(“Content-Length: $buffersize”);
  32. header(‘Content-type: text/xml; charset=UTF-8′);
  33. mysql_close($conexion);
  34. ?>

**Nota: Sí se copia y se pega el código, debes de sustituir los datos de conexión de tu base de datos.

Sí se quiere hacer una prueba para insertar un registro bastaría con poner en el navegador:
www.tudominio.com/insertar_comentario.php?&mensaje=’mensaje%20de%20prueba’

Donde: www.tudominio.com/ debe sustituirse por la dirección en donde tengas los archivos.

Sí esta pequeña prueba muestra resultado=1 la insercción se ha realizado correctamente, sino ha habido algún error.

4.-Comunicación con Flash.

Hasta el momento ya tenemos creada la base de datos y la comunicacón con ella para insertar y mostrar los datos. Ahora llega el momento de comunicar flash con los archivos php. Para ello utilizaremos el objeto LoadVars junto con sus respectivos métodos…

Para la lectura de los datos podríamos tener algo de este tipo:

Actionscript: 

 

  1. var datos:XML;
  2. datos = new XML();
  3. datos.ignoreWhite = true;
  4. // cargo “libro_xml.php?timer=”+new Date().getTime()
  5. // para evitar problemas de cache
  6. datos.load(“obtener_datos.php?timer=”+new Date().getTime());
  7. datos.onLoad = function(success:Boolean) {
  8. if (success) {
  9. caja_texto.htmlText = “<font color=”#ff9900″>Cargando datos..</ font>”;
  10. var comentarios_xml = this.firstChild.childNodes;
  11. var s_texto:String;
  12. for (var i = 0; i<comentarios_xml.length; i++) {
  13. var nombre = comentarios_xml[i].attributes.nombre;
  14. var mensaje = comentarios_xml[i].attributes.mensaje;
  15. var fecha = comentarios_xml[i].attributes.fecha;
  16. var cad = ” “+nombre+” dice: <font color=”#cecece”>”+mensaje+”</ font> “
  17. s_texto += cad;
  18. }
  19. if (comentarios_xml.length<1) {
  20. caja_texto.htmlText = ” <font color=”#ff9900″> No hay mensajes que mostrar </font> “;
  21. } else {
  22. caja_texto.htmlText = s_texto;
  23. }
  24. } else {
  25. caja_texto.htmlText = “Error en la carga de datos..”;
  26. }
  27. };

Y para la insercción algo así:

Actionscript: 

 

  1. var contenedor = new LoadVars();
  2. contenedor.onLoad = function(exito) {
  3. if (exito) {
  4. if (this.resultado == 1) {
  5. status_txt.text = “Enviado!!”;
  6. } else {
  7. status_txt.text = “Error!!”;
  8. }
  9. } else {
  10. status_txt.text = “No Enviado!!”;
  11. }
  12. };
  13. cont_data.nombre = nombre;
  14. cont_data.mail = email;
  15. cont_data.mensaje = msg;
  16. cont_data.sendAndLoad(“insertar_comentario.php”, cont_data, “get”);

Bueno espero que este tutorial os haya servido de algo.. me sigue sin gustar como ha quedado, pero cualquier duda o aclaración, mediante los comentarios trataré de resolveroslas.