Comunidad de diseño web y desarrollo en internet online

Vida de variables

Citar            
MensajeEscrito el 06 Dic 2005 05:04 am
En este código,

Código :

var filas:Number;
capturaRespuesta.filas_Result = function( data ){
   lbl_filas.text=data;
   filas=data;
}
serv.filas(SQL,tabla);
trace(filas);
trace(lbl_filas.text);


el "trace(filas)" me imprime "undefined" y el del label, está vacío, sin embargo el valor del label.text en pantalla es el correcto. Pregunto: ¿Por qué? y ¿Cómo lo hago para poder disponer de ese valor fuera de la función?

Saludos :)

Por [Sheer]

Claber

283 de clabLevel

1 tutorial

Genero:Masculino  

Barcelona

opera
Citar            
MensajeEscrito el 06 Dic 2005 03:14 pm
bien

serv.filas es una llamada a un servicio de Remoting, lo que lleva un tiempo e hacer la peticion al servidor y devolver la respuesta, nada que ver con los milisegundos que pasan entre funcion y funcion del código de AS. Por lo general, y despues de haber llamado a la funcion "serv.filas" una vez que te devuelva el valor ya lo podrías usar en cualquier parte

ACLARACION : El problema es que estas ejecutando el trace ANTES del filas_Result, por lo que "filas" no está definido... (see.. aunque el trace este despues, como ya dije, es una llamada a un servicio externo de AS)

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 06 Dic 2005 04:17 pm
Agradezco de veras la explicación, pero hay algo que no encaja o no acabo de entender :cry:

En la label si que muestra el valor devuelto, pero a la hora de hacer el trace de label.text, no lo lee, estando claramente presente.

Entonces, ¿cómo deberíamos estructurar estas pocas filas de código para que funcione? y.. según he entendido.. ¿ejecuta el código después de la función, ANTES que esta "actue"? :shock:

Saludos y gracias!

Por [Sheer]

Claber

283 de clabLevel

1 tutorial

Genero:Masculino  

Barcelona

opera
Citar            
MensajeEscrito el 06 Dic 2005 04:31 pm
tienes tu codigo no

haces una llamada al servicio "filas" (solo haces la llamada, no recives una respuesta)

sigues ejecutando tu codigo,
trace(filas) trace(no se que)

llega una respuesta del servicio "filas"
la funcion capturarRespuesta.filas_Result se activa manejando los datos

----------------------

todo esto son milesimas de segundo, pero al llamar a un servicio (serv.filas) lo que estas es lanzando una llamada fuera del swf, que por muy rápida que sea, esta sale del swf, se dirige al servidor,busca el servicio, lo ejecuta, retorna un valor, vuelve al swf con ese valor, que por muy rapido que lo haga, siempre se tarda mas que entre dos lineas de codigo ...

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 06 Dic 2005 05:02 pm
Me acabo de dar cuenta que con trace si que funciona (que una función en php te devuelva más de un valor), pero a la hora de coger ese valor y colocarlo en pantalla sólo lo hace con el último.

Creo que estoy intentando mezclar constantemente conceptos de programación estructurada y por eso tantos dolores de cabeza...

Entonces, si quiero recibir varios valores y colocárlos en pantalla en un mismo frameKey y "del tirón", ¿Se podría hacer?

Por [Sheer]

Claber

283 de clabLevel

1 tutorial

Genero:Masculino  

Barcelona

opera
Citar            
MensajeEscrito el 06 Dic 2005 05:05 pm
si
pero no se a que te refieres!

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 06 Dic 2005 05:24 pm
Me explico :P

Tengo este código en AS:

Código :

capturaRespuesta.consultar_Result = function( data ){ 
   createClassObject(mx.controls.Label,"lbl_"+x,this.getNextHighestDepth(),{text:"lbl_"+x, _x:x, _y:200.3, _width:100});
}

for(fila:Number=0;fila<=2;fila++)
{
   for(columna:Number=0;columna<=columnas-1;columna++)
   {
      serv.consultar(fila,columna,SQL);
   }
}


y este en PHP:

Código :

function consultar($filas, $columnas, $sql)
{
   $result=mysql_result(mysql_query($sql), $filas, $columnas);
   return $result;
}


Pues bien, lo que quiero es que me cree labels donde su texto sea el valor devuelto por la función. Si pongo un trace(data) me los muestra, pero a la hora de crear las labels, sólo lo hace con la última.

¿Cual es el método? :oops:

Espero darme a entender, saludos ^^

Por [Sheer]

Claber

283 de clabLevel

1 tutorial

Genero:Masculino  

Barcelona

opera
Citar            
MensajeEscrito el 06 Dic 2005 05:29 pm
no entiendo lo del SQL... las filas y columnas, pero lo veo poco optimo, mas que nada porque php te puede devolver un recordset entero...

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 06 Dic 2005 05:50 pm
¿y desde el dataset se pueden recoger registros devueltos por una funcion en PHP (con un array, supongo) y, posteriormente, desde flash mostrarlos con labels (sin datagrid) através del dataset?

Saludos ^^

Por [Sheer]

Claber

283 de clabLevel

1 tutorial

Genero:Masculino  

Barcelona

opera
Citar            
MensajeEscrito el 06 Dic 2005 05:53 pm
capturarRespuesta.filas_Result = function(data) {

// lo importante es data.items
var unArray:Array = data.items;


tuLabel.text = unArray[numero].campo;


};

numero es el numero de fila del array,

campo es el nombre del campo por ejemplo

unArray[0].nombre;
unArray[0].edad;
unArray[0].ciudad;
Facilita mucho las cosas, eso

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 06 Dic 2005 06:08 pm
y en PHP, sabes que función podría utilizar para devolver el array?

Thx por tu ayuda :)

Saludos ^^

Por [Sheer]

Claber

283 de clabLevel

1 tutorial

Genero:Masculino  

Barcelona

opera
Citar            
MensajeEscrito el 06 Dic 2005 06:13 pm
$result=mysql_query($sql);
return $result;

si el result es un recordset lo devolverá como tal...

es decir un "SELECT * FROM tabla" al ejecutarlo, si haces un return de un query... es lo que tiene Remoting, que pasa objetos de PHP a objetos de AS...

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 06 Dic 2005 06:35 pm
La verdad es que si que ayuda, sí. Sólo que, cuando parecía que todo empezaba a funcionar, sigue mostrándome solo "lo último".

Código :

(PHP) 
function consultar($sql)
{
   $query=mysql_query($sql);
   return $query;
}

(AS) //quiero que cree tres labels (lbl_0, lbl_1, lbl_2) y que muestre los tres primeros registros de la columna id.

capturaRespuesta.consultar_Result = function( data ){ 
   var unArray:Array = data.items;
   var x:Number=0;
   for(var filas:Number=0;filas<=2;filas++)
   {
createClassObject(mx.controls.Label,"lbl_"+filas,this.getNextHighestDepth(),{text:unArray[filas].id, _x:x, _y:200, _width:100}); //creamos el label con nombre lbl_(filas)

      x+=20; //separación
   }
}

serv.consultar("SELECT * FROM "+tabla+" LIMIT 0,30");


Lo único que hace es crearme una label llamada lbl_2 con el tercer valor de la columna. ¿Que se me escapa esta vez?

Espero no estar dándote mucho trabajo :oops:

Saludos ^^

Por [Sheer]

Claber

283 de clabLevel

1 tutorial

Genero:Masculino  

Barcelona

opera

 

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