Comunidad de diseño web y desarrollo en internet online

Actualizacion Base de datos.

Citar            
MensajeEscrito el 23 Oct 2008 10:42 am
Necesito hacer una escritura en base de datos de una cantidad de items desconocida en principio. Para lograrlo alamaceno en una matriz los objetos originales que tengo en la base de datos, y en otra matriz registro los cambios q tengo en los objetos, si son utilizados reduzco su numero en 1. Asi antes de cerrar la aplicacion se van comparando ambas matrices y si existe diferencia se escribe en la base de datos. El problema es q solo esta escribiendo el ultimo objeto.

Código :

for(i in lineas){
            if (lineas[i][0]!=segLinea[i][0]){
               escribeLineas(lineas[i][0],lineas[i][1],lineas[i][2])
               }
            }


La funcion para escribir es la siguiente:

Código :

escribeLineas=function(numero:Number,long:Number,imp:Number){
   var inveLog:LoadVars=new LoadVars;
   trace("herrHello");
   inveLog.tipo="linea";
   inveLog.numero=numero;
   inveLog.mail=correo;
   inveLog.longitud=long;
   trace("el numero a actualizar es"+inveLog.numero);
   trace("longitud"+inveLog.longitud);
   inveLog.impedancia=imp;
   inveLog.send("http://localhost/phpflash/invLog.php","_blank","POST")
   }


a alguien le ha pasado algo parecido??. Alguna idea de porque solo escribe el ultimo objeto?¿¿.
Gracias.

Por a_j

14 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Oct 2008 01:35 pm
Si usas un for ... in para hacer un LoaVars.send es probable que en poco milisegundos hagas X llamados (en función de cuantos cambios hayas hecho), algo que incluso puede llegar a congelar tu aplicación. Guarda los cambios en un solo objeto y envíalo una sola vez

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Oct 2008 03:31 pm
de momento solo hago dos cambios. Aun así se puede bloquear??.
La idea de un unico objeto no me termina de convencer, aunque reconozco que es la mejor.
Si hago un setInterval para darle mas tiempo a escribir puede funcionar?.
Gracias

Por a_j

14 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Oct 2008 03:42 pm
Tienes que pensar un sistema eficiente, si buscas soluciones ineficientes solo dilatas el momento del bug

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 31 Oct 2008 12:10 pm
Saludos, ya di con la solucion.
No es tan eficiente como pasar todo a PHP y escribir desde ahi, pero es que hacer eso implicaba cambiar casi todo.
Asi que bueno ahi va una solucion mas cutre, pero igual a alguien le sirve para algo.
En lugar de un bucle utilizo una funcion recurrente q solo actualiza el iterador cuando hay respuesta desde PHP.
[code]
var i:Number=0;
recorrer(i);
[code]

[/code]
recorrer=function(j:Number){
if(j<numeroLineas){
trace("las lineas"+lineas[j][0]+","+segLineas[j][0]);
if (lineas[j][0]!=segLineas[j][0]){
escribeLineas(lineas[j][0],lineas[j][1],lineas[j][2]);
inveRec.onLoad=function(exito){
if (exito){
var myNumber = (this.id);
trace("actualizo"+myNumber);
var sos=this.control;
trace("inserto"+sos);
j++;
p=j;
recorrer(p);
}
}
}else{
j++;
p=j;
recorrer(p);}
}[code]


Una vez mas gracias por todo y perdon por la tardanza en responder.

Por a_j

14 de clabLevel



Genero:Masculino  

firefox

 

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