Comunidad de diseño web y desarrollo en internet online

Amfphp y flex: duda.

Citar            
MensajeEscrito el 19 Nov 2011 09:08 pm
Hola, estoy tratando de hacer una funcion para ejecutar consultas hacia mysql y que esta funcion me devuelva los registros como un arraycollection, pero el problema que tengo es que nose como devolver esos datos, pongo un ejemplo de lo que quiero.


Código ActionScript :

public function seleccionar_registros(consulta:String):ArrayCollection
      {
           gateway = new RemotingConnection("http://localhost/Amfphp/gateway.php");
           gateway.call("Consulta.consulta", new Responder(onResult, onFault), consulta);
         
         aqui necesito devolver los datos
      }

     public function onResult(result:String) : void
      {
              aqui tengo que devolver los datos, ni idea como, y nose si se puede   
      }
     
    public function onFault(fault:String) : void
    {
          
    }
   


Ni idea si se puede hacer eso, pero ta es un ejemplo de lo que quiero , tambien probe

Código ActionScript :

public function seleccionar_registros(consulta:String):ArrayCollection
      {
          var respuesta:ArrayCollection;
           gateway = new RemotingConnection("http://localhost/Amfphp/gateway.php");
           gateway.call("Consulta.consulta", new Responder(
         function(result){
   respuesta = result;
         }, 
        function(fault:String )
        {
   respuesta = "error";
     }), consulta);
         
       
      }

   

Pero tampoco funciona, osea no me cambia el valor de "respuesta" ya que parece estar encapsulado y ni idea si puede cambiar el valor de una variable exterior.
Muchas gracias por la ayuda de siempre, saludos.

Por Crysis

18 de clabLevel



 

opera
Citar            
MensajeEscrito el 21 Nov 2011 01:54 pm
No sabía que había una clase RemotingConnection, mejor que usar directamente NetConnection, supongo que automatiza la conexión. En cuanto al llamado, los resultados deberían llegar en el onResult, y si hay errroe en el onFault. Agrega un trace o algo que te muestre el mensaje de error, usa el flash player debugger para que te muestre posibles errores, usa http://www.charlesproxy.com para ver el tráfico con tu back-end

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 Nov 2011 03:40 pm
Hola, no tengo ningun error con la entrega de datos desde php hasta flex, pero nose como devolver un arraycollection, mi aplicacion utiliza modulos, desde cada modulo hago consultas hacia mysql, por eso quiero tener una función en el archivo principal de mi aplicación, pero nose como hacer esto:

Código Flex :

public function seleccionar_registros(consulta:String):ArrayCollection
      {
          var respuesta:ArrayCollection;
           gateway = new RemotingConnection("http://localhost/Amfphp/gateway.php");
           gateway.call("Consulta.consulta", new Responder(
         function(result){
              respuesta = result;
           aqui el problema, nose como hacer para cambiar el valor de "respuesta"

         }, 
        function(fault:String )
        {
               respuesta = "error";
     }), consulta);
         
       
      }

Por Crysis

18 de clabLevel



 

opera
Citar            
MensajeEscrito el 21 Nov 2011 03:43 pm
Ok, lee con atención mi respuesta, digo donde deberías recibir cada cosa según dice tu Responder. ¿Estás haciendo un return desde PHP? ¿Est{as usando Charles u otro sniffer para ver que devuelve?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 Nov 2011 04:22 pm
Hola, ya hice un trace y me devuelve bien los datos desde php, pero nose como tratar esos datos, osea yo lo que quiero es que me devuelva la funcion seleccionar_registros los datos que le entrego php, por ejemplo si yo llamara desde un modulo:
var datos_de_la_bd:ArrayCollection = Application.application.seleccionar_registros("Select * FROM tabla");

Por Crysis

18 de clabLevel



 

opera
Citar            
MensajeEscrito el 21 Nov 2011 07:01 pm
En el onResult recibes entonces un ArrayCollection, haz la llamada con el resultado

Código ActionScript :

 public function onResult(result:Object) : void
      {
              Application.application.seleccionar_registros(result as ArrayCollection)
      }


Usar Application.application es como usar root en flash, rompe la encapsulación, pero bueno, tu conocerás mejor la arquitectura de tu aplicación

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 Nov 2011 07:15 pm
Hola Jorge gracias por el aguante..
No entendi el codigo que pusiste, la funcion seleccionar_registros es la funcion que se comunica a php, osea yo desde los modulos llamo a la funcion seleccionar_registros y le paso como parametro la consulta , entonces seleccionar_registros se conecta con el servidor

Código Flex :

function seleccionar_registros(consulta_sql:String):ArrayCollection{
           gateway = new RemotingConnection("http://localhost/Amfphp/gateway.php");
           gateway.call("Consulta.consulta", new Responder(onResult, onFault), consulta_sql);
         
         aqui necesito devolver los datos al modulo
}

public function onResult(result:String) : void
{
        aqui tengo que devolver los datos, ni idea como, y nose si se puede   
}
     
public function onFault(fault:String) : void
 {
          
}


Nose si me entiendes lo que necesito hacer, el problema que tengo es que nose como devolver los datos desde seleccionar_registros hasta el modulo que me lo pidio

Por Crysis

18 de clabLevel



 

msie8
Citar            
MensajeEscrito el 21 Nov 2011 07:24 pm
Dos cosas:

1. Pasar un query como string a un servicio sin mas es un problema de seguridad, nada impide que alguien inyecte un "delete * from users", pasa solo los datos indispensables, sino nada
2. Usualmente los servicios son parte de una clase externa que forma parte de la capa de datos, en una aplicación, sobre todo si tiene muchos módulos, el modelo (un singleton) debería acceder a un servicio que consulta los datos. Si todo eso te suena a chino, entonces deberías repensar la arquitectura de tu aplicación, si sabes de lo que hable ... pues entonces mira como hacer que el modelo consulte los datos que le requieran las vistas. Flex tiene varios frameworks que atacan el problema, aquí hago un pantallazo, http://flash-db.com/Main/2011/05/15/flex-frameworks/

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 22 Nov 2011 12:23 am
Tenes mucha razon sobre el problema de seguridad, pero no le preste atencion ya que la pc que usaba como servidor no estaba conectada al internet, y me dije, quien va a estar haciendo consultas sql mas que yo, pero no habia pensado si alguna vez necesito conectar el servidor al internet, gran problema.
La verdad no te entendi mucho sobre el punto dos, pero vi este tutorial , y pareciera que estaba haciendo las cosas muy mal :lol: , por lo menos me dio una idea, muchas gracias jorge.

Por Crysis

18 de clabLevel



 

opera

 

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