Comunidad de diseño web y desarrollo en internet online

Duda con clases y consulta mysql

Citar            
MensajeEscrito el 30 Mar 2009 04:12 pm
Hola buenas, pues resulta que acabo de crear una clase en la que hago una consulta a una base de datos y mete los resultados en un Array, eso de momento todo perfecto, el problema que tengo es a la hora de llamarla, por ejemplo:

Código :

var hacerconsulta:consulta = new consulta();
hacerconsulta.hazConsulta( { proyecto:proyecto_txt } ));


La cuestion es que yo quiero coger el array que crea en la funcion hazConsulta de la clase consulta. Como podria hacer? por que uno de los problemas que tengo es que hasta que no acabe de hacer la consulta no puedo acceder a el, entonces como podria decirmle en la clase que estoy que hasta que en la funcion hazConsulta no termine no siga?

No se si quedo muy claro... pero bueno espero que podais echarme una mano. Un saludo

Por n0ldor

55 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Mar 2009 04:24 pm
No estoy seguro de entender bien pero si hazConsulta es una funcion entonces hazla de tipo Array.

Código ActionScript :

/////La declaras normal nombre de la funcion(parametros)tipo que devuelve
function hazConsulta("parametros"):Array
{
/*
Todo tu codigo de consulta
*/

//Suponiendo que el arreglo que quieres recuperar es "tu_arreglo"
// entonces al final de todo el codigo le das un "return"

return tu_arreglo;
}

//La mandas llamar asi
var hacerconsulta:consulta = new consulta();
var mi_arreglo:Array=new Array();

//Como devuelve un arreglo igualas tu arreglo al que devuelve
mi_arreglo=hacerconsulta.hazConsulta( { proyecto:proyecto_txt } ));

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Mar 2009 04:32 pm
Mira le quite mucho codigo por el medio pero para explicar mi problema creo que me sirve lo que puse. La cuestion es que la llamada a la funcion es a hazConsulta, pero tengo que esperar a quetermine de hacer la consulta para poder hacer un return, entonces para hacer eso tengo que poner un evento. Pero si hago el return desde la funcion que ejecuta ese evento no lo devuelve a la function anterior y no a la que lo llamo en un principio... y si pongo el return fuera, decuelve el arraya antes de que hiciera la consulta...


Código :

public function hazConsulta(datos:Object):Array{
     _recibir.addEventListener(Event.COMPLETE,Respuesta);
     _recibir.addEventListener(IOErrorEvent.IO_ERROR,HayError);
   
     //Hago la petición al PHP
    _recibir.load(_enviar);

   //Funcion que se ejecuta al recibir una respuesta del PHP
   function Respuesta(event:Event) {
      return (datos_ventanas);
   }
   
       //Función que se ejectuta cuando no se puede cargar el PHP
   function HayError(event:IOErrorEvent):void {
      trace("Error al cargar la url");
   }

}


Un saludo y gracias

Por n0ldor

55 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Mar 2009 04:52 pm
Ya te entendi.......En la funcion Respuesta(); recibes todos los datos supongo y es alli donde tienes un arreglo que quieres recibir se me ocurre esta estructura.

Código ActionScript :

package{
public class consulta{
//declaras publico tu arreglo de consulta
public var arreglo:Array;

//Objeto para despachar eventos
public var obj_salida:SimpleButton=new Simplebutton();

public function hazConsulta(datos:Object):Array{
     _recibir.addEventListener(Event.COMPLETE,Respuesta);
     _recibir.addEventListener(IOErrorEvent.IO_ERROR,HayError);
   
     //Hago la petición al PHP
    _recibir.load(_enviar);
}

//*****Aqui haria algunos cambios*******//

   //Funcion que se ejecuta al recibir una respuesta del PHP
   function Respuesta(event:Event) {

     //Creo que no pouedes hacer un return en una funcion llamada desde un listener
     //....si puedes dime como me seria util :) 
     //return (datos_ventanas);
   
//Terminas de hacer todo proceso y al terminar despachas un evento,
//yo uso un objeto de salida y uno de entrada comunmente.

//Suponiendo que lo que quieres ver es datos _ventanas entonces actualizas tu arreglo publico
      arreglo=datos_ventanas;
      obj_salida.dispatchEvent(new Event("COMPLETE"));
      
   }
   
       //Función que se ejectuta cuando no se puede cargar el PHP
   function HayError(event:IOErrorEvent):void {

    //aqui podrias despachar un evento de error
      trace("Error al cargar la url");
   }


}

}



//************Desde otra clase la usas asi************//

//Pones el listener de "COMPLETE" para checar el arreglo
var hacerconsulta:consulta = new consulta();
hacerconsulta.obj_salida.addEventListener("COMPLETE",Listo);
hacerconsulta.hazConsulta( { proyecto:proyecto_txt } ));

public function Listo(e:Event){
//Aqui trazas el arreglo y veras si funciono o no :)
trace(hacerconsulta.arreglo);

} 






Espero te sirva, Saludos!!!!!

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Mar 2009 04:56 pm
Ok ahora tengo qu emarchar y no me da tiempo a probarlo, en cuanto vuelv alo pruebo y te cuento. Muchas gracias

Por n0ldor

55 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Mar 2009 07:45 am
Perfecto, me funciono. Muchas gracias ;)

Por n0ldor

55 de clabLevel



 

firefox

 

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