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

Pasar n cantidad de registros de php a flash

Estas en el tema de Pasar n cantidad de registros de php a flash en el foro de Flash y Actionscript en Foros del Web. Saludos tengo un archivo php en el cual extraigo unos campos de mysql y hago unas operaciones, lo que necesito es enviar esa informacion a ...
  #1 (permalink)  
Antiguo 29/11/2005, 06:34
 
Fecha de Ingreso: diciembre-2003
Mensajes: 82
Antigüedad: 14 años
Puntos: 1
Pregunta Pasar n cantidad de registros de php a flash

Saludos tengo un archivo php en el cual extraigo unos campos de mysql y hago unas operaciones, lo que necesito es enviar esa informacion a flash y introsucirla en campos que creo dinamicamente ejemplo:

Código PHP:
$SQLValor "select * from productos";
$QValor mysql_query($SQLValor,$CON) or die("sentencia invalida");
$VRegis mysql_num_rows($QValor);
$CValores mysql_fetch_array($QValor);

echo 
"&regis=".$Precio;

while(
$CValores mysql_fetch_array($QValor))
{

$ID $CValores["id"];
$Nombre $CValores["nombre"];
$Precio $CValores["precio"];

echo 
"&prod=".$ID;
echo 
"&nom=".$Nombre;
echo 
"&pre=".$Precio;


y en flash necesito pasar cada valor que cargo en un loadvariable del bucle while a unos campos creados dinamicamente



var env_lv:LoadVars = new LoadVars();


function enviar() {

env_lv.valor = _global.primava;
env_lv.valor2 = _global.tiempova;

env.sendAndLoad("productos.php", env_lv, "POST");




}


env_lv.onLoad = function(exito:Boolean)
{


if(exito)
{

Regi = env_lv.regi;
Crear();


}
};



function Crear()
{




Código PHP:
for (i=1i<=Regii++)
 {

txt1 "valores_txt"+i;
txt2 "valores2_txt"+i;
txt3 "valores3_txt"+i;
   
   
createTextField(txt1getNextHighestDepth(), 120i*2050020);
  
createTextField(txt2getNextHighestDepth(), 120i*2050020);
  
createTextField(txt3getNextHighestDepth(), 120i*2050020);
  
   
this[txt1].embedFonts true;
   
this[txt1].text env_lv.prod;
  
   
this[txt2].embedFonts true;
   
this[txt2].text env_lv.nom;


   
this[txt3].embedFonts true;
   
this[txt3].text env_lv.pre;



 } 
lo intento de esa forma pero no me lee los valores uno por uno, lo he intentado con un array pero no me funciona(nose si lo hago bien) supuesta mente los valores en php ya estan en un array cuando se utiliza mysql_fetch_array($QValor); pero no me pasa a flash les agradecaria mucho la ayuda.
  #2 (permalink)  
Antiguo 29/11/2005, 09:16
 
Fecha de Ingreso: diciembre-2003
Mensajes: 82
Antigüedad: 14 años
Puntos: 1
Saludo, disculpen la molestia pero se puede hacer lo que pido?
hay alguna forma de lograrlo alguna idea ? muchas gracias realmete necesito saber como puedo hacerlo.
  #3 (permalink)  
Antiguo 29/11/2005, 09:20
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 12 años, 10 meses
Puntos: 11
Lo que necesitas es Flash Remoting y AMFPHP , de lo contrario no va a funcionar tu logica cuando lleges a mas de 20 registros... y en ves de usar textfield mejor cargalo en un GRID,

Última edición por richardinj; 29/11/2005 a las 09:58
  #4 (permalink)  
Antiguo 29/11/2005, 09:29
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 12 años, 9 meses
Puntos: 0
claro que hay manera
y si quieres trabajar con arrays
mejor usas XML

la idea es que el php genere un archivo XML
y con flash la procesas

en tu php pon esto: productos_xml.php
Código PHP:
<?php
    $SQLValor 
"SELECT * FROM productos"
    
$QValor mysql_query($SQLValor,$CON) or die("sentencia invalida"); 

    
//creamos el XML
    
$xml "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<productos>\n";
    while(
$CValores mysql_fetch_array($QValor){
        
$xml.="\t<producto id=\"".$CValores['id']."\" nombre=\"".$CValores['nombre']."\" precio=\"".$CValores['precio']."\"/>\n";
    }
    
$xml.='</productos>';
    
//mostramos el XML
    
echo $xml;
?>
claro que previamente tienes que haber hecho la conexion la base de datos
debe geberarte un XML como este
Código HTML:
<?xml version="1.0" encoding="UTF-8"?>
<productos>
	<producto id="1" nombre="PROD NAMBER UAN" precio="45"/>
	<producto id="2" nombre="PROD NAMBER TU" precio="10"/>
	<producto id="3" nombre="PROD NAMBER TRE" precio="30"/>
	<producto id="4" nombre="PROD NAMBER FOR" precio="5"/>
	<producto id="5" nombre="PROD NAMBER FAI" precio="90"/>
	<producto id="6" nombre="PROD NAMBER SIKS" precio="2"/>
	<producto id="7" nombre="PROD NAMBER SEVEN" precio="120"/>
</productos> 
luego en flash cargamos el xml y lo procesamos
Código PHP:
//creamos el objeto XML que contendrá los datos de los productos
productos_xml = new XML();
productos_xml.ignoreWhite true;
productos_xml.onLoad = function(exito){
    if(
exito){
        
listar_productos(this);
    }else{
        
trace('no se pudo cargar los datos');
    }
}
//la funcion que creara los campos de texto
function listar_productos(unxml:XML){
    var 
productos_array:Array = unxml.firstChild.childNodes;
    for(
i=0;i<productos_array.length;i++){
        
prod_ref createTextField('prod'+i,i,120,20*i,100,20);
        
with(prod_ref){
            
selectable false;
            
autoSize 'left';
            
text productos_array[i].attributes.id+'. '+productos_array[i].attributes.nombre+' ( $'+productos_array[i].attributes.precio+')';
        }
    }
}
//cargamos el xml
//productos_xml.load('productos_xml.php');
productos_xml.load('productos.xml'); 
para probar que funciona tienes que verificar que el php cree correctamente el XML, desde tu navegador accede a productos_xml.php si vez el codigo fuente deberia aparecer el XML que te menciono arriba

en la ultima linea del codigo FLAS he comentado la linea que carga el php
por ahora esta cargando el fichero productos.xml, osea para que veas el funcionamiento guarda el codigo XML que te pongo arriba como productos.xml

ahora al momento de crear los texto, no deberias crear un campo de texto para cada uno
vasta con uno para cada producto
si quieres darle color tamamaño a cada attributo (id, nombre, precio), podrias hacerlo con hojas de estilo

si estas interesado te puedo poner un ejemplo

bueno pruebalo y comenta vomo te va
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #5 (permalink)  
Antiguo 29/11/2005, 09:37
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 12 años, 9 meses
Puntos: 0
ha una cosa mas...
with(prod_ref)
no te funcionara en versiones anteriores a la 8
reemplazala por:
with(this['prod'+i])
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #6 (permalink)  
Antiguo 29/11/2005, 09:44
 
Fecha de Ingreso: diciembre-2003
Mensajes: 82
Antigüedad: 14 años
Puntos: 1
muchisimas gracias luistar te agradesco muchisimo el ejemplo que me has dado realmente necesito parsar el array a flash, pero no tenia ni idea de como hacerlo, nunca antes he trabajado con xml voy a probar tu ejemplo paso a paso y te comento como termina, realmete te agradesco la ayuda muchas gracias
  #7 (permalink)  
Antiguo 29/11/2005, 10:38
 
Fecha de Ingreso: diciembre-2003
Mensajes: 82
Antigüedad: 14 años
Puntos: 1
saludos luistar he probado el codigo para crear el xml pero no me lo crea

Código PHP:
<?php
    $SQLValor 
"SELECT * FROM productos";
    
$QValor mysql_query($SQLValor,$CON) or die("sentencia invalida");

    
//creamos el XML
    
$xml "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<productos>\n";
    while(
$CValores mysql_fetch_array($QValor){
        
$xml.="\t<producto id=\"".$CValores['id']."\" nombre=\"".$CValores['nombre']."\" precio=\"".$CValores['precio']."\"/>\n";
    }
    
$xml.='</productos>';
    
//mostramos el XML
    
echo $xml;
?>
he revisado el codigo para ver si le faltaba algun () o ; y solo encontre un error en el while($CValores = mysql_fetch_array($QValor){ nose si estara malo el xml porque como te digo nunca habia trabajado con el te agradeceria la ayuda saludos .
  #8 (permalink)  
Antiguo 29/11/2005, 11:09
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 12 años, 9 meses
Puntos: 0
gg tienes razon
me comi un parentesis
while($CValores = mysql_fetch_array($QValor)){

ai te mando los archivo para facilitarte las cosas :D
http://es.geocities.com/leo020588/productos.zip
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #9 (permalink)  
Antiguo 29/11/2005, 11:52
 
Fecha de Ingreso: diciembre-2003
Mensajes: 82
Antigüedad: 14 años
Puntos: 1
muchas gracias luistar, he descargado tu ejemplo y me funciona perfecto pero cuando pongo en el explorador www.myservidor.com/productos_xml.php me aparece en blanco, no deverian de aparecerme los productos en xhm? pero si lo cargo desde flash me da los valores de la base unicamete esa es mi duda, muchisimas gracias por la ayuda.
  #10 (permalink)  
Antiguo 29/11/2005, 12:06
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 12 años, 9 meses
Puntos: 0
depende del navegador
si lo vez con el iexplorer es posible que lo muestre como xml sin formato
otros navegadores creo que no lo muestran si no tienen una hoja de estilo asociado
si le pones ver codigo fuente, deberias ver el contido del XML que se genera
:D
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #11 (permalink)  
Antiguo 30/11/2005, 13:15
 
Fecha de Ingreso: diciembre-2003
Mensajes: 82
Antigüedad: 14 años
Puntos: 1
Muchisimas gracias luistar me funciono perfectamente, me has salvado la vida te lo agradesco, una pregunta me ha surgido un problema y es que tengo 2 funciones una con sendAndLoad(); con la cual envio unas variables de un formulario a php y en php calculo los valores y luego los paso a xml para insertarlos en un array en flash el problema es que cuando uno las 2 funciones la funcion del xml no me funciona que es lo que pasa, hay alguna manera de mandar al php con el xml loadvar te agradesco mucho la ayuda denuevo
  #12 (permalink)  
Antiguo 30/11/2005, 15:16
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 12 años, 9 meses
Puntos: 0
humm no te entendi muy bien... gg

haber si me aserco a lo que quieres...
tienes un formulario, con el que envias datos a php, éste te devuelve un valor y de acuerdo a ese valor debes cargar otros datos en xml...

si ese esa es la idea creo que puedes ahorrarte un paso...

puedes enviar los datos de la primera consulta (los que deben devoverte un valor) en la URL de carga del XML

por ejemp... si tu formulario recoje las variables:
variableuno y variabledos...
envias la peticion de carga del xml asi:
mi_xml.load('phpgeneramixml.php?variableuno=1&variabledos=2');
y en phpgeneramixml.php debe procesar primero las variables que se reciben por _GET y si es todo correcto generas el XML de acuerdo al procesos de esas variables, sino cumple los requisitos o sin no se puede obtener un resultado de procesar una variable generas un xml con informacion erronea para que sepas que no se pudo generar...

y si no es ese el caso entonces... no entendi... :P
como es que unes las dos funciones...
//
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #13 (permalink)  
Antiguo 01/12/2005, 13:13
 
Fecha de Ingreso: diciembre-2003
Mensajes: 82
Antigüedad: 14 años
Puntos: 1
Pregunta

Saludos luistar muchisimas gracias por contestar, de la forma que me dices si me funciona tambien pero el problema que tengo es el siguiente tengo un boton que llama a una funcion por ejemplo:



Código PHP:
on (release
{

 
Crear();


}



y en el primer frame tengo

function Crear()
{


productos = new XML();
productos.ignoreWhite true;
productos.onLoad = function(succ)
{
    
    if(
succ)
    {
        
        
ir(this);
        
    }
    
}    
    
    

function 
ir(rexml:XML)
{

var 
productos_array:Array = rexml.firstChild.childNodes;

 

//Aqui creo los campos




}


productos.load('pruexml.php?prima='+valor1+'&tiempo='+valor2);



si saco el codigo de la funcion Crear(); me funciona perfecto pero cuando la pongo me carga las variables y todo pero no me crea los campos y necesitos esa funcion porque es la que llamo desde el boton para poder cargar la funcion xml nose que estoy haciendo mal o si hay otra forma de cargar la funcion te agradeceria mucho la ayuda muchas gracias de antemando por todo
  #14 (permalink)  
Antiguo 01/12/2005, 15:47
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 12 años, 9 meses
Puntos: 0
lo primero que tendrias que hacer es
- crear tu objeto que recibira los datos del xml
- creas un funcion que debe ejecutarse cuando se carguen los datos
- cargar el xml
Puedes cargar los datos de 'productos' desde cualquier lugar y en cualquier momento... porque sabes que cuando se carguen se ejecutará la funcion 'crear'

En el cÓdigo, por ejemp tenemos al posibilidad de cargar los datos desde dos botones distintos enviando variables distintas y esperar resultados distintos...
Como te digo se puede hacer la llamada al método load en cualquier contexto

haaa... y otra cosa a tener en cuenta es... es que cada vez que ejecutemos la funcion 'crear', si lo hacemos con el mismo identificador siempre, entonces los reemplazará en la medida de cuantos hayas tenido y cuantos tienes ahora,,, me explico...
Si al cargar con el 'boton1' obtenemos un XML con 10 nodos hijos entonces crearemos (por lo general) 10 elementos... y si para cuando carguemos con el 'boton2' obtenemos solo 7 nodos hijos entonces los siete primeros serán reemplazados y los tres restantes seran de la anterior llamada

para evitar esto... lo que tienes que hacer antes de volver a crear los elementos... tienes que eliminar todos los anteriores posibles que se pudieron haber creado...

si lo que queremos no es que se reemplacen sino que se agreguen
entonces podemos tener un contador de elementos de hijos nodos

ops creo que estoy complicando un tanto el asunto...

:P
Código PHP:
//1. creamos el objeto XML
productos = new XML();
productos.ignoreWhite true;
productos.onLoad = function(succ) {
    if (
succ) {
        
crear(this);
    }
};
//2. definimos la funcion 'crear', que se ejecutará cada vez que se carga exitosamente los datos de 'productos'
function crear(rexml:XML){
    var 
productos_array:Array = rexml.firstChild.childNodes;
    
//... etc etc
};

//3.
//en algun boton
boton1.onRelease = function(){
    
productos.load('pruexml.php?prima='+valor1+'&tiempo='+valor2);
}
//en algun otro boton
boton2.onRelease = function(){
    
productos.load('pruexml.php?prima='+valor3+'&tiempo='+valor4);

__________________
Si digo que soy mentiroso. ¿Lo soy?

Última edición por luistar; 01/12/2005 a las 15:52
  #15 (permalink)  
Antiguo 01/12/2005, 22:20
 
Fecha de Ingreso: diciembre-2003
Mensajes: 82
Antigüedad: 14 años
Puntos: 1
De acuerdo

Amigo sos 10 solo darte las gracias por toda la ayuda que me has dado, me has ayudado a solucionar los problemas y te lo agradesco, muchas gracias por todo me funciona perfecto
  #16 (permalink)  
Antiguo 01/12/2005, 22:25
 
Fecha de Ingreso: diciembre-2003
Mensajes: 82
Antigüedad: 14 años
Puntos: 1
De acuerdo

Amigo sos 10 solo darte las gracias por toda la ayuda que me has dado, me has ayudado a solucionar los problemas y te lo agradesco, muchas gracias por todo me funciona perfecto
  #17 (permalink)  
Antiguo 02/12/2005, 08:24
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 12 años, 9 meses
Puntos: 0
claro... cuando gustes... pa eso sta el foro :D :)
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #18 (permalink)  
Antiguo 08/06/2006, 09:49
 
Fecha de Ingreso: mayo-2006
Mensajes: 34
Antigüedad: 11 años, 7 meses
Puntos: 0
Luistar, muchisimas gracias por el aporte,

usé tu script para armar un reproductor de audio sacando la información de una base de datos, es INCREIBLEEEEEEEEEEE!!!!

GRACIIIASSSS!!!
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 07:14.