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

Como hacer un bucle en flash dependiendo de otro en PHP & MySQL

Estas en el tema de Como hacer un bucle en flash dependiendo de otro en PHP & MySQL en el foro de Flash y Actionscript en Foros del Web. Que tal a todos!!!, tengo una duda que no me deja dormir desde hace varios dias, resulta que necesito mostrar los resultados de una base ...
  #1 (permalink)  
Antiguo 25/06/2006, 12:51
Avatar de Hard Rock`80  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina.
Mensajes: 53
Antigüedad: 20 años, 2 meses
Puntos: 0
Como hacer un bucle en flash dependiendo de otro en PHP & MySQL

Que tal a todos!!!, tengo una duda que no me deja dormir desde hace varios dias, resulta que necesito mostrar los resultados de una base de datos en un mc de flash y que este ultimo se duplique "n" veces como resultados tenga la base de datos.
La parte correspondiente a php / Mysql la tengo resuelta, el problema es como hago para pasar los resultados que me arroja este bucle al archivo .swf...
Tengo entendido que con "loadvars" y un bucle en flash puedo hacerlo, el problema es que no se como... porfavor ayudenme!!!!

Última edición por Hard Rock`80; 25/06/2006 a las 17:27
  #2 (permalink)  
Antiguo 25/06/2006, 22:00
Avatar de fer10  
Fecha de Ingreso: octubre-2005
Ubicación: Guadalajara - Mexico
Mensajes: 905
Antigüedad: 19 años, 1 mes
Puntos: 4
investigate un poco de:
send <-- este se usa para mandar datos abriendo una pagina nueva como _blank



SendAndLoad <-- y este para mandar datos atras de flash sin abrir nada. creo que este vas a necesitar ya que tiene forma de llamara a una funcion cuado resives los datos


y para repetir con el bulce en flash puedes duplciar clips



en este post explique un poco de eso: http://www.forosdelweb.com/f16/arreglos-404507/
__________________
Saludos
FT.
www.fernando.com.mx
  #3 (permalink)  
Antiguo 26/06/2006, 00:50
Avatar de Hard Rock`80  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina.
Mensajes: 53
Antigüedad: 20 años, 2 meses
Puntos: 0
Estimado Fer10 ante todo agradezco tu colaboración ya que me sirvio mucho para razonar correctamente mi problema, ahunque hay algo que no me queda claro, te lo explico con un ejemplo...

- Describo el archivo flash "mi_archivo.swf":

var alumnos = new LoadVars();
alumnos.curso = "curso";
alumnos.sendAndLoad("consultar.php",alumnos,"POST" );

alumnos.onLoad = function() {
//aqui es donde recibo todas las variables resultantes del archivo "consultar.php" (ocea las que incluyo en mi MC)
var1 = alumnos.var1; // la utilizo en mi MC
var2 = alumnos.var2; // la utilizo en mi MC
trace("ok");
}

- Describo el archivo "consultar.php":

<?
$query="select * from alumnos where categoria=$curso";
$res=mysql_query($query,$link);
while ($myrow = mysql_fetch_array($res)) {
$var1=$myrow['id_alumno'];
$var2=$myrow['cantidad'];
}
echo "ok";
?>

Supongamos que la consulta arroja 10 resultados.
Como envío todos los resultados del array a mi archivo .swf??

- Puedo hacerlo con un array multidimensional? (ocea un array que contenga varios array), en tal caso como sería la recuperación de las variables contenidas en el array multidimensional desde "mi_archivo.swf".

Espero que me sepan disculpar las molestias, el tema es que a todos los que consulte, se traban cuando les digo que quiero pasar las variables a flash... desde ya mil gracias!!!
  #4 (permalink)  
Antiguo 26/06/2006, 05:09
 
Fecha de Ingreso: junio-2006
Mensajes: 270
Antigüedad: 18 años, 5 meses
Puntos: 0
Una cosilla, no se si estará mal en php, pero desde luego en java o en c si:
while ($myrow = mysql_fetch_array($res)) no seria while ($myrow == mysql_fetch_array($res))
En cuanto a la forma de enviar los resultados, mas bien me plantearía la forma inversa, es decir, como cargo los resultados del array en mi archivo .swf, es decir, cargar variables. Yo creo que sería lo auyo, aunque te lo digo desde el punto de vista lógico, no desde el conocimiento, ya que nunca he trabajado con bases de datos (lo mas cerca que he estado ha sido trabajando con postnuke, pero como estaba todo hecho...)
  #5 (permalink)  
Antiguo 26/06/2006, 13:19
Avatar de Hard Rock`80  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina.
Mensajes: 53
Antigüedad: 20 años, 2 meses
Puntos: 0
Gracias darkxer0x, la parte de PHP la tengo resuelta el problema lo tengo del lado de flash, Saludos!!!
  #6 (permalink)  
Antiguo 26/06/2006, 14:21
Avatar de fer10  
Fecha de Ingreso: octubre-2005
Ubicación: Guadalajara - Mexico
Mensajes: 905
Antigüedad: 19 años, 1 mes
Puntos: 4
los datos los envias al flash con separaciones con , y depues los metes a una array
con esta funcion

split (String.split method)

mira el ejemplo de adobe:
Cita:
var my_str:String = "P,A,T,S,Y";
var my_array:Array = my_str.split(",");
for (var i = 0; i<my_array.length; i++) {
trace(my_array[i]);
}
// output:
P
A
T
S
http://livedocs.macromedia.com/flash...=00001901.html

