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

Alguien que me ayyyyyude...

Estas en el tema de Alguien que me ayyyyyude... en el foro de Flash y Actionscript en Foros del Web. Hace dos semanas que estoy con estoo... por favor... a ver si me podes ayudar.... Tengo que cargar una lista en flash desde php... y ...
  #1 (permalink)  
Antiguo 11/01/2006, 09:48
 
Fecha de Ingreso: enero-2006
Mensajes: 5
Antigüedad: 18 años, 3 meses
Puntos: 0
Alguien que me ayyyyyude...

Hace dos semanas que estoy con estoo...


por favor... a ver si me podes ayudar....


Tengo que cargar una lista en flash desde php... y resulta que no funca...

Tengo que cargar... por ejemplo

Nombre ---> Matias
Link ---> n.n.nn.n

Pero son varios nombres... entonces hice esto....


var Obj1 = new LoadVars();
Obj1.load("pipo.php");
texto_txt.htmlText = "Cargando...";
Obj1.onLoad = function() {
texto_txt.html=true;
titulo = Obj1.titulo.split("titulo=");
descripcion = Obj1.descripcion.split("descripcion=");

separador = "----------------------------------------------------------";
texto_txt.htmlText = "";

for (var i = 0; i<titulo.length; i++) {
this.createTextField("texto_txt", this.getNextHighestDepth(), 10, 10, 160, 22);
texto_txt.html=true;
texto_txt.htmlText += "<b>"+"<u>"+titulo[i]+"</u></b><br>"+descripcion[i]+"<br><br>"+"<i>"+"Fuente: "+"<a href=\"asfunction:linkFuenteNoticias,"+descripcion[i]+"\">"+"<u>"+descripcion[i]+"</a></i></u>"+"<br>"+separador;
}
};
////////////////////////// AS FUNCTION ///////////////////////////////////////////////////////////////////////////////
function LinkFuenteNoticias(cual) {

direccion = ""+cual;

getURL(direccion, "_blank");
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////




y el php es este....




<?php

mysql_connect(localhost,"name", "password");
$result = mysql(uv0003_nuke, "select * from Escenas order by

Autor");
$num = mysql_numrows($result);
$i = 0;
while($i < $num) {
$titulo=mysql_result($result,$i,"Nombre");
$archivo=mysql_result($result,$i,"Archivo");

print("titulo=" . $titulo);
echo "&descripcion=$archivo&";





$i++;
}



?>




Pero esto solo me muestra el ultimo registro y no una lista....

a Ver si me podes ayudar....

Gracias....
  #2 (permalink)  
Antiguo 11/01/2006, 23:03
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
debes armar la respuesta del PHP, de manera que el flash pueda reconocer entre los diversos registros, puedes hacerlo mediante una sola cadena con todos los contenidos y un "token" entre los valores, de manera que Flash pueda hacer un "split" y separar los elementos, o bien puede hacer que cada variable de respuesta tenga un NOMBRE DE CAMPO diferente, ya que por lo que se ve, en tu php, todos los campos de respuesta se llaman "titulo", de modo que la respuesta de tu php debiera en realidad verse asi:

&titulo=TITULO1_TITULO2_TITULO3_TITULO4LAAARGO_TIT ULO 5&descripcion=DESCRIPCION1_DESCRIPCION2_DESCRIPCIO N3_OTRADESCRIPCION_DESCRIPCION5

Asi, flash puede recibir la variable titulo y descripcion en el onLoad y luego aplicarle un split asi:
(codigo contenido en el evento onload:)
arrTitulo = this.titulo.split("_")
arrDescripcion = this.descripcion.split("_")

y ya con esos arreglos cargados manipular la info.


Otra forma en que puedes armar la respuesta es:
titulo1=TEXTODELTITULO1&titulo2=TEXTODELTITULO2&ti tulo3=TEXTODELTITULO3&descripcion1=TEXTO DE DESCRIPCION 1&descripcion2=TEXTO DE LA DESACRIPCION 2 etc, etc.

Asi, en el evento onLoad, el objeto cargador tendria como "propiedades" a los campos titulo1, titulo2, titulo3, y como valores, los correspondientes textos.

Solo seria cosa de que mejores tu ciclo de lectura en el php para armar esas cadenas de respuesta.

Saludos
  #3 (permalink)  
Antiguo 12/01/2006, 01:31
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 3 meses
Puntos: 5
Buenas.

No te va a funcionar porque el código php está mal.

Por otra parte, si vas a pasar dinámicamente filas de una tabla (es decir, no sabés cuantas va a haber), lo mejor, más claro y ordenado es usar XML para devolver los datos.

Acá te dejo este código php. Modificá las variables de conexión (las 3 primeras líneas) de acuerdo a los datos de tu server MySql.

Pero hay varias cosas que puede que necesites ajustar.

Fijate que las columnas que estás pidiendo "Nombre" y "Archivo" existan en la tabla de la base y estén escritas exactamente así (las mayúsculas/minúsculas importan); lo mismo para "Escenas" y "Autor".

Una vez que chequees eso, abrí el script con el navegador. Si todo va bien, te tiene que mostrar un XML con los datos que estás buscando. Ahí, además, vas a poder ver la estructura del XML para parsearlo después desde flash. Bueno, de ahí en adelante, lo que sigue es todo AS. Pero hasta que no puedas ver el XML en el navegador, no tiene sentido que trates de darle vueltas y volverte loco con flash, porque no te va a llegar nada.

Una vez que el script está andando, lo que tendrías que hacer en flash es crear dos objetos. Un LoadVars y un XML. Con LoadVars hacé sendAndLoad, en vez de load y con el XML recibís los datos. Algo así (lo pongo como "php" para que lo muestre más claro):

Código PHP:
System.useCodepage false;
var 
conexion:LoadVars = new LoadVars();
var 
respuesta:XML = new XML();
respuesta.ignoreWhite true;
conexion.sendAndLoad("nombredelscript.php",respuesta,"POST");
respuesta.onLoad = function(ok) {
    if (
ok) {
    
// acá recibís el XML; respuesta.firstChild es el nodo "datos"; acordate de usar el navegador para ver la estructura del XML y saber dónde encontrar cada cosa
    // después recorré los nodos de adentor y sacá los atributos con algún loop
    
} else {
    
//acá manejo de errores por si no responde el server
    
}

Bueno, y acá va el php.

Código PHP:
<?php
$usr 
"tu_usuario_mysql";
$pass "pass_mysql";
$base "nombre_de_la_base";

@
mysql_connect("localhost",$usr,$pass);
@
mysql_select_db($base);
$consulta = @mysql_query("select * from Escenas order by Autor");

$xml "<?xml version='1.0' encoding='utf-8'?>";
if (
$consulta) {
    
$xml .= "<datos estado='ok'>";
    while(
$rs mysql_fetch_assoc($consulta)) {
        
$titulo$rs['Nombre']; 
        
$archivo$rs['Archivo']; 
        
$xml .= "<resultado nombre='$titulo' archivo='$archivo' />";
    }
    
$xml .= "</datos>";
} else {
    
$xml .="<datos estado='error' />";    
}
header('Content-Type: text/xml'); 
echo 
$xml;
mysql_close();
?>
Suerte

Califa

Última edición por califa010; 12/01/2006 a las 04:37
  #4 (permalink)  
Antiguo 14/01/2006, 19:55
 
Fecha de Ingreso: enero-2006
Mensajes: 5
Antigüedad: 18 años, 3 meses
Puntos: 0
Califa... gracias por tu respuesta... es lo que estoy buscando.. es para hacer listas y no se la cantidad... es mas... se puede ir cambiando dia a dia.

Te mande un privado para ver si me podes amplira la respuesta.

Saludos y desde ya gracias!!!!!!!!!!
  #5 (permalink)  
Antiguo 14/01/2006, 21:18
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 3 meses
Puntos: 5
Bueno, acá un script básico para parsear el XML. Reescribí el onLoad para hacerlo un referencia a una función en vez de una función "anónima". Según leí, es más eficiente.

Las variables archivo y nombre van a ir guardando en cada vuelta los valores que trae el XML por cada fila. Pero en cada loop se sobreimprimen. Si querés las guardas en un array para leerlas después o si no las usás directamente, no sé. Depende cómo esté armado tu script y qué es lo quieras. Si usás un array, tenés que declararlo afuera de la función; si no, cuando lo quieras leer te va salir "undefined".

Bueno, acá va. Suerte.

Código:
respuesta.onLoad = parsearDatos;
function parsearDatos(ok) {
    if (ok) {
		var datos:XMLNode = respuesta.firstChild;
		var estado:String = datos.attributes.estado;
		if (estado == "ok") {
			var resultado:XMLNode = datos.firstChild;
			var nombre:String;
			var archivo:String;
			while(resultado != null) {
				nombre = resultado.attributes.nombre;
				archivo = resultado.attributes.archivo;
			//	trace ("nombre="+nombre+"; archivo="+archivo);
				resultado = resultado.nextSibling;
			}
		} else if (estado == "error") {
			// mostrar un mensaje de error o lo que sea
		}
    } else {
    // acá manejo de errores por si no responde el server
    }
}
Califa

Última edición por califa010; 15/01/2006 a las 00:23
  #6 (permalink)  
Antiguo 15/01/2006, 11:51
 
Fecha de Ingreso: enero-2006
Mensajes: 5
Antigüedad: 18 años, 3 meses
Puntos: 0
Bueno califa, te agradezco por el intento... pero la verdad es que no me muestra nada y no se por que... el php lo domino... pero el xml... no... asi que gracias igual...
  #7 (permalink)  
Antiguo 15/01/2006, 13:43
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 3 meses
Puntos: 5
Un detalle a tener en cuenta: si el .swf lo estás testeando desde Flash, tenés que poner el path completo hasta el script php (y el servidor tiene que estar iniciado). Ej: http://localhost/carpeta_sitio/script.php. Lo mismo si está en algún servidor "real".

Si lo exportás como html y lo ves desde un navegador (siempre con http:// ,etc en la barra de direcciones porque si no el script nunca va a responder) no hace falta poner el path completo, con la ruta relativa alcanza.

En una de esas es eso...

Suerte

PD: Otra prueba que podrías hacer es al final del script grabar el xml a un archivo y después desde el .swf llamar a ese xml (en lugar de llamar al php que genera el xml). Si de esa manera anda, podés descartar que el código AS está bien. Ah, no te olvides de descomentar el trace para ver lo que te llega (desde Flash, si lo ves con el navegador no vas a ver nada).

Última edición por califa010; 15/01/2006 a las 13:56
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:07.