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

cargar valores en list desde php

Estas en el tema de cargar valores en list desde php en el foro de Flash y Actionscript en Foros del Web. Hola a todos, bueno mi duda es esta, quisiera cargar algunos datos que extraigo de msyql en un list dentro de mi swf, pero no ...
  #1 (permalink)  
Antiguo 03/03/2006, 13:09
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
cargar valores en list desde php

Hola a todos,

bueno mi duda es esta, quisiera cargar algunos datos que extraigo de msyql en un list dentro de mi swf, pero no se como hacerlo, bueno se como cargar el archivo, pero no se como hacer que el list los carge, he estado intentando pero no doy siempre me sale undefined

de antemano gracias
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #2 (permalink)  
Antiguo 03/03/2006, 13:53
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 1 mes
Puntos: 0
hola
suponiendo que tienes un archivo lista.xml
que contiene:
Código HTML:
<?xml version="1.0" encoding="UTF-8"?>
<frases>
	<frase>"Dime con quién andas... y si está bueno me lo mandas"</frase>
	<frase>"Ojos que no ven... zapatos llenos de caca"</frase>
	<frase>"Siembra un árbol... has feliz a un perro"</frase>
	<frase>"Amor de lejos... felices los cuatro"</frase>
	<frase>"Caballo regalado... tiene que ser robado"</frase>
	<frase>"Hazlo bien... sin mirar con quien"</frase>
	<frase>"Detrás de todo hombre que triunfa... hay una mujer sorprendida"</frase>
	<frase>"Cuando un millonario pasa a mejor vida... sus herederos también"</frase>
	<frase>"El amor es ciego... solo el matrimonio puede devolverle la vista"</frase>
	<frase>"El trabajo en equipo es esencial... te permite echarle la culpa a otro"</frase>
	<frase>"La suerte de la fea... a la bonita le vale madre"</frase>
	<frase>"Mas vale prevenir... que amamantar"</frase>
</frases> 
en flash:
tienes en escena un componente list con nombre de instancia: mi_lista
copia este código en un fotograma de _root
Código:
//creamos el objeto xml para carga los datos
var lista_xml:XML = new XML();
//esto es para que no nos de problemas con los espacios en blanco y salto de linea
lista_xml.ignoreWhite = true;

//verifica si se ha cargado correctamente
lista_xml.onLoad = function(ok){
	//si lo ha hecho, ejecuta la funcion para llenar la lista
	//le pasamos como parametro la lista de hijos nodos (es un array)
	if(ok) llenar_lista(this.firstChild.childNodes);
	//si no se carga correctamente los datos informamos con trace
	else trace('error al cargar la lista');
}

//func para llenar a lista, recibe la lista en forma de array
var llenar_lista:Function = function(lista:Array){
	//creamos un array que sera el proveedor del componente
	var proveedor:Array = new Array();
	
	//le decimos a nuestra lista que su poveedor será el array que acabomos de crear
	mi_lista.dataProvider = proveedor;
	
	//exploramos el array uno a uno y agreamos al provider los datos
	for(n=0;n<lista.length;n++){
		//label es el texto que aparecerá en la lista, y data es el valor de ese elemento
		//es como un select de html tiene un label y un value
		proveedor.addItem({label:lista[n].firstChild.nodeValue,data:n});
	}
}
//cargamos la lista
lista_xml.load('lista.xml');
stop();
ahora me dirás que lo que quieres es cargar datos de php,
sólo tienes que genera un xml con php y haces la llamada a ese archivo

lista_xml.load('lista.php');

lo imporante es que debe generar un XML con ese formato :D

akí se discute la manera
http://www.forosdelweb.com/f16/como-hacer-campo-dinamicos-367977/


PD. haaaaa y para que no te de problemas con las tildes no olvides guardar o generar el XML en formato UTF-8, si no lo hicieres así no olvides poner esta linea al principio de todo
System.useCodepage = true;
pero mejor vayamos estandarizándonos y trabajemos con UTF-8

:D
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #3 (permalink)  
Antiguo 03/03/2006, 14:16
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
muchisimas gracias, quedo perfecto
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #4 (permalink)  
Antiguo 03/03/2006, 15:24
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
luistar, tu script es genial, sin embargo me a saltado una duda

en si lo que estoy haciendo es un reproductor de video (FLV) y estoy sacando la lista de mysql, entonses nesesito por lo menos 2 valores, el titulo y el url del video, ahora como puedo hacer para cargar el valor del url del video????

si me pudieras orientar un poco

de antemano gracias
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 03/03/2006, 16:03
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 1 mes
Puntos: 0
bien.. podrías que general un xml como este
Código:
<?xml version="1.0" encoding="UTF-8"?>
<lista_videos>
	<video nombre="Los Moustros de la nada" ruta="monstruos.flv" />
	<video nombre="Los Moustros de la nada" ruta="monstruos.flv" />
	<video nombre="Los Moustros de la nada" ruta="monstruos.flv" />
	<video nombre="Los Moustros de la nada" ruta="monstruos.flv" />
	<video nombre="Los Moustros de la nada" ruta="monstruos.flv" />
	<video nombre="Los Moustros de la nada" ruta="monstruos.flv" />
