Comunidad de diseño web y desarrollo en internet online

Recorrer campos de texto con un for

Citar            
MensajeEscrito el 25 Ene 2007 05:20 pm
Hola a todos

Pues tengo esta duda que es una tonteria pero me tiene hasta los....

Tengo 4 campos de texto dinamico: nombre1, titulo1, nombre2, titulo2
Los datos de cada campo los recojo de una base de datos, pero para hacer las cosas mas sencillas estoy creando una pequeña funcion, que recorra los campos de texto e inserte su valor correspondiente

El problema es que no soy capaz de concatenar una variable, digamos "i" a los nombres de los campos dinamicos, estilo

Código :

for (i=1;i<=4;i++)
  "nombre"+i+".text" = "loquesea";
  "titulo"+i+".text" = "loquesea";
}

Obviamente esto es erroneo, pero estoy bastante espeso ya y no doy con la manera de hacerlo correctamente. Seguro que esta chupao y no me doy cuenta.:roll:

¿Alguien me echa una mano?
Saludos

Por umek

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Ene 2007 05:28 pm
Prueba asi:

Código :

nombre1="hola";
nombre2="como";
nombre3="estas";

for (i=1;i<=4;i++){
 var Nombre = eval("nombre"+i);
 var Titulo = eval("titulo"+i);
}


Salut!

Por loisin

65 de clabLevel



Genero:Masculino  

Colonia-Castells

firefox
Citar            
MensajeEscrito el 25 Ene 2007 05:36 pm
creo que no me sirve tu codigo..
Lo que pretendo es no tener que asignar manualmente los valores de los campos de texto, sino hacer un for para recorrer todos e ir introduciendo los valores rapidamente.

Gracias de todas formas :wink:

Por umek

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Ene 2007 05:42 pm

Código :

for (i=1; i<=5; i++) {
   this["titulo"+i].text = "Hola que tal, soy colosal";
}


A ver con ese ^^

Por infernalpr

236 de clabLevel



 

LoL

firefox
Citar            
MensajeEscrito el 25 Ene 2007 09:43 pm
Gracias infernalpr, la sintaxis es asi ;)

Bueno, comentar que ya he dado un pasito mas, pero no soy capaz de seguir :oops:
Este es el codigo que si me funciona, con 2 campos de texto dinamicos, cada uno con su variable: nombre1 y titulo1.
Actionscript (utilizo i para probar la sintaxis)

Código :

i=1;
//variable de carga de datos desde el servidor
var variables_lv:LoadVars = new LoadVars();
variables_lv.onLoad = function(success)
{
    if(success)
    {  
      _root["txtnombre"+i] = this.nombre;
      _root["txttitulo"+i] = this.titulo;      
    }
    else
    {         
      _root["txtnombre"+i]="imposible conectar";
    }
}
variables_lv.load("bbdd.php?nombre=sergio");


y aqui el php

Código :

<?php 
$MYSQL['host'] = "localhost";
$MYSQL['user'] = "...";
$MYSQL['pass'] = "...";
$MYSQL['base'] = "lokesea";

$DB = mysql_connect($MYSQL['host'], $MYSQL['user'], $MYSQL['pass']);
if (!$DB) {die('Fallo en la Conexión: '.mysql_error());}
mysql_select_db($MYSQL['base']);

$nombre = $_GET['nombre'];
$q = "SELECT nombre, titulo FROM descargas WHERE nombre='$nombre'";
$usuarios = mysql_query($q, $DB);
list($nombre, $titulo) = mysql_fetch_row($usuarios);

$cadena = ""
."&nombre=$nombre"
."&titulo=$titulo"
."&";
echo utf8_encode($cadena);
?>


Bien, esto me funciona perfecto, pero no me sirve. Necesito hacerlo funcionar nosólo con 2 campos de texto nombre y titulo, sino con más, nombre1 titulo1, nombre2 titulo2, etc.
He probado con

Código :

var arraynombres= new Array();
_root.arraynombres[1]="pepe";
_root.arraynombres[2]="carlos"
//etc
for(i=1;i<=4;i++) {
   variables_lv.load("bbdd.php?nombre="+arraynombres[i]);
}

y tambien con un for antes de variables_lv.onLoad = function(success) para que englobe toda la funcion, pero nada.

Estoy haciendolo de la forma incorrecta...¿Como podria hacerlo?
Un saludo

Por umek

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Ene 2007 11:02 pm
Hola,

Yo creo que de esta forma se sobreescribe el LoadVars. Prueba:

Código :

var arraynombres= new Array();
_root.arraynombres[1]="pepe";
_root.arraynombres[2]="carlos"
//etc
for(i=1;i<=4;i++) {
  var this["variables"+i+"_lv"]: LoadVars = new LoadVars();
  this["variables"+i+"_lv"].onLoad = function(success) {
    if(success) {  
      _root["txtnombre"+i] = this.nombre;
      _root["txttitulo"+i] = this.titulo;      
    } else {         
      _root["txtnombre"+i]="imposible conectar";
    }
  }
  this["variables"+i+"_lv"].load("bbdd.php?nombre="+_root.arraynombres[i]);
}


a ver que tal.

Saludos!

Edit: Esta sería la forma de hacerlo modificando al AS. También podría hacerse modificando el PHP que creo que sería más eficiente :?

Por dmvalverde

150 de clabLevel



Genero:Masculino  

Extremadura

firefox
Citar            
MensajeEscrito el 25 Ene 2007 11:13 pm
Muchas gracias dmvarlerde!

me da un error:

**Error** Escena=Escena 1, capa=Capa 1, fotograma=1:Línea 9: Se espera un identificador
var this["variables"+i]: LoadVars = new LoadVars();


Es de sintaxis, me rompere los cuernos aver si descubro como es, Gracias por echarme una mano
Saludos

Por umek

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Ene 2007 11:32 pm
:shock: Lo siento, creía que así podían crearse variables dinámicamente, pero parece que no. Puedes intentar modificando esa línea por:

Código :

this["variables"+i+"_lv"] = new LoadVars();


sin poner el var ni el tipo (LoadVars) :crap:

Pero algo más correcto sería utilizar un array para meter los LoadVars que necesites:

Código :

...
//etc
var arrayloadvars = new Array();
for (i=1; i<=4; i++) {
  arrayloadvars[i] = new LoadVars();
  arrayloadvars[i].onLoad = function(success) {
    if(success) {  
      _root["txtnombre"+i] = this.nombre;
      _root["txttitulo"+i] = this.titulo;      
    } else {         
      _root["txtnombre"+i]="imposible conectar";
    }
  }
  arrayloadvars[i].load("bbdd.php?nombre="+_root.arraynombres[i]);
}


Esto ya debería funcionar bien :wink:

Saludos!

Por dmvalverde

150 de clabLevel



Genero:Masculino  

Extremadura

firefox

 

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