He seguido el siguiente tutorial "Bases de Datos con Flash y AMFPHP"
He modificado el código necesario
Y.... no me funciona.
He pensado que quizas el problema esté en que tengo que cambiar los atributos de los archivos de la carpeta "remoting", pero como estoy un poco perdido en PHP no sé por donde empezar...
De todas formas, os cuelgo el código:
Código Flash:
Código :
import mx.remoting.NetServices; import mx.remoting.Connection; mx.remoting.debug.NetDebug.initialize(); //URL del gateway aqui NetServices.setDefaultGatewayUrl("http://www.inmolacasadetussuenos.com/remoting/gateway.php"); conexion = NetServices.createGatewayConnection(); capturaRespuesta = new Object(); servicio = conexion.getService("misquerys",capturaRespuesta); capturaRespuesta.onStatus = function (data){ estadotxt ="Fuck un error, por:" +data.description; } var proveedor:Array = new Array(); var restodatos:Array = new Array(); /**********/ capturaRespuesta.consulta_Result = function (data){ 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,estado:unescape(data.getItemAt(i).estado),tipo:unescape(data.getItemAt(i).tipo),dorm:data.getItemAt(i).dorm}); restodatos.addItem({bano:data.getItemAt(i).bano,aseo:data.getItemAt(i).aseo,garaje:data.getItemAt(i).garaje,tras:data.getItemAt(i).tras,foto:unescape(data.getItemAt(i).foto),numf:data.getItemAt(i).numf,extr:unescape(data.getItemAt(i).extr),prec:data.getItemAt(i).prec}); } datagrid.dataProvider= proveedor; datagrid.getColumnAt(0).width=50; datagrid.getColumnAt(1).width=100; datagrid.getColumnAt(2).width=100; datagrid.getColumnAt(3).width=100; datagrid.selectedIndex = 0; //dejo como seleccionado el primer item del datagrid idtxt.text = datagrid.selectedItem.id; posicion = idtxt.text; estatxt.text = datagrid.selectedItem.estado; tipotxt.text = datagrid.selectedItem.tipo; dorm.text = datagrid.selectedItem.dorm; banotxt.text=restodatos[posicion].bano; aseotxt.text=restodatos[posicion].aseo; garajetxt.text=restodatos[posicion].garaje; trastxt.text=restodatos[posicion].tras; prectxt.text=restodatos[posicion].prec; extrtxt.text=restodatos[posicion].extr; 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"; } } /********/ ///////////////////////////////////////////////////////////////////////////////// /***********************Añadimos un Listener al Datadgrid***********************/ /******************************y su implementacion******************************/ function seleccion (campoSelected){ idtxt.text= campoSelected.target.selectedItem.id; posicion = idtxt.text; estatxt.text = datagrid.selectedItem.estado; tipotxt.text = datagrid.selectedItem.tipo; dorm.text = datagrid.selectedItem.dorm; banotxt.text=restodatos[posicion].bano; aseotxt.text=restodatos[posicion].aseo; garajetxt.text=restodatos[posicion].garaje; trastxt.text=restodatos[posicion].tras; prectxt.text=restodatos[posicion].prec; extrtxt.text=restodatos[posicion].extr; } datagrid.addEventListener("change",seleccion); //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="##"; estatxt.text=""; tipotxt.text=""; banotxt.text=""; banotxt.text=""; aseotxt.text=""; garajetxt.text=""; trastxt.text=""; fototxt.text=""; numftxt.text=""; extrtxt.text=""; prectxt.text=""; mostrarComponentes(true); break; case btnModificar: accion = 2; preguntatxt.text="¿Desea modificar este registro?"; mostrarComponentes(true); break; case btnEliminar: accion = 3; preguntatxt.text="¿Desea eliminar este registro?"; estatxt.editable=false; tipotxt.editable=false; dormtxt.editable=false; banotxt.editable=false; aseotxt.editable=false; garajetxt.editable=false; trastxt.editable=false; fototxt.editable=false; numftxt.editable=false; extrtxt.editable=false; prectxt.editable=false; mostrarComponentes(true); break; case btnSi: switch(accion){ case 1: //insertar servicio.insertar(escape(estatxt.text), escape(tipotxt.text), escape(dormtxt.text), escape(banotxt.text), escape(aseotxt.text), escape(garajetxt.text), escape(trastxt.text), escape(fototxt.text), escape(numftxt.text), escape(extrtxt.text), escape(prectxt.text)); // trace("confirmo insertar"); break; case 2: //modificar id, nombre, comentarios servicio.modificar(idtxt.text,escape(estatxt.text), escape(tipotxt.text), escape(dormtxt.text), escape(banotxt.text), escape(aseotxt.text), escape(garajetxt.text), escape(trastxt.text), escape(fototxt.text), escape(numftxt.text), escape(extrtxt.text), escape(prectxt.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; posicion = idtxt.text; estatxt.text = datagrid.selectedItem.estado; tipotxt.text = datagrid.selectedItem.tipo; dorm.text = datagrid.selectedItem.dorm; banotxt.text=restodatos[posicion].bano; aseotxt.text=restodatos[posicion].aseo; garajetxt.text=restodatos[posicion].garaje; trastxt.text=restodatos[posicion].tras; prectxt.text=restodatos[posicion].prec; extrtxt.text=restodatos[posicion].extr; modificar.enabled=eliminar.enabled=true; 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); /*******************************************************************************/ ///////////////////////////////////////////////////////////////////////////////// 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=true; stop();
Código PHP(remoting/services/misquerys.php):
Código :
<?php // nombre de la base de datos: misdatos // nombre de la tabla de venta y alquiler: ventalqui // nombre de los campos: "id","estado","tipo","dorm","bano","aseo","garaje","tras","foto","numf","prec","extr" 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("estado","tipo","dorm","bano","aseo","garaje","tras","foto","numf","prec","extr") //<-- 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// // variables: $id,$estado,$tipo,$dorm,$bano,$aseo,$garaje,$tras,$foto,$numf,$prec,$extr function insertar($estado,$tipo,$dorm,$bano,$aseo,$garaje,$tras,$foto,$numf,$prec,$extr){ $estado = utf8_encode($estado); //<-- utf8_encode para que php entienda el escape() de flash $tipo = utf8_encode($tipo); $dorm = utf8_encode($dorm); $bano = utf8_encode($bano); $aseo = utf8_encode($aseo); $garaje = utf8_encode($garaje); $tras = utf8_encode($tras); $foto = utf8_encode($foto); $numf = utf8_encode($numf); $prec = utf8_encode($prec); $extr = utf8_encode($extr); //creamos la cadena de nuestra sentencia(query) SQL $sql= "INSERT INTO ventalqui (id,estado,tipo,dorm,bano,aseo,garaje,tras,foto,numf,prec,extr) VALUES ('','".$estado."','".$tipo."','".$dorm."','".$bano."','".$aseo."','".$garaje."','".$tras."','".$foto."','".$numf."','".$prec."','".$extr."')"; 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 ventalqui 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,$estado,$tipo,$dorm,$bano,$aseo,$garaje,$tras,$foto,$numf,$prec,$extr){ $estado = utf8_encode($estado); //<-- utf8_encode para que php entienda el escape() de flash $tipo = utf8_encode($tipo); $dorm = utf8_encode($dorm); $bano = utf8_encode($bano); $aseo = utf8_encode($aseo); $garaje = utf8_encode($garaje); $tras = utf8_encode($tras); $foto = utf8_encode($foto); $numf = utf8_encode($numf); $prec = utf8_encode($prec); $extr = utf8_encode($extr); //creamos la cadena de nuestra sentencia(query) SQL $sql = "UPDATE `ventalqui` SET `estado` = '".$estado."', `tipo` = '".$tipo."' , `dorm` = '".$dorm."' , `bano` = '".$bano."' , `aseo` = '".$aseo."' , `garaje` = '".$garaje."' , `tras` = '".$tras."' , `foto` = '".$foto."' , `numf` = '".$numf."' , `prec` = '".$prec."' , `extr` = '".$extr."' 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 ventalqui ORDER BY estado "; 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("http://www.inmolacasadetussuenos","milogin","mipaso") or die("no se puede conectar porque ".mysql_error()); mysql_select_db("misdatos"); $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 } } ?>
Gracias por adelantado