</lista_videos>
y desde flash, para agregar los items al array proveedr, tomaríamos los valores de los atributos (nombre y ruta son los atributos), así:

proveedor.addItem({label:lista[n].attributes.nombre, data:lista[n].attributes.ruta});

:D
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #6 (permalink)  
Antiguo 03/03/2006, 16:34
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
muchisimas gracias por tu respuesta, te comento mis avances (si es que lo hay jajaja )

he creado la lista en php de esta forma
Código PHP:
<?php
require_once("../conf.php");//conexion a base de datos
$sql=mysql_query("SELECT * FROM multimedia_video",$conexion) or die (mysql_error());
$mostrar='<?xml version="1.0" encoding="UTF-8"?>
<lista_videos>'
;
while(
$row=mysql_fetch_assoc($sql)) {
$mostrar.='<video nombre="'.$row["titulo"].'" ruta="'.$row["archivo"].'" />';
}
$mostrar.='</lista_videos>';
echo 
$mostrar;
mysql_free_result($sql);
?>
y en el fla he puesto lo siguiente

Código:
//Conexion para la descarga de video
var conexion:NetConnection = new NetConnection();
conexion.connect(null);
var stream:NetStream = new NetStream(conexion);
mi_video.attachVideo(stream);
//boton para pausar
boton_2.onPress = function() {
 stream.pause();
 //obvio, para hacer pausa, ojo q es lo mismo para avanzar
};
//creamos el objeto xml para carga los datos
var lista_xml:XML = new XML();
//esto es para que no nos de problemas con los espacios en blanco y salto de linea
lista_xml.ignoreWhite = true;
//verifica si se ha cargado correctamente
lista_xml.onLoad = function(ok){
 //si lo ha hecho, ejecuta la funcion para llenar la lista
 //le pasamos como parametro la lista de hijos nodos (es un array)
 if(ok) llenar_lista(this.firstChild.childNodes);
 //si no se carga correctamente los datos informamos con trace
 else trace('error al cargar la lista');
}
//func para llenar a lista, recibe la lista en forma de array
var llenar_lista:Function = function(lista:Array){
 //creamos un array que sera el proveedor del componente
 var proveedor:Array = new Array();
 
 //le decimos a nuestra lista que su poveedor será el array que acabomos de crear
 mi_lista.dataProvider = proveedor;
 
 //exploramos el array uno a uno y agreamos al provider los datos
 for(n=0;n<lista.length;n++){
  //label es el texto que aparecerá en la lista, y data es el valor de ese elemento
  //es como un select de html tiene un label y un value
  proveedor.addItem({label:lista[n].attributes.nombre, data:attributes.ruta});
 }
 mi_lista.addEventListener("change", alSeleccionar);
};
//cargamos la lista
lista_xml.load('lista_videos.php');
alSeleccionar = new Object();
alSeleccionar.change = function(evento){
 stream.play(proveedor.getItemAt(mi_lista.selectedIndex).data);
}
stop();
sin embargo al seleccionar un elelemento de mi_lista no comienza la reproduccion (hasta ahora te comento que soy un novato en flash ), de nuevo agradeceria que me ayudaran a buscar el error, pues la verdad ya no se que mas hacerle, le he buscado por todos lados y no mas no veo el error, bueno, tampoco es que sepa mucho, pero seguro uestedes dan con el error (uso flash 8)

de antemano gracias
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 03/03/2006, 17:00
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 1 mes
Puntos: 0
compara esta línea que pones
proveedor.addItem({label:lista[n].attributes.nombre, data:attributes.ruta});
con ésta que te sugerí
proveedor.addItem({label:lista[n].attributes.nombre, data:lista[n].attributes.ruta});

ahora en el listener, tienes varias formas de acceder al valor del elemento seleccionado
Código:
alSeleccionar.change = function(evento) {
	//tomando el valor directamente
	trace(mi_lista.value);
	//através del parámetro que en este caso llamaste: 'evento'
	trace(evento.target.value);
	//o un poco más laboriosamente
	trace(mi_lista.getItemAt(mi_lista.selectedIndex).data);
};
NOTA. el array proveedor lo creamos temporalmente, sólo para llenar la lista, luego de terminada la función llenar_lista ese array ya no existe

:D

PD. y al generar el php, hazlo como xml y utf-8
Código PHP:
<?php
require_once("../conf.php");//conexion a base de datos
$sql=mysql_query("SELECT * FROM multimedia_video",$conexion) or die (mysql_error());

$mostrar='<?xml version="1.0" encoding="UTF-8"?>
<lista_videos>'
;
while(
$row=mysql_fetch_assoc($sql)) {
    
$mostrar.='<video nombre="'.$row["titulo"].'" ruta="'.$row["archivo"].'" />';
}
$mostrar.='</lista_videos>';

//cabecera XML UTF-8
header('Content-type: text/xml; charset=UTF-8');
//imprimimos el xml en formato UTF-8
echo utf8_encode($mostrar);

mysql_free_result($sql);
?>
:D ora sí
__________________
Si digo que soy mentiroso. ¿Lo soy?

Última edición por luistar; 03/03/2006 a las 17:07
  #8 (permalink)  
Antiguo 03/03/2006, 17:49
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
muchas gracias luistar ahora si a quedado perfecto, te agradesco mucho tu ayuda
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
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 15:23.