Comunidad de diseño web y desarrollo en internet online

muchisimos problemas para leer XML

Citar            
MensajeEscrito el 26 Dic 2008 03:43 pm
saludos a todos.
estoy siguiendo el tutorial de XML en Flash:
http://www.cristalab.com/tutoriales/12/tutorial-de-xml-en-flash.html

lo he probado y funciona y hasta lo entiendo. Pero el problema viene cuando intento leer otro XML diferente al dado en el ejemplo.

lo que hago es cambiar "texto.xml" por "catalogo.php":

catalogo.php

Código :

<?PHP
$link = mysql_connect("localhost", "bacilococus", "******");
mysql_select_db("bacilococus_es_db");

$query = 'SELECT identity FROM catalogo';

$results = mysql_query($query);
   
echo "<?xml version=\"1.0\"?>\n";
echo "<catalogo>\n";
   
while($line = mysql_fetch_assoc($results)){
   echo  "<item>" . $line["identity"] . "</item>\n";
}
echo "</catalogo>\n";

mysql_close($link);

?>


¿alguien puede decirme que hago mal? en los campos de texto de flash me sale: undefined.

gracias. :shock: :shock:

Por Unukalhai

79 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Dic 2008 12:08 pm
Intentas leer otro XML ....¿que tiene exactamente la misma estructura?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 Dic 2008 08:26 pm
pues lo cierto es que no.
la base de datos es esta:

con unos cuantos registros:


este es el swf:

Código :

   //Declara la variable "obj_xml" como un objeto XML
   var obj_xml:XML = new XML();
   /*Esta linea es EXTREMADAMENTE necesaria
     Es la que nos permite colocar espacios entre etiquetas
     Sin ella, tendriamos que mantener completamentepegado nuestro XML
     Y se parsearia mal dentro de Flash
   */
   obj_xml.ignoreWhite = true;
   //Función que se ejecuta en el momento en el que Flash cargue el XML
   obj_xml.onLoad = function(exito) {
      //La variable exito sera "true" si se cargo bien y "false" si hubo
      //algun error
      if (exito) {
         //Le asigna al campo del asunto la primera rama del arbol, como veran la #0
         asunto_txt.text = obj_xml.firstChild.childNodes[0].firstChild.nodeValue;
         //Asigna al campo de destino el valor de la segunda rama, la #1
         destino_txt.text = obj_xml.firstChild.childNodes[1].firstChild.nodeValue;
         //Asigna al campo de cuerpo el valor de la tercera rama, la #2
         cuerpo_txt.text = obj_xml.firstChild.childNodes[2].firstChild.nodeValue;
         //Asigna al campo remitente el valor de la cuarta rama, la #3
         remitente_txt.text = obj_xml.firstChild.childNodes[3].firstChild.nodeValue;
      } else {
         //Muestra un mensaje de error en caso de que algo fallara
         cuerpo_txt.text = "Error";
      }
   };
   //Esta es la función que llama el boton
   function cargarXML() {
      //Invoca a la función "load" del objeto XML, pasandole por parametro
      //La ruta de nuestro archivo XML
      obj_xml.load("catalogo.php");
   }


y el php que puse arriba esta aqui:
http://usuarios.lycos.es/bacilococus/catalogo.php

si van a "ver codigo fuente" veran el xml que esta dentro. ¿no deberia funcionar?

Otra cosa que no entiendo: en muchos ejemplos como este hay que escribir el xml que luego lee el flash pero ¿que sentido tiene crear nosotros el xml? crei que la razon de ser de xml era poder comunicar diferentes sistemas por lo que el xml deberia crearse automaticasmente como resultado de una consulta a una base de datos por ejemplo ¿no?

como ven estoy bastante perdido, agradezco que intentes ayudarme, jorge :P
por cierto, que putada lo del virus. aparece Freddie en todos los mensajes :shock:

Unukalhai.

Por Unukalhai

