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

Flash + PHP: Flash no me importa bien los datos XML

Estas en el tema de Flash + PHP: Flash no me importa bien los datos XML en el foro de Flash y Actionscript en Foros del Web. Hola, para quienes sepan manejar conjuntamente Flash y PHP: estoy intentando hacer una agenda en Flash. Entonces, mi película tiene un objeto XML que carga ...
  #1 (permalink)  
Antiguo 01/09/2007, 06:29
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 21 años, 6 meses
Puntos: 3
Pregunta Flash + PHP: Flash no me importa bien los datos XML

Hola, para quienes sepan manejar conjuntamente Flash y PHP:

estoy intentando hacer una agenda en Flash. Entonces, mi película tiene un objeto XML que carga un documento PHP, el cual a su vez se encarga de obtener todos los registros de la base de datos y devolverlos como datos XML que puedan ser interpretados por Flash. PHP me devuelve el siguiente código fuente:

Código HTML:
<agenda>
     <entrada id="1" nombre="nombre1" apellido1="apellido1"... />
     <entrada id="2" nombre="nombre2" apellido2="apellido2"... />
     .....
</agenda> 
Entonces, el objeto XML de Flash carga estos datos (no me da error). Sin embargo, al hacer un trace del objeto XML, en el output me aparece únicamente esto:

<agenda />

Alguien sabría decirme por qué Flash no me lee todo el arbol XML?

No sé si tendrá algo que ver, pero al ejecutar el PHP directamente, no me visualiza las etiquetas XML en el navegador aunque hice un echo de ellas, sino que se ven en el código fuente.
  #2 (permalink)  
Antiguo 01/09/2007, 13:28
Avatar de Offrenbaruna  
Fecha de Ingreso: octubre-2004
Mensajes: 537
Antigüedad: 20 años, 1 mes
Puntos: 1
Re: Flash + PHP: Flash no me importa bien los datos XML

no se si tienes esto en la primera linea de tu codigo XML pero es algo muy impotante y no olbiadar nunca para que tanto flash como cualquier lenguaje pueda reconocer que es un objeto XML......

<?xml version="1.0" encoding="UTF-8"?>

A ver si es eso lo que te hace falta en tu XML

Saludos
__________________

  #3 (permalink)  
Antiguo 01/09/2007, 13:51
 
Fecha de Ingreso: septiembre-2006
Mensajes: 1.193
Antigüedad: 18 años, 1 mes
Puntos: 30
Re: Flash + PHP: Flash no me importa bien los datos XML

mejor escribe tu codigo para no estar adivinando y se te ayude mejor.
  #4 (permalink)  
Antiguo 02/09/2007, 03:48
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 21 años, 6 meses
Puntos: 3
Re: Flash + PHP: Flash no me importa bien los datos XML

Offrenbaruna, he puesto la línea de código que dices, pero sigue pasando.

He conseguido localizar dónde tengo el error, pero no me explico por qué. De hecho es algo realmente raro:

Si defino los nodos <entrada> de XML con solo dos atributos, id y nombre, Flash me lee todo el árbol. En cuanto defino más de dos atributos (añadir los apellidos), me lee sólo el nodo raíz <agenda>.

Os pongo el código fuente (formateo Actionscript como PHP para que salga coloreado):

Actionscript:

Código PHP:
...
listado_bd = new XML();
listado_bd.ignoreWhite 1;

crear_listado = function(listado) {
    
// Bucle para cada entrada del listado
    
var hijos listado.firstChild.childNodes;
    var 
numHijos hijos.length;
    
trace (listado " HIJOS: " numHijos); // si los hijos tienen solo como atrib. id y nombre, dan 2, y listado se muestra completamente, si tiene más atributos, da 0 hijos, y listado solo muestra <agenda />.
    
for (i=0i<numHijosi++) {
        var 
id hijos[i].attributes.id;
        var 
nombre hijos[i].attributes.nombre;
                
// falta ampliar funcionalidad cuando arregle el error
    
}
};

listado_bd.onLoad = function(exito) {
    if (
exito) {
        
_root.createEmptyMovieClip("contenedor"10);
        
contenedor._x 30;
        
contenedor._y 110;
        
// Función de creación de los elementos de lista
        
crear_listado(this);
    } else {
        
detalle.htmlText "Error al cargar entradas";
    }
};

listado_bd.load("http://localhost/......../mostrar_datos_xml.php"); 

PHP:

Código PHP:
<?
..
$bd conectar();

// Parte de la izquierda de la agenda: mostrar el listado
if (!isset($_GET["id"])) {
    
$consulta "SELECT id, nombre, apellido1, apellido2 FROM agenda";
    
$resultado consulta($bd$consulta);
    if (
$resultado->num_rows 0) { // Se han obtenido entradas. Mostrarlas en formato XML
        
$salida =  "<?xml version='1.0' encoding='UTF-8'?>\n<agenda>\n";
        while (list(
$id$nombre$apellido1$apellido2) = $resultado->fetch_array()) {
            
$salida .= "\t<entrada id=\"$id\" nombre=\"$nombre\"";
// Dependiendo de si elimino las dos siguientes lineas o no, la cosa funciona o no. También he probado a hacerlo sin el if y tampoco va:
            
if ($apellido1 != NULL$salida .= " apellido1=\"$apellido1\"";
            if (
$apellido2 != NULL$salida .= " apellido2=\"$apellido2\"";
            
$salida .= " />\n";
        }    
        
$salida .= "</agenda>";    
    } else {
        
$salida "<agenda></agenda>";
    }
    echo 
$salida;
    
$resultado->close();
    
$bd->close();
// Parte de la derecha: mostrar detalles de la entrada seleccionada
} else { 
.......
}
?>
Espero vuestra ayuda!
  #5 (permalink)  
Antiguo 02/09/2007, 12:02
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 21 años, 6 meses
Puntos: 3
Re: Flash + PHP: Flash no me importa bien los datos XML

Añado una cosa, cuando hago esto al cargarse el objeto XML listado_bd:

Código:
listado_bd.onLoad = function(exito) {
    if (exito) { 
           trace("código de status: " + this.status);
           ....
el código de status que me muestra es:

-6, que se corresponde con: Un elemento XML no tiene la forma correcta.

pero compruebo el código fuente que imprime PHP si llamo al documento php directamente desde el navegador y me da esto:

Código HTML:
<?xml version='1.0' encoding='UTF-8'?>
<agenda>
	<entrada id="1" nombre="raúl" apellido1="gonzález" apellido2="león" />
	<entrada id="2" nombre="antonio" apellido1="garcía" apellido2="sanz" />
</agenda> 
yo no lo veo que esté mal formado. No lo entiendo, me voy a volver loco! Qué puede esta pasando?
  #6 (permalink)  
Antiguo 02/09/2007, 13:48
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 21 años, 6 meses
Puntos: 3
Re: Flash + PHP: Flash no me importa bien los datos XML

Bueno, menos mal! ya lo he solucionado!!!! Se trataba de la codificación de caracteres. En cuanto creaba un valor de atributo de xml en php con un carácter especial, como los acentos, este lo enviaba en una codificación que Flash lo interpretaba como error (lo que me extraña es que si no se especifica, yo creo que se envía en Unicode, y Unicode que yo sepa admite los caracteres especiales).

Lo he solucionado enviando los atributos susceptibles de llevar caracteres especiales en UTF-8, haciendo por ejemplo:

Código PHP:
$salida .= " nombre=\"".utf8_encode($nombre)."\" apellido1=\"".utf8_encode($apellido1)."..... 
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




La zona horaria es GMT -6. Ahora son las 16:15.