Prefacio
Para entender el funcionamiento del código enlazaremos esta función con la interfaz que creamos en el post de Mi Primer Formulario, y a la vez este código lo puedes implementar con la Clase DatosLoader.as que hemos desarrollado. Recuerda todo lo que estamos desarrollando en este post lo puedes integrar con los demas post que estamos desarrollando, todo con el objetivo para poder facilitarte la comprensión.
Necesitamos crear algun archivo ActionScript para que sea conectado a la interfaz de usuario, este archivo lo llamaremos interfaceCode.as y lo ubicaremos dentro de la misma carpeta donde este el archivo .mxml de la aplicaciòn principal. Un ejemplo de como quedaria:
Para poder crear el archivo interfaceCode.as tendremos que ingresar dentro del IDE de Flex Builder 3 a File > New > ActionScript File y una vez nos salga la ventana de dialogo, solamente tendremos que seleccionar la ubicación donde queremos guardar el archivo y le asignamos el nombre.
Ahora empecemos con el còdigo, primero importaremos las bibliotecas DatosLoader para instanciar un objeto y así enviar la solicitud ser procesada -para una mejor comprensión lee aquí para entender la clase DatosLoader-, las clases MouseEvent son para que responda bien la aplicación cuando hagamos el llamado a la función al momento que el usuario haga clic en el boton dentro de la interfaz y la clase URLVariables la utilizaremos para empaquetar los datos capturados, el código es el siguiente:
// ActionScript file import com.gestiondatos.DatosLoader; import flash.events.Event; import flash.events.MouseEvent; import flash.net.URLVariables; import mx.events.FlexEvent;
Seguido declaremos la variable directorio que almacenará la ubicación del directorio donde estarán guardados los Script PHP que utilizaremos -la estructura del los Script PHP lo puedes revisar aquí, de ahi puedes adaptar ese código PHP a este proyecto-. y un objeto llamado consultaLoader de la clase DatosLoader. Támbien creamos la variable datosXMLList que cargará el XML leido por la clase DatosLoader -este contendrá las etiquetas hijos que se encuentren dentro de channel, para la saber como es la estructura de un Documento XML puedes revisar aquí-.
// recuerda que aquí tienes que reemplazar la dirección del servidor que tu utilizas. private var directorio:String = "http://localhost:8088/GestionDatos/src/ScriptPHP/"; private var datosXMLList:XMLList; private var consultaLoader:DatosLoader = new DatosLoader();
La función encargada de realizar el ingreso de nuevos registros a la base de datos tendrá el nombre de capturaDatos; dentro de la función crearemos en primera instancia el objeto que llevará empaquetado como atributos todos los datos del formulario, tendrá como nombre capVrs del tipo URLVariables. Luego se asigna al objeto consultaLoader un detector de eventos con los parámetros Event.COMPLETE y la función resCapturaDatos. Por último utilizamos el método gestion de la clase DatosLoader y pasamos como parámetros la variable directorio concatenando el nombre del archivo PHP y el objeto capVrs.
private function capturaDatos(e:MouseEvent):void { var capVrs:URLVariables = new URLVariables(); capVrs.nombre = txtNombre.text; capVrs.apellido = txtApellido.text; capVrs.email = txtEMail.text; consultaLoader.addEventListener(Event.COMPLETE, resCapturaDatos); consultaLoader.gestion(directorio + "capturaInfo.php", capVrs); }
Dentro de la función resCapturaDatos estaremos cargando las respuestas que se recibirán de la etiqueta message del Script PHP generado como Documento XML, con esto lo mandaremos a imprimir en la etiqueta text txtMensaje. Luego limpiaremos el formulario con una función llamada limpiaForm -la desarrollaremos más adelante- y por último removemos el evento -esto último es para eliminar consumo de memoria innecesaria y respuestas no deseadas ante eventos-.
private function resCapturaDatos(e:Event):void { datosXMLList = consultaLoader.obtenerDatosXML(); txtMensaje.text = datosXMLList.message; limpiaForm(); consultaLoader.removeEventListener(Event.COMPLETE, resCapturaDatos); }
Extraemos el XML devuelto con el método obtenerDatosXML de la clase DatosLoader y luego le asignamos el valor de la etiqueta message a txtMensaje. Ahora veamos la función limpiaForm:
private function limpiaForm():void { txtNombre.text = ""; txtApellido.text = ""; txtEMail.text = ""; }
La función es sencilla, solo solicitamos borrar el contenido de las etiquetas pasando el valor «» con la propiedad text. Ahora necesitamos implementar esta función al botón btnCapturar, entonces nos pasaremos al archivo de la aplicación principal con extensión .mxml y dentro haremos referencia al archivo interfaceCode.as haciendo uso de la etiqueta Script que irá por debajo de la etiqueta de apertura Application -este archivo es el que creamos en este post-. Veamos el código:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" backgroundColor="#FFFFFF" backgroundGradientColors="[#008AFF, #EFEFF0]" backgroundGradientAlphas="[0.0, 1.0]" width="480" height="280"> <mx:Script source="interfaceCode.as"/>
Después con el evento click asignamos la función capturaDatos al botòn btnCapturar que esta ubicado dentro de la etiqueta ControlBar, así:
<mx:ControlBar> <mx:Button id="btnCapturar" label="Capturar" click="capturaDatos(event)"/> <mx:Button id="btnModificar" label="Modificar"/> <mx:Button id="btnLimpiar" label="Limpiar"/> </mx:ControlBar>
Si unes todo lo visto en este post te estaria funcionando perfectamente -claro si haz desarrollado previamente la base de datos-. Practicamente es la misma secuencia de código la que estarías utilizando si deseases modificar datos, el único código a modificar seria cambiar el nombre de la función de capturaDatos a modificaDatos -o cualquier otro-, y cambiar el nombre del archivo PHP a utilizar -recuerda que dentro del Script PHP tendrás que adaptarlo para que te funcione como un UPDATE dentro de la base de datos-.
Veamos como ha quedado el código completo:
// ActionScript file import com.gestiondatos.DatosLoader; import flash.events.Event; import flash.events.MouseEvent; import flash.net.URLVariables; import mx.events.FlexEvent; // recuerda que aquí tienes que reemplazar la dirección delservidor que tu utilizas. private var directorio:String = "http://localhost:8088/GestionDatos/src/ScriptPHP/"; private var datosXMLList:XMLList; private var consultaLoader:DatosLoader = new DatosLoader(); private function capturaDatos(e:MouseEvent):void { var capVrs:URLVariables = new URLVariables(); capVrs.nombre = txtNombre.text; capVrs.apellido = txtApellido.text; capVrs.email = txtEMail.text; consultaLoader.addEventListener(Event.COMPLETE, resCapturaDatos); consultaLoader.gestion(directorio + "gestionPorDUI.php", capVrs); } private function resCapturaDatos(e:Event):void { datosXMLList = consultaLoader.obtenerDatosXML(); txtMensaje.text = datosXMLList.message; limpiaForm(); consultaLoader.removeEventListener(Event.COMPLETE, resCapturaDatos); } private function limpiaForm():void { txtNombre.text = ""; txtApellido.text = ""; txtEMail.text = ""; }
Hola, espero te haya gustado y te sea util la información que hayas encontrado, esperamos que sigas aprendiendo y te invito a que revises todo el blog. Estamos trabajando para editar la información dentro del blog para que puedas encontrar diversos temas referentes a Flex Builder 3 y ActionScript 3.0.
Apoya al proyecto rias4u ingresando aquí!!! =D