Comunidad de diseño web y desarrollo en internet online

Flash y Datos (PHP XML sendAndLoad)

Citar            
MensajeEscrito el 07 May 2008 05:51 pm
Estoy realizando una aplicación en Flash que gestiona datos, para eso utilizo PHP con MySql y XML para pasar los datos. Les muestro:
Datos_Asignaturas.php

Código :

<?php
include "conexion.php";
  $result=mysql_query("SELECT * FROM asignatura", $conexion);
  
  echo '<Datos><Asignaturas>';

  while ($row=mysql_fetch_array($result)) 
    {
       echo 
         "<Asignatura>
             <ID>".$row['ID_Asignatura']."</ID>
             <NOMBRE>".$row['Nombre']."</NOMBRE> 
          </Asignatura>";   
    } 
  
  echo '</Datos></Asignaturas>'; 

mysql_close($conexion); 
?>


y en el Flash

Código :

var listado:XML  = new XML();
listado.ignoreWhite = true; 
listado.onLoad = function ()
{ 
   for (i=0; i<listado.firstChild.firstChild.childNodes.length; i++)    
     { 
   asignaturas_cb.addItem(listado.firstChild.firstChild.childNodes[i].childNodes[0].firstChild);
     }
}
listado.load("Datos_Asignaturas.php"); 

Esto me funciona perfectamente, el problema es que yo no solo necesito recibir datos, sino que necesito también enviar, intenté hacerlo de la siguiente forma pero no me funcionó:
Datos_Asignaturas.php

Código :

<?php
include "conexion.php";
  $anno=$_POST["anno"];
  $result=mysql_query("SELECT * FROM asignatura WHERE ID_Anno=$anno", $conexion);
  
  echo '<Datos><Asignaturas>';

  while ($row=mysql_fetch_array($result)) 
    {
       echo 
         "<Asignatura>
             <ID>".$row['ID_Asignatura']."</ID>
             <NOMBRE>".$row['Nombre']."</NOMBRE> 
          </Asignatura>";   
    } 
  
  echo '</Datos></Asignaturas>'; 

mysql_close($conexion); 
?>


en el flash

Código :

var envio_lv:LoadVars = new LoadVars();
var recibir_lv:LoadVars = new LoadVars();
var listado:XML  = new XML();
function Obtener_Asignaturas() {
   envio_lv.anno = 1;
   envio_lv.sendAndLoad("Datos_Asignaturas.php", recibir_lv, "POST");
}

recibir_lv.onLoad = function(exito) {
   if (exito) {
      listado.load(this); // No me lo carga.  :( 
   }
};


Esto fue lo que intenté hacer y no me funcionón, no se cómo cargar en el XML lo que recibo con el método sendAndLoad.

Si alguien tiene alguna sugerencia que darme se lo voy a agradecer mucho,
Saludos.

Por sophi

4 de clabLevel



Genero:Femenino  

msie
Citar            
MensajeEscrito el 07 May 2008 07:37 pm
Usar XML cuando tienes base de datos no tiene mayor sentido, te obliga a escribir mas código y hace mas grandes los paquetes que se intercambio. Usa pares de nombre/valor. Ejemplos de carga/envío:

http://www.flash-db.com/Tutorials/loading/
http://www.flash-db.com/Tutorials/saving/

En cuanto a la recepción, LoadVars recibe pares de nombre/valor, haz

echo "cadena=<Asignatura>
.....

En el Flash

Código :

recibir_lv.onLoad = function(exito) {
   if (exito) {
      myXML = new XML(this.cadena);
   }
};


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 May 2008 02:31 pm
Jorge me dices que no utilice xml y al final me das la solución con xml !!??
Lo cierto es que resolviste mi problema,
thanks a lot.

Por sophi

4 de clabLevel



Genero:Femenino  

msie
Citar            
MensajeEscrito el 08 May 2008 04:19 pm
Bueno si, lo que digo es que si usas pares de nombre/valor, en tanto uses bases de datos, lo tendrás más fácil en el futuro. Mejor aún: usa Remoting (todos los métodos explicados en el tutorial citado)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 14 Ene 2009 03:24 am
Hola,
Armé una galería de imágenes en FLASH que pasa 2 variables a PHP, éste consulta una base de datos MySQL para armar un XML dinámico que vuelca el contenido filtrado según las variables.
En Internet Explorer, FLASH muestra las imágenes, pero al usar Firefox no aparecen!

En FLASH tengo:

Código :


var loadVars = new LoadVars();
loadVars.campo1 = _global.marca;
loadVars.campo2 = _global.repuesto;
loadVars.sendAndLoad("http://localhost/SEITON/phpreadxml.php", loadVars, "POST");



Y en el PHP (phpreadxml.php) que emula al XML:

Código :


// Armo el array
$marca= $_POST["campo1"];
$repuesto= $_POST["campo2"];
// Consulta
$query="SELECT filename, description FROM xmlgallery WHERE marca='".$marca."' AND repuesto='".$repuesto."'";
$result=mysql_query("$query") or die ("Error en la consulta <b>$query</b> :".mysql_error()); 
header("Content-type: text/xml");
// Encabezado del XML
echo '<?xml version="1.0" encoding="utf-8" standalone="yes"?>';
// Del código del XML
echo '<images>';
//Recorro el array
while($arreglo = mysql_fetch_array($result)) 
{   
echo '<pic>';
echo '<image>IMG/', $arreglo["filename"], '</image>';
echo '<caption>', $arreglo["description"], '</caption>';
echo '</pic>';
} 
// Del código del XML
echo '</images>';



Me resulta extraño que en IE funcione perfecto y en Firefox no aparezcan las imágenes.
Espero alguien tenga una idea de cuál puede ser el problema y me pueda ayudar.. Muchas gracias!!

