Foros del Web » Creando para Internet » Flash y Actionscript »

Carga de un archivo XML

Estas en el tema de Carga de un archivo XML en el foro de Flash y Actionscript en Foros del Web. Hola muchachos necesito ayuda de alguno de ustedes... Estoy haciendo una pag en flash, con una base MySQL que la conecto por intermedio de PHP ...
  #1 (permalink)  
Antiguo 21/04/2008, 17:33
Avatar de Alesius  
Fecha de Ingreso: marzo-2008
Mensajes: 87
Antigüedad: 9 años, 9 meses
Puntos: 1
Carga de un archivo XML

Hola muchachos necesito ayuda de alguno de ustedes...

Estoy haciendo una pag en flash, con una base MySQL que la conecto por intermedio de PHP y levanto las consultas por intermedio de XML y los cargo en un datagrid de Flash... Me funciona bien, inserto con un formulario en flash y envio los datos por un sendAndLoad al archivo PHP, este lo inserta en la base de datos MySQL y genera un XML nuevo. funciona perfecto!!!.

El tema es que cuando termino de realizar la insercion leo nuevamente el archivo XML y me lee la version anterior de este. Es decir, tengo 4 registros levantados desde XML en el datagrid, inserto un 5 registro, mando la leer el archivo XML y me lee solo los 4 primeros; me fijo en la base de datos MySQL y en el archivo XML y la insercion se realizo correctamente, tengo 5 registros; ¿PUEDE SER QUE EL XML QUEDE EN MEMORIA? como puedo solucionar esto???

Ayuda Pleace!!!!


saludos
  #2 (permalink)  
Antiguo 22/04/2008, 10:34
Avatar de Alesius  
Fecha de Ingreso: marzo-2008
Mensajes: 87
Antigüedad: 9 años, 9 meses
Puntos: 1
Re: Carga de un archivo XML

Hola, bueno voy a ver si me puedo explicar mejor...

El flash cuando inicia llama a la funcion leerXML( esta funcion levanta del XML los datos y los carga en el datagrid), luego el swf se queda a la espera de que se presione un boton (insertar, modificar, eliminar). Si se presiona insertar, modificar o eliminar, funciona correctamente... se envia al PHP los datos y este los ejecuta; el PHP inserta, modifica o elimina en la base de datos MySQL y genera el nuevo archivo "datos.xml". El problema es que las modificaciones que se hicieron en la base de datos no se reflejan en el datagrid...

Verifico la base de datos y el archivo XML y ambos han sido modificados correctamente, pero el flash me sigue levantando la primera version del XML; es mas, apago la PC, y la vuelvo a conectar, y me sigue mostrando la primera version.

Aca les dejo el pedazo de codigo que afecta a esto, Les puse la parte de insertar para no hacerlo tan largo y pesado de leer.

Gracias por la ayuda!!!.

Código:
function leerXML(){
  var misdatos:XML = new XML();
  misdatos.load("datos.xml");
  misdatos.ignoreWhite = true;
  var proveedor:Array = new Array();
  misdatos.onLoad = function() {
    for (j=0; j<misdatos.childNodes.length; j++){
   	  proveedor.addItem({id:misdatos.childNodes[j].childNodes[0].childNodes, titulo:misdatos.childNodes[j].childNodes[1].childNodes, genero:misdatos.childNodes[j].childNodes[5].childNodes, cant_total:misdatos.childNodes[j].childNodes[6].childNodes, alquiladas:misdatos.childNodes[j].childNodes[7].childNodes});
    }
    datagrid.dataProvider = proveedor;
    datagrid.getColumnAt(0).width = 50;
    datagrid.getColumnAt(1).width = 250;
    datagrid.getColumnAt(2).width = 150;
    datagrid.getColumnAt(3).width = 20;
    datagrid.getColumnAt(4).width = 20;
    datagrid.selectedIndex = 0;
  }
}

lv_Insertar.onLoad = function(success:Boolean) {
	   if (success){
	     leerXML();
	     datagrid.selectedIndex=datagrid.getLength()-1; //dejo como seleccionado el último item del datagrid
            estadotxt.text= this.msj_error;
	  }else estadotxt.text ="Flash no pudo levantar el archivo XML";
}


var alClick:Object = new Object();
var accion:Number;
alClick.click = function(boton) {
	switch (boton.target) {
	
	case btnInsertar :
		btnEliminar.enabled=btnModificar.enabled=btnConsultar.enabled=false;
		datagrid.enabled=false;
		estadotxt.text = "Insertar";
		
		.
                . // aca muestro el formulario de insertar... lo saque para abreviar
                .
		break;
	
          case btnSi :
			//insertar
			estadotxt.text = "Insertando...";
			cargarDatos();
			btnEliminar.enabled=btnModificar.enabled=btnConsultar.enabled=true;
			datagrid.enabled=true;
			if (hayarchivo){
			  if(fileRef.upload("http://www.mipag.com.ar/upLoad/uploadFile.php")) {
        			contenedor.sendAndLoad("insertar_pelicula.php", lv_Insertar, "POST");
			  }else {
				estadotxt.text = "No se pudo insertar el registro porque no se pudo cargar la imagen seleccionada";
			  }
			}else {
				contenedor.sendAndLoad("insertar_pelicula.php", lv_Insertar, "POST");
				estadotxt.text = "Se ha insertado el registro correctamente";
			}
			break;
                        .
                        .
                        .
Y como tenia la duda de que estaba en el cache, al archivo PHP que levanta el SWF le puse esto:

Código PHP:
<?PHP
  
// No almacenar en el cache del navegador esta página.
        
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");                     // Expira en fecha pasada
        
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");        // Siempre página modificada
        
header("Cache-Control: no-cache, must-revalidate");                   // HTTP/1.1
        
header("Pragma: no-cache");                                           // HTTP/1.0
?>
YA NOSE QUE HACER... ESTOY DESESPERADO...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 06:30.