Comunidad de diseño web y desarrollo en internet online

Dudas sobre Tutorial "Bases de Datos con Flash y AMFPHP

Citar            
MensajeEscrito el 01 Feb 2006 11:28 am
buenos días.

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

Por perillan

100 de clabLevel



Genero:Masculino  

La Mancha profunda....

msie
Citar            
MensajeEscrito el 01 Feb 2006 05:25 pm
Buenas

Creo que he asustado un poquito a la gente con tanto código :?

El problema es que he seguido todos los pasos del tutorial Bases de Datos con Flash y AMFPHP y no me funciona.

Imagino que el problema es que no encuentra la Base de datos porque los archivos PHP los he subido como marcaba el tuto y he cambiado la url de la Bd y he puesto el login y password correctamente.

Por cierto: ¿Los archivos que se suben al servidor (carpeta remoting) hay que cambiarle los permisos de lectura y escritura ??

Espero que haya aclarado el problema

Gracias
Un saludote

Por perillan

100 de clabLevel



Genero:Masculino  

La Mancha profunda....

msie
Citar            
MensajeEscrito el 01 Feb 2006 06:11 pm
Dime las versiones de php y mysql con que trabaja tu servidor, y que version de AMFPHP instalaste?


saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 01 Feb 2006 06:29 pm
Gracias por contestar

Versiones:
phpMyAdmin 2.6.3-pl1
MySQL 3.23.58

Version 0.9.0 beta de AMFPHP


De la version de PHP no estoy seguro
¿como lo puedo averiguar?

Lo siento pero estoy un poco pez

Gracias de Nuevo

Por perillan

100 de clabLevel



Genero:Masculino  

La Mancha profunda....

msie
Citar            
MensajeEscrito el 01 Feb 2006 06:41 pm
Metete en phpmyadmin, http://localhost/phpmyadmin/ , pones el lenguaje en español para que lo leas bien, y alli hay un link que dice mostrar informacion de PHP.

De todas maneras te aconsejo que instales MySQL 4.0.24

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 01 Feb 2006 06:49 pm
El problema es que te estoy dando datos de las versiones que utiliza mi servidor web.... y no puedo cambiar nada

Creo que voy a desinstalar el AMFPHP del servidor web y voy a empezar de nuevo con tu tutorial. Pero me temo que aún así no voy a conseguir nada porque lo que he colgado en el servidor web es exactamente los archivos ejemplo que tú pusistes en el tuto.

Quizás habré cometido algún error.

Por cierto el tema de los permisos de lectura/escritura con los archivos AMFPHP tendría algo que ver...?

gracias

Por perillan

100 de clabLevel



Genero:Masculino  

La Mancha profunda....

msie
Citar            
MensajeEscrito el 01 Feb 2006 07:33 pm
nop, esos archivos solo se descomprimen y se crea el gateway si es la version AMFPHP 0.9 la que estas instalando, aunque te recomiendo que instales AMFPHP 1 Milestone 2 o 3, solo es descromprimir los archivos y ya, ni siquiera tienes que crear el gateway, en el tutorial hablo sobre algunas ventajas que tiene esta nueva version.

Pero una vez más debe asegurarte de que version de php estas usando, te lo digo porque AMFPHP 0.9 no trabaja con PHP5 ;)

Los archivos del tutorial los probe con php4 y php5 y funcionaron correctamente ambos, claro instalando AMFPHP 0.9 y AMFPHP 1 Milestone 2 respectivamente para cada version de php.

saludos ^^

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 01 Feb 2006 07:53 pm
Gracias Maikel empezaré desde cero con lo que me comentas.

Un saludo

Por perillan

100 de clabLevel



Genero:Masculino  

La Mancha profunda....

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.