Por DiegoCARC

2 de clabLevel



 

msie7
Citar            
MensajeEscrito el 14 Ene 2009 10:20 am
Cuando se usa XML, Firefoxes mas estricto para validar el documento, IE se traga lo que venga. Visualiza la salida XML en ambos navegadores y busca por caracteres raros. No es suficiente con usar UTF-8 en la cabecera del XML, debes usar utf8_encode() para los datos si estos poseen acentos o eñes

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 14 Ene 2009 03:46 pm
Jorge muchas gracias por la respuesta.
Cambié la impresión en PHP del encabezado XML utilizando utf8_encode():

Código :

echo utf8_encode('<?xml version="1.0" encoding="utf-8" standalone="yes"?>');
y no parece solucionarse.
De todas formas veo que modificando también en el archivo PHP las líneas para recibir las variables desde FLASH y haciéndolas "fijas" funciona desde Firefox:

Código :

//Acá recibía las varaibles desde FLASH
//$marca= $_POST["campo1"];
//$repuesto= $_POST["campo2"];
//Acá las hago fijas
$marca="toyota";
$repuesto="motor";
//Luego la consulta
$query="SELECT filename, description FROM xmlgallery WHERE marca='".utf8_encode($marca)."' AND repuesto='".utf8_encode($repuesto)."'";

Al fijar las variables si funciona la galería de imágenes de FLASH en Firefox.. pero al recibirlas desde Flash con el $_POST no muestra las imágenes desde Firefox (en IE si funciona).
Espero nuevamente me puedan ayudar.. Muchas gracias!!

Por DiegoCARC

2 de clabLevel



 

msie7
Citar            
MensajeEscrito el 14 Ene 2009 03:49 pm
Lo que puede tener carácteres raros es por ejemplo la descripción, no el encabezado:

utf8_encode($arreglo["description"])

Visualiza la salida XML en ambos navegadores


Eso quiere decir, abre el php directamente en el navegador para ver que aspecto tiene el XML

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 14 Ene 2009 04:43 pm
Gracias nuevamente por la velocidad de respuesta!
Ya modifiqué el código de PHP usando utf8_encode($arreglo["description"]).
Muestro nuevamente el archivo .PHP que emula el XML:

Código :

<?php
$conexion = mysql_connect("localhost", "root", "password");
mysql_select_db("basededatos", $conexion);
// Recibo las variables desde FLASH
$marca= $_POST["campo1"];
$repuesto= $_POST["campo2"];
// Hacemos la consulta
$query="SELECT filename, description FROM xmlgallery WHERE marca='".$marca."' AND repuesto='".$repuesto."'";
$result=mysql_query("$query") or die ("Error en la consulta <b>$query</b> :".mysql_error()); 
// Encabezado del XML
header("Content-type: text/xml");
echo '<?xml version="1.0" encoding="utf-8" standalone="yes"?>';
// Del código del XML
echo '<images>';
//Recorro el array
while($arreglo = mysql_fetch_array($result)) 
{   
echo '<pic>';
echo '<image>IMG/', utf8_encode($arreglo["filename"]), '</image>';
echo '<caption>', utf8_encode($arreglo["description"]), '</caption>';
echo '</pic>';
} 
// Del código del XML
echo '</images>';
?>

Las estructuras XML que muestran ambos browsers parecen estar bien, las muestro:

escribió:

Internet Explorer muestra:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
- <images>
- <pic>
<image>IMG/img04.jpg</image>
<caption>Motor-Toyo</caption>
</pic>
- <pic>
<image>IMG/img01.jpg</image>
<caption>Hola..</caption>
</pic>
</images>

y luego

escribió:

Firefox muestra:
- <images>
- <pic>
<image>IMG/img04.jpg</image>
<caption>Motor-Toyo</caption>
</pic>
- <pic>
<image>IMG/img01.jpg</image>
<caption>Hola..</caption>
</pic>
</images>


De todas formas lo que me resulta más raro es que si en el archivo PHP reemplazo

escribió:

$marca= $_POST["campo1"];
$repuesto= $_POST["campo2"];
por

escribió:

$marca= "toyota"";
$repuesto= "motor";
fijando las variables funciona correctamente la galería de imágnes en FLASH tanto en IE como en Firefox..
Nuevamente gracias por leer y espero volver a tener respuestas.. Gracias!

Por DiegoCARC

2 de clabLevel



 

msie7
Citar            
MensajeEscrito el 28 Ene 2010 03:46 am
Hola a todos, a mi me pasa algo inverso, tengo una aplicación que envía datos a un .php, hace consulta en una BD y luego los imprime, los recibe el flash y llena campos con los resultados, pero solo funciona en Firefox y cuando lo pruebo localmente, ya probé con Opera, IE, Safari... y no funciona, alguien sabe a que se deba? supongo que el código está bien ya que si me funciona de algunas formas...

Saludos y gracias :D

algo así:

Código :

[as]
on(release){
var reference:Number = ref.text;
   envioRef = new LoadVars();
   recibRef = new LoadVars();

recibRef.onLoad = function(chido:Boolean){
   if(chido){
   idField.text = this.observ;
   referencia.text = this.referencia;
   mawb.text = this.mawb;
   hawb.text = this.hawb;
   orig.text = this.orig;
   etd.text = this.etd;
   dest.text = this.dest;
   etad.text = this.etad;
   }else{
      referencia.text = "ERROR!";
      idField.text = "No se puede conectar al servidor";
   }
}

envioRef.referencia = reference;
envioRef.sendAndLoad("rastreo.php",recibRef,"POST");
[/as]

Por Carlitosmachine

0 de clabLevel



 

firefox

 

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