Action Script, Bases de Datos

IS4kO

Wenas estoy diseñando una interfaz en Flash mx que trabaja con ActionScript implementando datos desde php.

Todo funciona correctamente, excepto que una vez que he echo una cierta consulta a la base de datos y quiero cambiarla (en concreto yo le mando un id, y me devuelve los datos de ese id, pero una vez devueltos tengo un movieclip, que cuando pinchas DEBERIA incrementar el id en uno), pues no me pilla bien el id ya que trabajo con la misma variable en distintas funciones.

Creo que no me he explicado muy bien os pego el codigo por si aca:

var MiLoadVars = new LoadVars();
MiLoadVars.onLoad = function()
{
_root.txtcampo1.text = MiLoadVars.nombre;
_root.txtcampo2.text = MiLoadVars.apellidos;
_root.txtcampo3.text = MiLoadVars.comentarios;
_root.txtid.text = MiLoadVars.id;
var inc= _root.txtid.text; //Meto el contenido de la caja de texto txtid

}

MiLoadVars.load("cargaFlashSelect.php");

function incrementa()
{

inc+=1;
txtid.text=inc;

}

P.D: Supongo que os hareis una idea, el problema es que si selecciono el id 2 cuando pincho el movieclip inc vale 0 y empieza a incrementar desde ahi (Es decir, que no me guarda el contenido de la caja de texto). Supongo que el problema está en algo del ámbito de variables, o en el paso de la misma entre distintas funciones

Kansei

declara la variable inc fuera de las funciones.
tb puedes relacionar el campor de texto id con la variable inc, y de esta forma ahorrarte una asignación.

IS4kO

Sigue sin tirar :__(

var MiLoadVars = new LoadVars();
var inc=4;

MiLoadVars.onLoad = function()
{
_root.txtcampo1.text = MiLoadVars.nombre;
_root.txtcampo2.text = MiLoadVars.apellidos;
_root.txtcampo3.text = MiLoadVars.comentarios;
_root.txtid.text = MiLoadVars.id;

}

MiLoadVars.load("cargaFlashSelect.php");

function incrementa()
{
inc+=1;
txtid.text=inc;
}

asi si que me incrementa inc, pero nose como pillar el contenido del txtid ya que si lo asigno, me pilla un caracter vacio :S

Kansei

si lo que quires es asignar el contido de inc a txtid, puedes hacerlo con la propiedad Var del propio campo de texto.
si lo que quieres es asignar txtid.text a inc:
inc = number(txtid.text);

Y

Creo que tu fallo está que no indicas la menra de enviar los datos a la base de datos. Indicale al load que vas a usar GET o POST, porque si no por defecto solo carga los datos, no los devuelve

IS4kO

Thx Kansei, creo que ya casi esta:

inc= number(txtid.text);
inc+=1;
txtid.text=inc;

El fallo ahora es la caja de texto ahora sale NaN (como si hubiera error de tipo de datos o de rango)

#5 Eso lo tengo en otro frame, la conexion me va bien, me hace bien los datos, me los devuelve bien etc, lo unico que yo quiero que pillando el id q se selecciono anteriormente en el otro frame, me vaya aumentando de uno en uno cada vez que pulso el moviclip, una vez que me funcione este incremento pues llamaria a las funciones de conexion que tengo en el otro frame. :)

Edit: Pos no doy con ello snifffff :_________(

Y

inc++ os incrementa la variable en 1 y encima come menos recursos. A parte que es más seguro que se incremente.

IS4kO

es posible que sonsuma menos, pero sigue sin ir :)

Y

Bueno, pos lo único que se me ocurre es que la variable esté almacenando texto y el contenido tienes que transformarlo en entero.
No recuerdo cual era la funcion de pasaba de string a entero pero pruebalo por si acaso.

IS4kO

de String a numero es Number(); pero de entero a String se supone que lo hace automaticamente :s

Y

Creo que veo cual es el problema, pero tampoco estoy demasiado seguro. Por lo visto haces el incremento en una funcion, pero los valores nos los pasas por referencia. indicale todo el path de la variable (osea desde _root.). O prueba dentro de la funciona a hacer un trace para que te devuelva el resultado y comprobar que se actualiza la variable. Por cierto, te sale nan porque no es un numero. Y creo que algunas veces tienes que pasar de entero a string mediante una funcion. De todas formas por obligarlo no pasa nada. No siempre el flash computa como nosotros queremos ;)

IS4kO

po no :_____( 3874628374 horas despues sigo probando

Kansei

es porque estas asignando un numero (inc) a una cadena (txtid.text), o bien conbierte inc a cadena, o bien haceslo que te co0nte antes d el apropiedad Var

IS4kO

Dato curioso: el txtid lo pongo en modo introduccion de texto.

Bien sigue sin tirar, pero ahora me deja escribir en la caja de texto una vez echa la select, asi que lo hago, pongo un numero cualquiera y si que TIRA, es decir que lo que me falla es el primer valor que trae la caja de texto que al pulsar el movieclip me da el errorrrr

edit: kansei ya probe String(inc), pero seguia iwal, en cuanto a lo de la propiedad var de la caja de texto nose como va

Kansei

en la ventana de propiedades, una vez tienes seleccionanada la caja de texto, bunsaca un aopcioón que es Var está abajo a la derecha, hay colocas la variable inc.

Y

pero es mejor usar la propiedad .text de la caja de texto. Sobre todo para la utilizacion de las barras de desplazamieno

Kansei

pero en este caso no va a usar barras de desplazamiento, y de esta forma simplifica el seguimiento del contenido de una variable, ahorrando las correspondientes asignaciones y conversiones.

Y

correcto, pero el uso de la propiedad text da la ventaja de poder especificar los cuadro a usar incluso sin necesidad de abrir el macromedia flash (por ejemplo un include a un txt). Además de las ventajas que da de la manipulacion de texto en el cuadro que indicando la variable no se conseguiria.

IS4kO

Bueno pues lo he medio solucionado, al final he desistido y lo que hago es que me recorre desde cero y va incrementando la id de uno en uno, no es lo que queria pero bueno, no puedo tirarme la vida intentando hacerlo de la primera forma que se me ocurre, seguro que hay más formas de recorrer registros :d

Os pego el codigo para que veais como lo he dejado:

var MiLoadVars = new LoadVars();
var inc;


MiLoadVars.onLoad = function()
{
_root.txtcampo1.text = MiLoadVars.nombre;
_root.txtcampo2.text = MiLoadVars.apellidos;
_root.txtcampo3.text = MiLoadVars.comentarios;
_root.txtid.text = MiLoadVars.id;


}

MiLoadVars.load("cargaFlashSelect.php");

function incrementa()
{
inc+=1;
txtid.text=inc;
}

P.D: Si sabeis como recorrer registros de otra forma desirlo :d thx

Usuarios habituales