segun tengo entenido no se puede enviar una arrya multidimencional pero como tu ya sabes cuanto mide puedes hacerla tu mismo algo asi:

miarrray[0][0]="";
miarrray[0][1]="";
miarrray[1][0]="";
miarrray[1][1]="";

ahy tu sabes que tu array mide 2 campos [][] <--
entoces la mandas asi
arrya[0]="";<-- miarrray[0][0]
arrya[1]="";<-- miarrray[0][1]

arrya[2]="";<-- miarrray[1][0]
arrya[3]="";<-- miarrray[1][1]

para que puedas cachar los datos en el flash con un cliclo de 2

hace poco hice lo mismo en flash con un proyecto de web cam y tambien tenia una arrya multidimencional con los colores R G B y asi lo resolvi usando un 3 campos para separarlo.


bueno solo te di un ejemplo de como hacerlo.. me di a entender ?


tambien como lo hagarras de la salida de un query puedes pedirle el total de filas y luego pedir una por una, sirve de que si es muy extensa la consulta lo carga poco a poco.. en el flash.. y hasta con % lo puedes poner por que con el total de filas puedes saber cuanto te falta..
__________________
Saludos
FT.
www.fernando.com.mx

Última edición por fer10; 26/06/2006 a las 14:52
  #7 (permalink)  
Antiguo 26/06/2006, 22:49
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 10 meses
Puntos: 5
Buenas,

me parece que lo más prolijo, escalable y simple (tal vez no al principio pero sí una vez que tengas un poco de práctica) es usar xml para pasar los datos. Desde php en vez de pasar variables, generás un xml. Desde AS, lo cargás y leés con el objeto XML.

Por ejemplo, podrías usar un xml con una estructura como ésta:

Código HTML:
<alumnos>
    <alumno id_alumno="123" cantidad="10" />
    <alumno id_alumno="155" cantidad="5" />
    <alumno id_alumno="178" cantidad="6" />
</alumnos> 
Generar ese xml desde php es bastante simple:

Código:
<?
$xml = "<?xml version='1.0' encoding='iso-8859-1' ?>";
$xml .= "<alumnos>";
$query = "select * from alumnos where categoria=$curso";
$res = mysql_query($query,$link);
while ($myrow = mysql_fetch_array($res)) {
      
      $var1=$myrow['id_alumno'];
      $var2=$myrow['cantidad'];
      $xml .= "<alumno id_alumno='$var1' cantidad='$var2' />;
}
$xml .= "</alumnos>";
echo $xml; // fijate que no haya otra salida del php (echo's o print's)
?>
Para leerlo desde AS:

Código:
System.useCodepage = true;
var alumnos = new LoadVars();
alumnos.curso = "curso";

var arrAlumnos = []; 
// este array va a contener alumnos, que a su vez van a estar representados cada uno por un array con los 
// datos que le mandes a través del xml

var alumnos_xml = new XML();
alumnos_xml.ignoreWhite = true;
alumnos_xml.onLoad = function (ok) {
	if (ok) {
		procesarDatos(this);
	} else {
		trace("error de carga");
	}
};

alumnos.sendAndLoad("consultar.php",alumnos_xml,"POST" ); // la respuesta la recibís en el obj xml alumnos_xml

function procesarDatos(ref_xml) {
	var nodoRoot = ref_xml.firstChild;
	var cantAlumnos = nodoRoot.childNodes.length;
	var nodoAlumno;
	var idAlumno;
	var cantidad;
	var i;
	/**
	recorrés cada nodoAlumno, obtenés los datos (id_alumno y cantidad, en este caso) y los guardás en un nuevo
	array dentro del array arrAlumnos
	*/
	for (i=0;i<cantAlumnos;i++) {
		// buscás el nodo correspondiente y obtenés los atributos id_alumno y cantidad
		nodoAlumno = nodoRoot.childNodes[i]; 	
		idAlumno = nodoAlumno.attributes.id_alumno;  
		cantidad = nodoAlumno.attributes.cantidad;
		// los guardás en el array de cada alumno, que es un elemento del array "principal" arrAlumnos
		arrAlumnos[i] = [idAlumno,cantidad];    
	}
	/**
	traces:
	*/
	trace(arrAlumnos[0][0]); // muestra del primer alumno [0], el id_alumno[0] 				--> 123
	trace(arrAlumnos[1][0]); // muestra del segundo alumnos [1], el id_alumno[0];			--> 155
	trace(arrAlumnos[2][1]); // muestra del tercer alumno [2], el parametro cantidad [1]	-->   6
}
En este caso paso los datos a un array por si te resulta más cómodo, pero en realidad podría obviarse y trabajarse directamente sobre el objeto XML (aunque al principio es más fácil con arrays, hasta que le tomes la mano al objeto xml).

Suerte
Califa
  #8 (permalink)  
Antiguo 26/06/2006, 23:09
Avatar de fer10  
Fecha de Ingreso: octubre-2005
Ubicación: Guadalajara - Mexico
Mensajes: 905
Antigüedad: 19 años, 1 mes
Puntos: 4
:O !! nunca se me ocurrio para mi proyecto de colores jejeje jejej buena idea =)
__________________
Saludos
FT.
www.fernando.com.mx
  #9 (permalink)  
Antiguo 27/06/2006, 08:13
Avatar de Hard Rock`80  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina.
Mensajes: 53
Antigüedad: 20 años, 2 meses
Puntos: 0
Muy buena las respuesta!!! Mil gracias a los dos voy a desarrollar la idea y despues les cuento, Saludos a todos!!!
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 17:22.