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

flash + php (sendAndLoad)

Estas en el tema de flash + php (sendAndLoad) en el foro de Flash y Actionscript en Foros del Web. Hace unas semanas que estoy luchando con flash+php+mysql, ya logre algun tipo de comunicación, emepece con: flash ---> php flash ---> php ----> flash flash ...
  #1 (permalink)  
Antiguo 02/08/2004, 22:55
Avatar de chaval  
Fecha de Ingreso: febrero-2003
Ubicación: en elgun lugar del cyberespacio
Mensajes: 118
Antigüedad: 14 años, 10 meses
Puntos: 0
flash + php (sendAndLoad)

Hace unas semanas que estoy luchando con flash+php+mysql, ya logre algun tipo de comunicación, emepece con:

flash ---> php
flash ---> php ----> flash
flash ---> php ----> mysql -----> php

y ahora voy por la ultima:

flash ---> php ----> mysql -----> php ----> flash

Aca es donde se me complicó mas de los previsto :(

yo cree una BD simple (llamada dbflash) y desde un boton de flash llamo a un php para que la consulte y muestre el resultado en php.
el php es asi:
Código PHP:
<?php
mysql_connect
("localhost","usuario","contraseña");
mysql_select_db("dbflash");

$qr mysql_query("SELECT * FROM huracanes WHERE LEFT(provincia,1) = '".$HTTP_POST_VARS['prov']."'");

// mostrar filas de visitas (1)
$nrows mysql_num_rows($qr);
for (
$i=0$i $nrows$i++) {
  
$row mysql_fetch_array($qr);
  echo 
$row['nombre']."<br>";
  echo 
$row['localidad']."<br>";
  echo 
" ".$row['direccion']."<Br>";
  echo 
" ".$row['fundacion']."<Br>";
  echo 
" ".$row['titulos']."<Br>"."<Br>";
}
?>
y el en el boton de flash lo hago asi:
Código PHP:
on (release) {
    var 
= new LoadVars();
    
c.prov "b";
    
c.send("prueba.php""_self""POST");

por ejemplo este boton cargara toda la informacion que esta dentro de buenos aires, esto anda de maravillas (flash ---> php ----> mysql -----> php )

Por otro lado cree un php cualquiera como para estudiar como se levantaba una variable y un boton tambien desde flash.
El Php es asi:
Código PHP:
<?php

$lastName 
"Gonzales";
$firstName "Juan";
$adress "Rivadavia 1523 4º Piso";
$phone "301-424-5555";
$mail "[email protected]";
$web "info.htm";

echo 

"lastName=".$lastName.
"&firstName=".$firstName.
"&adress=".$adress.
"&phone=".$phone.
"&mail=".$mail.
"&web=".$web;

?>
y en el boton de flash esto:
Código PHP:
on (release) {
    var 
= new LoadVars();
    
c.load("prueba.php");
    
c.onLoad = function() {
        
carga_php.htmlText this.lastName+'<br>'+
                             
this.firstName+'<br>'+
                             
this.adress+'<br>'+
                             
this.phone+'<br>'+
                             
// mail sin link
                             
this.mail+'<br>'+
                             
// mail con link
                             
"<a href='mailto:" this.mail "'>" "<font color='#990099'>" this.mail "</font>" "</a>"+'<br>'+
                             
//html dentro de la carpeta info
                             
"<a href='" "info/" this.web "'>" "<font color='#990000'>" "Información detallada" "</font>" "</a>"
                             
;
    };

y se imprime en un texto dinámico llamado "carga_php".
Esto tambien anda de maravillas (flash ---> php ----> flash)

Y ahora viene el gran problema, quiero que desde un boton llame a un php que asu vez lea una BD e imprimir el resultado en un texto dinámico "carga_php", asi al fin logo el fin de mi cometido:

flash ---> php ----> mysql -----> php ----> flash

Entiendo que esto se hace con "senAndLoad", pero no llego a comprender bien como, hice varias pruebas y el resultado es siempre negativo :(
¿alguien me puede dar una mano?

gracias
El Chaval
__________________
CHAVAL
Buenos Aires, Argentina, América, La Tierra,
Via Lactea, Universo Tridemensional... :pensando:
  #2 (permalink)  
Antiguo 03/08/2004, 08:16
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.895
Antigüedad: 15 años
Puntos: 2
espero que te sirva ,un saludo

function recibo1()
{

mensaje.text = this["mesaje"]; //muestra lo que le respondio php

}

// envia datos
enviar = new LoadVars();
recibir = new LoadVars();
enviar.user =user; //manda a php
enviar.clave =clave; //manda a php
recibir.onload = recibo1; // muestra cuando los datos se cargaron
enviar.sendAndLoad("/respuesta.php", recibir, "post");
  #3 (permalink)  
Antiguo 03/08/2004, 13:00
Avatar de chaval  
Fecha de Ingreso: febrero-2003
Ubicación: en elgun lugar del cyberespacio
Mensajes: 118
Antigüedad: 14 años, 10 meses
Puntos: 0
gracias mveraa, pero algo sigo haciendo mal.
siguiendo tu consejo en el boton flash puse hice esto:
Código PHP:
on (release) {
    function 
recibo1() {
        
mensaje.htmlText this.provincia+'<br>'+
                     
this.nombre+'<br>'+
                     
this.localidad+'<br>'+
                     
this.direccion+'<br>'+
                     
this.fundacion+'<br>'+
                     
this.titulos;
        
//muestra lo que le respondio php
    
}
    
// envia datos
    
enviar = new LoadVars();
    
recibir = new LoadVars();
    
enviar.prov "b"//b para buenos aires
    
recibir.onload recibo1;
    
// muestra cuando los datos se cargaron
    
enviar.sendAndLoad("prueba.php"recibir"post");

no use enviar.user =user; y enviar.clave =clave; porque eso lo puse en el php por seguridad:
Cita:
mysql_connect("servidor","user","pass");
mysql_select_db("nombre_de_DB");
Tambiern use mensaje.htmlText en lugar de mensaje.text porque seguro que cuando funcione voy a crear un link con alguno de los datos y tambien probe con this["provincia"] en lugar de this.provincia usando mensaje.text

Tal vez tambien tenga algun problema mi script php (del cual entiendo poco) que llame prueba.php y cree 2 distintos par probar con uno y otro:
1.
Código PHP:
<?php
mysql_connect
("localhost","user","pass");
mysql_select_db("dbflash");

$qr mysql_query("SELECT * FROM huracanes WHERE LEFT(provincia,1) = 
'"
.$HTTP_POST_VARS['prov']."'");

// mostrar filas de visitas (1)
$nrows mysql_num_rows($qr);
for (
$i=0$i $nrows$i++) {
  
$row mysql_fetch_array($qr);
  echo 
$row['nombre']."<br>";
  echo 
$row['localidad']."<br>";
  echo 
" ".$row['direccion']."<Br>";
  echo 
" ".$row['fundacion']."<Br>";
  echo 
" ".$row['titulos']."<Br>"."<Br>";
}
?>
2.
Código PHP:
<?php
mysql_connect
("localhost","user","pass");
mysql_select_db("dbflash");

$qr mysql_query("SELECT * FROM huracanes WHERE LEFT(provincia,1) = 
'"
.$HTTP_POST_VARS['prov']."'");

echo 

"provincia=".$provincia.
"&nombre=".$nombre.
"&localidad=".$localidad.
"&direccion=".$direccion.
"&fundacion=".$fundacion.
"&titulos=".$titulos;

?>
Voy a seguir estudiandolo pero la verdades que no encuentro la vuelta :(

gracias
El Chaval
__________________
CHAVAL
Buenos Aires, Argentina, América, La Tierra,
Via Lactea, Universo Tridemensional... :pensando:

Última edición por chaval; 03/08/2004 a las 13:14
  #4 (permalink)  
Antiguo 03/08/2004, 22:53
Avatar de chaval  
Fecha de Ingreso: febrero-2003
Ubicación: en elgun lugar del cyberespacio
Mensajes: 118
Antigüedad: 14 años, 10 meses
Puntos: 0
estube haciendo algunos cambios pero sigue sin funcionar ¿podre hacerlo desde un boton o function tiene que ir en el primer frame y llamarlo desde el boton?

en el boton flash hice esto ahora:

Código PHP:
on (release) {
    function 
recibo1() {
            var 
i;
            
mensaje.htmlText "";
            for (
i=0this.ni++) {
                
mensaje.htmlText this+["provincia"+i]+'<br>'+
                 
this["nombre"+i]+'<br>'+
                 
this["localidad"+i]+'<br>'+
                 
this["direccion"+i]+'<br>'+
                 
this["fundacion"+i]+'<br>'+
                 
this["titulos"+i];
                             }
    }
    
enviar = new LoadVars();
    
recibir = new LoadVars();
    
enviar.prov "b";
    
recibir.onload recibo1;
    
enviar.sendAndLoad("prueba.php"recibir"post");

y en el php:

Código PHP:
<?php
mysql_connect
("localhost","usuario","clave");
mysql_select_db("nombre_bd");

$qr mysql_query("SELECT * FROM huracanes WHERE LEFT(provincia,1) = 
'"
.$HTTP_POST_VARS['prov']."'");

// mostrar filas de visitas (1)
$nrows mysql_num_rows($qr);
$rString "n=".$nrows;

for (
$i=0$i $nrows$i++) {
  
$row mysql_fetch_array($qr);
  echo 
$row['nombre']."<br>";
  echo 
$row['localidad']."<br>";
  echo 
" ".$row['direccion']."<Br>";
  echo 
" ".$row['fundacion']."<Br>";
  echo 
" ".$row['titulos']."<Br>"."<Br>";
}
echo 
$rString;
?>
¿alguien entiende donde estoy equivocandome?

aca hay un ejempplo de una agenda que trabaja con flash+php+mysql :
http://www.macromedia.com/es/devnet/...ashmx_php.html
la hice funcionar pero no llego a comprender algunas cosas y lo que quiero es comprender y no copiar.
es un tanto complicada para alguien como yo que esta experimentando con esto ¿alguien sabe de algun ejemplo que sea mas simple?

gracias
El Chaval
__________________
CHAVAL
Buenos Aires, Argentina, América, La Tierra,
Via Lactea, Universo Tridemensional... :pensando:

Última edición por chaval; 03/08/2004 a las 23:23
  #5 (permalink)  
Antiguo 04/08/2004, 10:45
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.895
Antigüedad: 15 años
Puntos: 2
hola , primero estoy intentando desenredar el tema pero a vuelo te pido que chequees lo siguiente

si llamas directamente a prueba.php(tu codigo) ¿que aparece?

a mi por ejemplo me devuelve algo asi :
&marca0=DAEWOO&modelo0=TICO&ano0=2000&tipo0=AUTMOV IL&motor0=2.3&equip10=RUEDAS&equip20=FRENOS&equip3 0=LLANTAS&foto10=uno.jpg&foto20=dos.jpg&cuanto=1

la ruta prueba.php ¿ esta bien hecha? , ¿estas probando en un hoting tu swf?

por ultimo usa :
this["ano"+0]; // si solo debuenve 1
recibir["ano"+0]; // fijate lo saco de ahi &ano0=2000(te recomiendo asi en vez de this )

si son mas recibir["ano"+1]; y asi

yo personalmete no llamo desde un boton y por seguridad convierte la matriz recibir a global para que sea leida desde cualquier parte (botones,funciones,etc).

_global.recibir = new LoadVars();


bueno cualquier cosa aqui estamos.
  #6 (permalink)  
Antiguo 04/08/2004, 12:26
Avatar de chaval  
Fecha de Ingreso: febrero-2003
Ubicación: en elgun lugar del cyberespacio
Mensajes: 118
Antigüedad: 14 años, 10 meses
Puntos: 0
si corro directo el php me da como error:
Cita:
Notice: Undefined index: prov in D:\WebServer\huracan_php_flash_mysql\3_flash\prueb a.php on line 6
porque en esa linea espera una variable del flash:
Cita:
$qr = mysql_query("SELECT * FROM huracanes WHERE LEFT(provincia,1) = '".$HTTP_POST_VARS['prov']."'");
si la cambio por esta:
Cita:
$qr = mysql_query("SELECT * FROM huracanes");
funciona perfecto mostrando el contenido de la BD

si pruebo con otro script:
Código PHP:
<?php
mysql_connect
("localhost","dbflash","1234");
mysql_select_db("dbflash");


$qr mysql_query("SELECT * FROM huracanes");
// WHERE LEFT(provincia,1) = '".$HTTP_POST_VARS['prov']."'");

// mostrar filas de visitas (1)
$nrows mysql_num_rows($qr);
$rString "n=".$nrows;

for (
$i=0$i $nrows$i++) {
  
$row mysql_fetch_array($qr);
  
$rString .= "&nombre".$i."=".$row['nombre']."&localidad".$i."=".$row['localidad'];
  
$rString .= "&direccion".$i."=".$row['direccion']."&fundacion".$i."=".$row['fundacion'];
  
$rString .= "&titulos".$i."=".$row['titulos']."&info".$i."=".$row['info'];
}
echo 
$rString;
?>
me devuelve:

n=3&nombre0=Huracan de Tres Arroyos&localidad0=Tres Arroyos&direccion0=San Martin 3264&fundacion0=29 de Octubre de 1945&titulos0=1923,1943,1967,1977&info0=&nombre1=H uracan de Mar del Plata&localidad1=Mar del Plata&direccion1=Velazco 1414&fundacion1=3 de febrero de 1915&titulos1=1933,1956&info1=&nombre2=Huracan de Mendoza&localidad2=El Cerrito&direccion2=pirancha 13412&fundacion2=23 de diciembre de 1919&titulos2=1923,1966&info2=

Yo estoy probando todo sobre un IIS con php y mysql, se que seria mejor probarlo sobre apache pero por el momento no puedo.

Puse this["nombre"+i]; porque en cada es variable la cantidad de data que se va a leer desde mysql

Voy a probar lo de _global.recibir = new LoadVars();
¿dices que poner esto y function en el frame 1 para que sean leidos desde cualquier lado?
yo he visto que se lo llama de MC pero no entiendo como hacerlo ¿tu llamas desde MC?¿como lo haces esto?

Mi idea es crear un mapa de Argentina y que cada provincia sea un boton o MC que llame al php para que este le devuelva una determinada informacion.

si tienes algun ejemplo enviamelo a [email protected]

de nuevo gracias, de alguna manera lo voy a entender, estoy leyendo todo tipo de bibliografia para entender mas porque nunca trabaje con paginas dinámicas ni con mysql.

gracias
El Chaval
__________________
CHAVAL
Buenos Aires, Argentina, América, La Tierra,
Via Lactea, Universo Tridemensional... :pensando:
  #7 (permalink)  
Antiguo 04/08/2004, 13:01
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.895
Antigüedad: 15 años
Puntos: 2
bueno lo que te propongo es hacer algo de cero para que entiendas la base porque veo que es muy cabron lo que intentas y ahora estoy algo ocupado te parece si te mando un fla que ingresa usar y clave y responde si acepto

creo que hay que aprende de lo simple a lo complejo.
tambien puedes instalar el easyphp ,te instala php,mysql,myadmin yo siempre lo uso , pon la version 1.5

un saludo



en la pregunta de abajo : si entiendo bien quieres poner una foto que la carga desde el servidor y la pone en scena usando el nombre que cargas de mysql

Última edición por mveraa; 04/08/2004 a las 13:16
  #8 (permalink)  
Antiguo 04/08/2004, 13:25
Avatar de chaval  
Fecha de Ingreso: febrero-2003
Ubicación: en elgun lugar del cyberespacio
Mensajes: 118
Antigüedad: 14 años, 10 meses
Puntos: 0
es verdad, creo que estoy intentando correr un triatlon y todavia no aprendi a caminar , enviame el ejemplo a [email protected] asi lo estudio y despues lo voy complicando de a poco.

Prometo que en cuanto lo haga funcionar y sobre todo lo entienda, creo un tutorial simple para ayudar al que le sirva.

gracias y salu2
El Chaval
__________________
CHAVAL
Buenos Aires, Argentina, América, La Tierra,
Via Lactea, Universo Tridemensional... :pensando:
  #9 (permalink)  
Antiguo 04/08/2004, 14:30
Avatar de chaval  
Fecha de Ingreso: febrero-2003
Ubicación: en elgun lugar del cyberespacio
Mensajes: 118
Antigüedad: 14 años, 10 meses
Puntos: 0
sisisisisis, he logrado hacerlo funcionar
de seguro que debe existir alguna mejor forma, pero yo descubrí esta.
paso a explicar por si a alguien le interesa:
cree un boton y le agregue esto:
Código PHP:
on (release) {
enviar();

y en el primer frame de un layer puse una function:
Código PHP:
function enviar() {
var 
enviar = new LoadVars();
enviar.prov "b";
enviar.onLoad = function(success) {
            var 
i;
            
mensaje.htmlText "";
            for (
i=0this.ni++) {
                
mensaje.htmlText this+["provincia"+i]+'<br>'+
                  
this["nombre"+i]+'<br>'+
                  
this["localidad"+i]+'<br>'+
                  
this["direccion"+i]+'<br>'+
                  
this["fundacion"+i]+'<br>'+
                  
this["titulos"+i];
                  }    
};
enviar.sendAndLoad("prueba.php"enviar"POST");

y modifique el script php original asi:
Código PHP:
<?php
mysql_connect
("servidor","usuario","clave");
mysql_select_db("nombre de la BD");

$tab $HTTP_POST_VARS['prov'];
$qr mysql_query("SELECT * FROM huracanes 
WHERE LEFT(provincia,1) = '"
.$tab."' ORDER BY provincia");

$nrows mysql_num_rows($qr);
$rString "n=".$nrows;

for (
$i=0$i $nrows$i++) {
    
$row mysql_fetch_array($qr);
    
$rString .= "&provincia".$i."=".$row['provincia'];
    
$rString .= "&nombre".$i."=".$row['nombre'];
    
$rString .= "&localidad".$i."=".$row['localidad'];
    
$rString .= "&direccion".$i."=".$row['direccion'];
    
$rString .= "&fundacion".$i."=".$row['fundacion'];
    
$rString .= "&titulos".$i."=".$row['titulos'];
}
echo 
$rString;
?>
ahora solo me falta hacer que la variable "prov" cambie dependiendo del boton, pero no creo que eso sea dificil, espero :)

gracias y salu2
El Chaval
__________________
CHAVAL
Buenos Aires, Argentina, América, La Tierra,
Via Lactea, Universo Tridemensional... :pensando:
  #10 (permalink)  
Antiguo 04/08/2004, 14:50
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.895
Antigüedad: 15 años
Puntos: 2
muy bien , te felicito en realidad es muy simple de hacer pero al principio parece algo complejo .

un saludo
cualquiercosa ahi esta mi mail [email protected]
  #11 (permalink)  
Antiguo 04/08/2004, 15:39
Avatar de chaval  
Fecha de Ingreso: febrero-2003
Ubicación: en elgun lugar del cyberespacio
Mensajes: 118
Antigüedad: 14 años, 10 meses
Puntos: 0
mveraa gracias a los consejos que me diste pude ir deduciendo cosas haciendo trabajar mi cabezota :D

ya descubrí tambien lo de la variable "prov" distinta para cada boton
en el boton agrego:
var botonProvincia = "b"; (por ejemplo)

y en la function modifico:
enviar.prov = "b";
por:
enviar.prov = botonProvincia;

Ahora tengo otro problema que es que solo me lee el ultimo item de la BD pero ya tanbien lo voy a descubrir

edit: ya lo descubrí, era una estupides que me habia olvidado, en lugar de:
"mensaje.htmlText = this...."
va:
"mensaje.htmlText += this...."

gracias
El Chaval
__________________
CHAVAL
Buenos Aires, Argentina, América, La Tierra,
Via Lactea, Universo Tridemensional... :pensando:

Última edición por chaval; 04/08/2004 a las 17:02
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 14:52.