Comunidad de diseño web y desarrollo en internet online

Duda de sintaxis

Citar            
MensajeEscrito el 08 Dic 2005 06:21 pm
Hola. Quisiera saber la sintaxis a la hora de recoger un registro, de este modo:

Código :

var consulta:Array = data //recibe el query
trace(consulta[0].nombre) //primer registro de nombre


pero ahí donde pone nombre que sea una variable, así:

Código :

var consulta:Array = data //recibe el query
var a:String = "nombre";
trace(consulta[0]."variable a") //si pongo "consulta[0].a" me dice undefined


Espero haberme explicado

Saludos ^^

Por [Sheer]

Claber

283 de clabLevel

1 tutorial

Genero:Masculino  

Barcelona

opera
Citar            
MensajeEscrito el 08 Dic 2005 06:59 pm
No te entiendo muy bien, pero si lo que quieres es recoger los datos de un recordset devuelto a traves de AMF y Remoting mira a ver si te sirve esto..

Código :

var rst:RecordSet;
   var row:Object;
   rst = res.result; //Asignamos el recordset de remoting

   for (var c:Number = 0;c < rst.length;c++)
   {
      row = rst.getItemAt(c); //Obtenemos registro a registro todos los hijos
      trace(row.nombre);
      //row.xxxxxx   xxxxxx es el nombre de la columna de la tabla en mySQL
   }

Por MorphX

SWAT Team

982 de clabLevel

3 tutoriales

  SWAT

La Telaraña Digital

firefox
Citar            
MensajeEscrito el 08 Dic 2005 08:22 pm
Sí, creo que ese recordset (pensaba que era otra cosa) es la solución aunque, cuando voy a utilizarlo me dice:

Código :

**Error** Escena=Escena 1, capa=código, fotograma=1:Línea 23: No hay ninguna propiedad que lleve por nombre 'length'.
        for (var c:Number=0;c<rst.length;c++) 

**Error** Escena=Escena 1, capa=código, fotograma=1:Línea 25: No hay ningún método que lleve por nombre 'getItemAt'.
            row = rst.getItemAt(c); 


Lo que hago es importar "import mx.data.types.RecordSet;" ¿No es correcto, no?

Por [Sheer]

Claber

283 de clabLevel

1 tutorial

Genero:Masculino  

Barcelona

opera
Citar            
MensajeEscrito el 08 Dic 2005 09:15 pm
Nada, nada, ya he visto que es "import mx.remoting.RecordSet;" :wink:

Voy a hacer pruebas, a ver que consigo ^^

Por [Sheer]

Claber

283 de clabLevel

1 tutorial

Genero:Masculino  

Barcelona

opera
Citar            
MensajeEscrito el 08 Dic 2005 09:42 pm
Sigo exactamente con el mismo problema. Me explico:

Código :

(PHP)
function Datos(){
   $servidor = "localhost";
   $usuario = "root";
   $pass = 240;
   $bbdd = "amfphp";
   $tabla = "prueba";
   $columnas = 3;
   if (!mysql_connect($servidor, $usuario, $pass)) $estado = "Error en la conexion";
   else $estado = "Conectado";
   mysql_select_db($bbdd);
   $sql = "SELECT * FROM ".$tabla." LIMIT 0,30";
   $query=mysql_query($sql);
   $filas=mysql_num_rows($query);
   for($c=0;$c<=$columnas-1;$c++){
      $nombre_campo[$c]=mysql_field_name($query,$c); //guardo el nombre de cada columna en un array
   }
   $datos=array($servidor, $usuario, $pass, $bbdd, $tabla, $filas, $columnas, $estado, $query, $nombre_campo);
   return $datos;      
}

Código :