79 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Dic 2008 10:50 am
Un PHP se ejecuta en servidor y no se puede (por suerte) ver su código fuente.
No necesitas usar XML, puedes pasar directamente cualquier info, mírate el tuto de LoadVars en la sección de tutoriales o http://www.flash-db.com/Tutorials/loading/

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Dic 2008 12:08 am
gracias solisarg por ese enlace. muy interesante, no lo conocia. He probado lo que dice aqui:
http://www.flash-db.com/Tutorials/loading/loadingData.php?page=5
y no logro hacerlo funcionar tampoco.

Vamos a ver: el php sí funciona pero a la hora de ver los datos en flash:

Código ActionScript :

        myData = new LoadVars()
        myData.ref = this
        myData.load("anastasio.asp")
        myData.onLoad = function(succes){
            if(succes){
                for(var i=0; i<this.cant; i++){
                    this.ref["Title_txt"+i].text = this["Title_txt"+i]
                    this.ref["Comments_txt"+i].text = this["Comments_txt"+i]
                    this.ref["holder_mc"+i].loadMovie(this["Image"+i])
                }
            } else trace("Error loading data")
        } 


¿de donde salen las variables "Title_txt" y "Comments_txt"? ¿no se llaman "title0", "title1", "title2"... y "comments0", "comments1"...
¿y que es eso de ref ( myData.ref = this )?

¿hay alguien que haya intentado seguir este tutorial y le haya funcionado?

gracias.

Por Unukalhai

79 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Dic 2008 11:11 am
Yep, hay un error de tipeo allí, si te bajas el archivo de ejemplo lo tienes bien, sería:

Código ActionScript :

      this.ref["Title_txt"+i].text = this["Title"+i]
      this.ref["Coments_txt"+i].text = this["Coments"+i]
      this.ref["holder_mc"+i].loadMovie(this.["Image"+i])
$

Ya lo he corregido, gracias por puntualizarlo.
El puntero ref es una referencia al timeline, ya que el callback se ejecuta en el scope del LoadVars. De todas maneras puedes no usarlo en este caso, ya que Flash accede igual a los elementos dado que se encuentran en la misma línea de tiempo. Esto da lugar a una confusión cuando programas sobre línea de tiempo: en teoría desde dentro del objeto LoadVars no se puede acceder a los elementos del timeline (ruptura de la encapsulación) Si trabajas con clases entonces esto si vuelve a ser cierto

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Dic 2008 03:49 pm
por fin!!!!! ya he conseguido mostrar en flash datos de una db!! confieso que llevaba mucho tiempo intentandolo, he visto muchos tutoriales sobre todo con xml y ya estaba empezando a volverme loco :shock:

resulta que el swf no funcionaba porque no reconocia la variable "cant" y no corria el bucle. o mejor dicho, si la reconocia pero no contenia un valor numerico como era de esperar sino una cadena como esta: : "10 </pre></xmp></noscript>" (en mi caso que tengo 10 registros en la db).

lo solucione poniendo un ampersand detras de la variable en el php asi:

Código PHP :

echo "cant=$cant&";

lo probe por probar porque no se nada de php. :?

otro pequeño detalle: no me reconocia la primera variable de todas ($id0) y lo arregle sabes como?... exacto! poniendo otro ampersand :P al principio de la cadena:

Código PHP :

echo "&id$cant=$row[id]&name$cant=$row[name]&identity$cant=$row[identity]&";

y este es el magnifico resultado:
http://usuarios.lycos.es/bacilococus/consulta_db7.swf

por cierto jorge... no sabia que estaba hablando con el autor del tutorial, jeje que tonto soy :oops:
es un honor hablar contigo y te estoy infinitamente agradecido que te ocuparas en ayudarme.
como ya dije antes busqué en muchos tutoriales y al fin gracias a ti pude conseguirlo. ya soy feliz ^^ . te debo una amigo :wink:

buen año para todos :love:

Por Unukalhai

79 de clabLevel



 

firefox

 

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