aqui esta el codigo, aunque esta algo largo
Código :
import mx.remoting.NetServices;
import mx.remoting.Connection;
mx.remoting.debug.NetDebug.initialize();
//Pon la URL de tu gateway aqui
NetServices.setDefaultGatewayUrl("http://localhost/remoting/gateway.php");
conexion = NetServices.createGatewayConnection();
capturaRespuesta = new Object();
servicio = conexion.getService("misquerys",capturaRespuesta);
capturaRespuesta.onStatus = function (data){
trace("Fuck un error, por:" +data.description);
}
capturaRespuesta.consulta_Result = function (data){
var proveedor:Array = new Array();
btnInsertar.enabled=true;
if (data){ //si la consulta fue correcta
if (data.getLength()){ //si tenemos al menos un registro
for (i=0; i<data.getLength();i++){ //empezamos a codificar nuestro datos
proveedor.addItem({id:data.getItemAt(i).id,nombre:unescape(data.getItemAt(i).nombre),comentarios:unescape(data.getItemAt(i).comentarios)});
}
datagrid.dataProvider= proveedor;
datagrid.getColumnAt(0).width=50;
datagrid.getColumnAt(1).width=192.5;
datagrid.getColumnAt(2).width=192.5;
datagrid.selectedIndex = 1; //dejo como seleccionado el primer item del datagrid
idtxt.text = datagrid.selectedItem.id;
nombretxt.text = datagrid.selectedItem.nombre;
comentariostxt.text = datagrid.selectedItem.comentarios;
btnModificar.enabled=btnEliminar.enabled=true;
estadotxt.text="Consulta completada";
}
else{ // sino, no tenemos registro deshabilitamos los botones de eliminar y modificar
btnModificar.enabled=btnEliminar.enabled=false;
estadotxt.text="No hay registro que mostrar";
}
}
else{
estadotxt.text="Ocurrio un error en la consulta";
}
}
capturaRespuesta.insertar_Result = function (data){
mostrarComponentes(false);
if (data){ //si la operacion fue exitosa, insertamos el nuevo registro en el datagrid
datagrid.addItem({ id: data, nombre: nombretxt.text, comentarios: comentariostxt.text });
datagrid.getColumnAt(0).width=50;
datagrid.getColumnAt(1).width=192.5;
datagrid.getColumnAt(2).width=192.5;
datagrid.selectedIndex=datagrid.getLength()-1; //dejo como seleccionado el último item del datagrid
idtxt.text = datagrid.selectedItem.id;
nombretxt.text = datagrid.selectedItem.nombre;
comentariostxt.text = datagrid.selectedItem.comentarios;
estadotxt.text ="La inserción se realizó exitosamente";
} else {
estadotxt.text ="La inserción no fue completada, intente de nuevo";
}
}
//Escuchamos lo que nos retorna el metodo modificar del servicio
capturaRespuesta.modificar_Result = function (data){
mostrarComponentes(false);
if (data){ //si la operacion fue exitosa, modificamos el datagrid
datagrid.editField(datagrid.selectedIndex,"nombre",unescape(nombretxt.text));
datagrid.editField(datagrid.selectedIndex,"comentarios",unescape(comentariostxt.text));
estadotxt.text ="La modificacón se realizó exitosamente";
}
else { //sino emitimos un mensaje de error
estadotxt.text ="La modificación no se realizo, intente de nuevo";
}
}
//Escuchamos lo que nos retorna el metodo eliminar del servicio
capturaRespuesta.eliminar_Result = function (data){
mostrarComponentes(false);
if (data){
estadotxt.text = "El registro se elimino correctamente";
aux =datagrid.selectedIndex;
datagrid.removeItemAt(datagrid.selectedIndex);
//una excepcion si el datagrid se queda vacio
//deshabilitamos los botones modificar y eliminar
if (datagrid.getLength()==0){
btnModificar.enabled=btnEliminar.enabled=false;
} else {
(aux!=0)?datagrid.selectedIndex=aux-1:datagrid.selectedIndex=0;
idtxt.text=datagrid.selectedItem.id;
nombretxt.text=datagrid.selectedItem.nombre;
comentariostxt.text=datagrid.selectedItem.comentarios;
}
} else{
estadotxt.text = "El registro no se elimino, operacion fallo";
}
}
/////////////////////////////////////////////////////////////////////////////////
/***********************Añadimos un Listener al Datadgrid***********************/
/******************************y su implementacion******************************/
datagrid.addEventListener("change",seleccion);
function seleccion (campoSelected){
idtxt.text= campoSelected.target.selectedItem.id;
nombretxt.text= campoSelected.target.selectedItem.nombre;
comentariostxt.text= campoSelected.target.selectedItem.comentarios;
}
//Nota campoSelected(campoSeleccionado) nos dirá que fila fue seleccionada
//del datagrid, y así asignaremos cada valor de la fila en su respectivo
//input text
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
/**********************Objeto que servira de Listener para**********************/
/************************los Botones y su implementacion************************/
/*Nota el parametro boton es para saber quien invoco a la funcion,
muy descriptivo no :? */
var alClick:Object = new Object;
var accion:Number;
alClick.click = function (boton){
switch(boton.target){
case btnConsultar:
servicio.consulta();
// trace("consultar");
break;
case btnInsertar:
accion = 1;
preguntatxt.text="¿Desea insertar este registro?";
idtxt.text="##";
nombretxt.text="";
comentariostxt.text="";
nombretxt.editable=true;
comentariostxt.editable=true;
mostrarComponentes(true);
break;
case btnModificar:
accion = 2;
preguntatxt.text="¿Desea modificar este registro?";
nombretxt.editable=true;
comentariostxt.editable=true;
mostrarComponentes(true);
break;
case btnEliminar:
accion = 3;
preguntatxt.text="¿Desea eliminar este registro?";
nombretxt.editable=false;
comentariostxt.editable=false;
mostrarComponentes(true);
break;
case btnSi:
switch(accion){
case 1: //insertar
servicio.insertar(escape(nombretxt.text), escape(comentariostxt.text));
// trace("confirmo insertar");
break;
case 2: //modificar id, nombre, comentarios
servicio.modificar(idtxt.text,escape(nombretxt.text),escape(comentariostxt.text));
// trace ("confirmo modificar");
break;
case 3:
servicio.eliminar(idtxt.text);
// trace ("confirmo modificar");
break;
}
break;
case btnNo:
mostrarComponentes(false);
idtxt.text = datagrid.selectedItem.id;
nombretxt.text = datagrid.selectedItem.nombre;
comentariostxt.text = datagrid.selectedItem.comentarios;
modificar.enabled=eliminar.enabled=true;
break;
case testbtn:
servicio.insertar(escape("flash registro"), escape("insertado desde flash"));
outbox.text ="Ya lo inserté"
servicio.consulta();
//trace("testbtn activated");
break;
}
}
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
/****************************Listener de los botones****************************/
btnConsultar.addEventListener("click",alClick);
btnInsertar.addEventListener("click",alClick);
btnModificar.addEventListener("click",alClick);
btnEliminar.addEventListener("click",alClick);
btnSi.addEventListener("click",alClick);
btnNo.addEventListener("click",alClick);
testbtn.addEventListener("click",alClick);
/*******************************************************************************/
/////////////////////////////////////////////////////////////////////////////////
function mostrarComponentes(booleano:Boolean){
datagrid.enabled=!booleano;
btnConsultar.enabled=!booleano;
btnInsertar.enabled=!booleano;
btnEliminar.enabled=!booleano;
btnModificar.enabled=!booleano;
cabeceratxt._visible=booleano;
idtxt._visible = booleano;
nombretxt._visible = booleano;
comentariostxt._visible = booleano;
preguntatxt._visible = booleano;
btnSi._visible=booleano;
btnNo._visible=booleano;
}
mostrarComponentes(false);
estadotxt.autoSize="left";
//estadotxt.text="Consultando";
btnInsertar.enabled=false;
btnEliminar.enabled=false;
btnModificar.enabled=false;
idtxt.enabled=false;
//servicio.consulta();
stop();
Aqui esta el gateway.php
Código :
<?php
include("./app/Gateway.php");
$gateway = new Gateway();
$gateway->setBaseClassPath(realpath("./services")."/");
$gateway->service();
?>
y el misquerys.php
Código :
<?php
class misquerys{ //<--nombre de la clase igual al nombre del archivo
function misquerys (){ //<-- constructor de la clase, nombre igual al de la clase
$this->methodTable = array( //<--definimos lo metodos que tendra nuestra clase
"insertar" => array ( //<-- Metodo insertar
"description" => "inserta un registro", //<--Comentario del metodo, describimos que hace dicho metodo
"access" => "remote", //<-- tipo de acceso del metodo, posibles valores public, remote y private
"arguments" => array("nombre","comentarios") //<-- Parametros del metodo
),
"eliminar" => array (
"description" => "elimina un registro",
"access" => "remote",
"arguments" => array("id")
),
"modificar" => array (
"description" => "modifica un registro",
"access" => "remote",
"arguments" => array("id")
),
"consulta" => array (
"description" => "consulta n campos",
"access" => "remote"
),
"query" => array (
"description" => "ejecuta un query en MySQL",
"access" => "private",
"arguments" => array ("sql","accion")
)
);
}
//IMPLEMENTACION DE LOS METODOS//
//Parametros $nombre y $comentarios los que vamos a insertar en los respectivos //
//campos de la Base de Datos, el id se genera automaticamente//
function insertar($nombre,$comentarios){
$nombre = utf8_encode($nombre); //<-- utf8_encode para que php entienda el escape() de flash
$comentarios = utf8_encode($comentarios);//<-- igual
//creamos la cadena de nuestra sentencia(query) SQL
$sql= "INSERT INTO amftable (id,nombre,comentarios) VALUES ('','".$nombre."','".$comentarios."')";
return $this->query($sql,1);//retornamos el id de nuestro registro insertado
}
//Parametro $id, para saber que registro vamos a eliminar de la Base de Datos
function eliminar ($id){
//creamos la cadena de nuestra sentencia(query) SQL
$sql= "DELETE FROM amftable WHERE id='".$id."' LIMIT 1";
return $this->query($sql,0); //retornamos 1 si se elimino correctamente y 0 en caso contrario
}
//Parametros $id, $nombre y $comentarios, el $id para saber que registro vamos a modificar
// $nombre y $comentarios para hacer la respectiva modificación de nuestro registro
function modificar ($id,$nombre,$comentarios){
$nombre = utf8_encode($nombre); //<-- utf8_encode para que php entienda el escape() de flash
$comentarios = utf8_encode($comentarios);
//creamos la cadena de nuestra sentencia(query) SQL
$sql = "UPDATE `amftable` SET `nombre` = '".$nombre."', `comentarios` = '".$comentarios."' WHERE `id` = ".$id." LIMIT 1;";
return $this->query($sql,0); //retornamos 1 si se modifico correctamente y 0 en caso contrario
}
//Parametros ninguno
function consulta (){
//creamos la cadena de nuestra sentencia(query) SQL
$sql = "SELECT * FROM amftable ORDER BY id ";
return $this->query($sql,0); //retornamos el recordset de la consulta
}
//Parametros sql que contendra la sentencia SQL que se ejecutara
//y accion en tal caso de que sea un INSERT haremos una excepcion
//y retornaremos el nuevo id del registro recien insertado
function query ($sql, $accion){
$conex= mysql_connect("localhost","root","rootpass") or die("no se puede conectar porque ".mysql_error());
mysql_select_db("AMFTEST");
$result= mysql_query($sql,$conex);
if ($accion && result){ //Excepcion del INSERT, comparamos result por si la inserción fue correcta :P
$result= mysql_insert_id();
}
mysql_close($conex);
return $result; //Consultar retonara un recordSet
//Modificar y Eliminar 1 si fue correcto o 0 en caso contrario
//Insertar retornara el id recien creado
}
}
?>