(AS)
Servidor = new AMFPHP("http://localhost/project/amfphp/gateway.php", "mostrarTabla");
Servidor.eventos.Padre = this;
Servidor.eventos.onDatos=function(data){
   var datos:Array = data;
   var consulta:Array = data[8].items; //query
   lbl_servidor.text=datos[0];
   lbl_usuario.text=datos[1];
   lbl_pass.text=datos[2];
   lbl_bbdd.text=datos[3];
   lbl_tabla.text=datos[4];
   lbl_filas.text=datos[5];
   lbl_columnas.text=datos[6];
   lbl_estado.text=datos[7];
   var ncampos:Array = data[9]; //(id,nombre,comentarios)
   
   var rst:RecordSet;
   var row:Object; 
     rst = data[8];

   var x:Number=260.0;
   var y:Number=70.3;
   for(var c:Number=0;c<=datos[6]-1;c++){
      createClassObject(Label,"lbl_"+ncampos[c],this.getNextHighestDepth(),{text:ncampos[c], _x:x, _y:y, _width:100});
      row = rst.getItemAt(c);
      for(var f:Number=0;f<=datos[5]-1;f++){
         y+=30; //bajamos
         createClassObject(Label,"lbl_"+f+ncampos[c],this.getNextHighestDepth(),{text:row.ncampos[c], _x:x, _y:y, _width:100}); 
      }
      y=70.3;
      x+=70;
      trace(row.ncampos[c]); //quiero que me muestre el primer elemento de cada columna
   }
}

Servidor.procesa("Datos");



Obtengo tres bonitos traces con "undefined". Espero darme a entender esta vez, con todo este código :P

Por [Sheer]

Claber

283 de clabLevel

1 tutorial

Genero:Masculino  

Barcelona

opera
Citar            
MensajeEscrito el 09 Dic 2005 12:20 am
Lo he conseguido (por fin!!).

La sintaxis correcta no es "row.ncampos[f]" sinó "row[ncampos[f]]" ^^

Por [Sheer]

Claber

283 de clabLevel

1 tutorial

Genero:Masculino  

Barcelona

opera
Citar            
MensajeEscrito el 09 Dic 2005 12:36 am
Correcto [Sheer], pero por lo que veo en tu php, no estas devolviendo en el servicio un recordset, sino un array, solo que en AS lo estas tratando como un RecordSet, y te vá bien, yo en tu lugar pondría esto en tu PHP:

Código :

function Datos(){
   $servidor = "localhost";
   $usuario = "root";
   $pass = 240;
   $bbdd = "amfphp";
   $tabla = "prueba";
   //$columnas = 3;
   if (!mysql_connect($servidor, $usuario, $pass)) 
        $estado = "Error en la conexion";
   else 
        $estado = "Conectado";

   mysql_select_db($bbdd);

   $sql = "SELECT * FROM ".$tabla." LIMIT 0,30";

   return mysql_query($sql);
} 


y si quieres mostrar los datos de conexión, puedes crearte otro servicio que simplemente haga eso, mostrarte esos datos...

De todos modos si necesitabas toooda esa información extra para test pues vale, pero para algo serio, te recomiendo que devuelvas directamente el recordset de php.

Saludos...

Por MorphX

SWAT Team

982 de clabLevel

3 tutoriales

  SWAT

La Telaraña Digital

firefox
Citar            
MensajeEscrito el 09 Dic 2005 04:25 am
En el array tan sólo devuelvo datos de conexión, nombre de registros, filas, etc. Algo necesario para lo que estoy haciendo (muestro los registros de una bbdd manualmente, como un datagrid, por eso necesito ciertos datos para poderlo utilizar con cualquier tabla)

Si te fijas, asigno el recordset a la variable query, y esta es devuelta dentro de un array, así que simplemente, es un recordset dentro de un array, por lo que es lo mismo que devolver directamente un mysql_query(sql).

Saludos ^^

Por [Sheer]

Claber

283 de clabLevel

1 tutorial

Genero:Masculino  

Barcelona

opera
Citar            
MensajeEscrito el 09 Dic 2005 08:34 am
Cierto, ahora ví que a "rst" asignas la posición 8 de datos que es el recordset, no lo ví :oops: solo me fijé en el php

jejeje, perfecto entonces ^^

Por MorphX

SWAT Team

982 de clabLevel

3 tutoriales

  SWAT

La Telaraña Digital

firefox

 

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