Comunidad de diseño web y desarrollo en internet online

Problema inexplicable con LoadVars y php

Citar            
MensajeEscrito el 05 Ene 2010 01:41 am
Buenas amigos, tras varias horas intentando encontrar donde esta el error y pensando ya en el suicidio, he pensado en que tal vez me podais ayudar, tengo dos codigos.

En un boton AS 2.0 escribo lo siguiente:

Código ActionScript :

 //compra 1
         enviolv.tamañofuente = so_tfuente;
         enviolv.tamañofuente2 = so_tfuente2;
         enviolv.fuente_txt = so_fuente;
         enviolv.fuente_txt2 = so_fuente2;
         enviolv.colorfuente_txt = so_cfuente;
         enviolv.colorfuente_txt2 = so_cfuente2;
         enviolv.colorkmisa_txt = so_ckmisa;
         enviolv.talla_txt = so_talla;
         enviolv.tipokmisa_txt = so_tkmisa;
         enviolv.kmisatxt_txt = so_kmisatxt;
         enviolv.kmisatxtbajo_txt = so_kmisatxtbajo;
         //
                        //compra 2
          enviolv.btamañofuente = bso_tfuente;
         enviolv.btamañofuente2 = bso_tfuente2;
         enviolv.bfuente_txt = bso_fuente;
         enviolv.bfuente_txt2 = bso_fuente2;
         enviolv.bcolorfuente_txt = bso_cfuente;
         enviolv.bcolorfuente_txt2 = bso_cfuente2;
         enviolv.bcolorkmisa_txt = bso_ckmisa;
         enviolv.btalla_txt = bso_talla;
         enviolv.btipokmisa_txt = bso_tkmisa;
         enviolv.bkmisatxt_txt = bso_kmisatxt;
         enviolv.bkmisatxtbajo_txt = bso_kmisatxtbajo;
         //
                        //compra 3
          enviolv.ctamañofuente = cso_tfuente;
         enviolv.ctamañofuente2 = cso_tfuente2;
         enviolv.cfuente_txt = cso_fuente;
         enviolv.cfuente_txt2 = cso_fuente2;
         enviolv.ccolorfuente_txt = cso_cfuente;
         enviolv.ccolorfuente_txt2 = cso_cfuente2;
         enviolv.ccolorkmisa_txt = cso_ckmisa;
         enviolv.ctalla_txt = cso_talla;
         enviolv.ctipokmisa_txt = cso_tkmisa;
         enviolv.ckmisatxt_txt = cso_kmisatxt;
         enviolv.ckmisatxtbajo_txt = cso_kmisatxtbajo;


Compruebo con trace(); que el envio se realiza, y efectivamente parece funcionar.
Aqui viene el codigo php que lo recibe:

Código PHP :

          $msg.= "Primera compra:\n";
            $msg.= " \n";
            $msg.= "1. Texto de la camiseta \n";
            $msg.= "Texto superior:   ".$_POST['kmisatxt_txt']."\n";
            $msg.= "Texto inferior:   ".$_POST['kmisatxtbajo_txt']."\n";
            $msg.= " \n";
            $msg.= "2. Tipo de camiseta \n";
       $msg.= "Tipo camiseta:   ".$_POST['tipokmisa_txt']."\n";
       $msg.= "Color camiseta:   ".$_POST['colorkmisa_txt']."\n";
            $msg.= " \n";
            $msg.= "3. Formato de la letra \n";
            $msg.= "   A) Parte superior \n";
       $msg.= "      Tipo de letra:   ".$_POST['fuente_txt']."\n";
       $msg.= "      Color de letra:   ".$_POST['colorfuente_txt']."\n";
       $msg.= "      Tamaño de letra:   ".$_POST['tamañofuente']."\n";
            $msg.= "   B) Parte inferior \n";
       $msg.= "      Tipo de letra:   ".$_POST['fuente_txt2']."\n";
       $msg.= "      Color de letra:   ".$_POST['colorfuente_txt2']."\n";
       $msg.= "      Tamaño de letra:   ".$_POST['tamañofuente2']."\n";
            $msg.= " \n";
            $msg.= "4. Talla de la camiseta \n";
       $msg.= "Talla:   ".$_POST['talla_txt']."\n";
            $msg.= " \n";
            $msg.= "Segunda compra:\n";
            $msg.= " \n";
            $msg.= "1. Texto de la camiseta \n";
            $msg.= "Texto superior:   ".$_POST['bkmisatxt_txt']."\n";
            $msg.= "Texto inferior:   ".$_POST['bkmisatxtbajo_txt']."\n";
            $msg.= " \n";
            $msg.= "2. Tipo de camiseta \n";
       $msg.= "Tipo camiseta:   ".$_POST['btipokmisa_txt']."\n";
       $msg.= "Color camiseta:   ".$_POST['bcolorkmisa_txt']."\n";
            $msg.= " \n";
            $msg.= "3. Formato de la letra \n";
            $msg.= "   A) Parte superior \n";
       $msg.= "      Tipo de letra:   ".$_POST['bfuente_txt']."\n";
       $msg.= "      Color de letra:   ".$_POST['bcolorfuente_txt']."\n";
       $msg.= "      Tamaño de letra:   ".$_POST['btamañofuente']."\n";
            $msg.= "   B) Parte inferior \n";
       $msg.= "      Tipo de letra:   ".$_POST['bfuente_txt2']."\n";
       $msg.= "      Color de letra:   ".$_POST['bcolorfuente_txt2']."\n";
       $msg.= "      Tamaño de letra:   ".$_POST['btamañofuente2']."\n";
            $msg.= " \n";
            $msg.= "4. Talla de la camiseta \n";
       $msg.= "Talla:   ".$_POST['btalla_txt']."\n";
            $msg.= " \n";
            $msg.= "Tercera compra:\n";
            $msg.= " \n";
            $msg.= "1. Texto de la camiseta \n";
            $msg.= "Texto superior:   ".$_POST['ckmisatxt_txt']."\n";
            $msg.= "Texto inferior:   ".$_POST['ckmisatxtbajo_txt']."\n";
            $msg.= " \n";
            $msg.= "2. Tipo de camiseta \n";
       $msg.= "Tipo camiseta:   ".$_POST['ctipokmisa_txt']."\n";
       $msg.= "Color camiseta:   ".$_POST['ccolorkmisa_txt']."\n";
            $msg.= " \n";
            $msg.= "3. Formato de la letra \n";
            $msg.= "   A) Parte superior \n";
       $msg.= "      Tipo de letra:   ".$_POST['cfuente_txt']."\n";
       $msg.= "      Color de letra:   ".$_POST['ccolorfuente_txt']."\n";
       $msg.= "      Tamaño de letra:   ".$_POST['ctamañofuente']."\n";
            $msg.= "   B) Parte inferior \n";
       $msg.= "      Tipo de letra:   ".$_POST['cfuente_txt2']."\n";
       $msg.= "      Color de letra:   ".$_POST['ccolorfuente_txt2']."\n";
       $msg.= "      Tamaño de letra:   ".$_POST['ctamañofuente2']."\n";
            $msg.= " \n";
            $msg.= "4. Talla de la camiseta \n";
       $msg.= "Talla:   ".$_POST['ctalla_txt']."\n";
            $msg.= " \n";

Pues bien, la primera compra me da 'undefined', la segunda y la tercera funcionan correctamente.
¿Como es posible? el codigo es el mismo, solo cambian los datos que recibe.
Como digo mi desesperacion es critica.

Un saludo.

Por karlos_ubuntu

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Ene 2010 01:50 am
Cuando pasan estas cosas, siempre es error de tipeo o ese tipo de cosas. La verdad te recomendaría postear algo más acotado para recibir ayuda o retipear el "problema" y ya.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 05 Ene 2010 01:53 am
Disculpa pero no te he entendido, ' tipeo ' no se a que te refieres.

Por karlos_ubuntu

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Ene 2010 03:57 am
Error típico de escritura, uno piensa que esta transfiriendo todo igual pero no es así.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 05 Ene 2010 04:08 am
Pero lo que no entiendo es si yo escribo dentro de trace(); me da todo correcto, o sea el envio es exactamente lo que quiero enviar. ¿Por que en Flash me da todo correcto y solo aparecen la segunda y tercera compra en el PHP? he buscado algun error durante horas y no hay manera. La verdad es que el LoadVars me a dado ya mas de un problema incomprensible y estoy un poco cansado de este comando XD

Por karlos_ubuntu

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Ene 2010 04:10 am
Un consejo, cuando manejas grandes cantidades de datos, es mejor ser prolijo... ¿Por que no envias todo en un solo LoadVars como un pseudo Array?

O sea, envía la info compilada en unas cuantas variables, separados los datos por un caracter, ejemplo "," y luego del PHP le das un explode y te quedas con un Array prolijo y listo para ser usado.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 05 Ene 2010 04:17 am
XD me pides mucho en PHP, hace poco que lo manejo y estoy verde. Tengo claro lo que me quieres decir en flash, si me puedes dar un ejemplo simple te lo agradeceria.

Por karlos_ubuntu

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Ene 2010 05:07 am
Si, claro... Hagamos un ejercicio simple:

Código ActionScript :

var LV:LoadVars = new LoadVars();
LV.compra = "10,20,30";
LV.sendAndLoad("recieve.php",LV,"POST");


Código PHP :

<?php
$compras = explode(",", $_POST['compra']);
echo "Primer Compra: ".$compras[0];
echo "Segunda Compra. ".$compras[1];
echo "Última Compra: ".$compras[2];
?>


¿Mucho más sencillo y pulcro no te parece?

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 05 Ene 2010 05:15 am
Gracias por tu codigo, probare a ver...llevo 6 horas con esto y no hay manera, ya estoy agotado con el maldito LoadVars, voy a hacer el ultimo intento con tu codigo.

Por karlos_ubuntu

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Ene 2010 06:43 am
Tras infinidad de intentos distintos fallidos he probado tu codigo, como era de esperar hago las comprobaciones con trace(); una vez utilizado tu codigo y da todo como se espera, sin ningun problema. Ahora bien inexplicablemente el PHP programado como indicas, aparece el insoportable 'undefined' que tanta rabia le tengo ya.
Sinceramente es desesperante llevo 7 horas y 45 minutos y no hay manera!
Si tienes otra idea te escucho con interes.

Un saludo.

Por karlos_ubuntu

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Ene 2010 01:18 pm
¿Que te da undefined? En mi código no hay algo que posiblemente te devuelva undefined. ¿Exactamente que "comprobaciones haces"?

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 07 Ene 2010 02:06 am
Hola amigo aqui te facilito otro codigo que tampoco funciona con LoadVars:

Código ActionScript :

on (release) {
    n=_parent.n_nombre.text;
    t=_parent.t_nombre.text;
    e=_parent.e_nombre.text;
    m=_parent.mess.text;
//
   var enviolv:LoadVars = new LoadVars();
   var recibolv:LoadVars = new LoadVars();
   enviolv.nombre = n;
   enviolv.empresa = t;
   enviolv.email = e;
   enviolv.mensaje = m;
   enviolv.sendAndLoad("correo.php", recibolv, "POST");

// hago las comprobaciones y sorpresa

   trace(enviolv.nombre);      //undefined
   trace(n);                              //correcto

   recibolv.onLoad = function() {
      if (recibolv.rpta == "ok") {
   _parent.n_name.text = "";
   _parent.e_name.text = "";
   _parent.t_name.text = "";
    _parent.estado.text = "Enviado con éxito";
   // trace(_parent.estado.text);
      } else {
   _parent.n_name.text = "";
   _parent.e_name.text = "";
   _parent.t_name.text = "";
   _parent.estado.text = "Error en el envio";
   // trace(_parent.estado.text);
        }
}
}


En este caso es flash quien me da undefined y no PHP.
Este es otro de los muchos codigos que escribo con LoadVars y no funciona. Solo algunas veces me funciona.

Por karlos_ubuntu

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Ene 2010 02:19 am
Lo que hice con tu codigo fue adaptarlo al mio que me da error (el primero que te expuse), una vez hecho esto utilice trace(); para comprobar si existia algun error en el envio utilice trace(enviolv.nombre); y la comprobacion fue correcta y no dio ningun error en flash una vez compilado. Ahora bien con los datos obtenidos PHP lo que hace es enviar un correo a mi cuenta, pues como te comente en el primer caso la obtencion por parte de PHP de la primera compra da como resultado undefined pero todas las demas siendo el mismo codigo no daba ningun error... como te digo he tenido ya varios problemas con LoadVars y PHP, no se donde narices esta el fallo, tal vez al ser flash mas rapido que PHP este se colapsa o que se yo, pero la verdad es que es desesperante.

Por karlos_ubuntu

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Ene 2010 02:22 am
Ya he visto el fallo tonto del parent.n_nombre.text; y parent.n_name.text; lo acabo de cometer porque parte lo he copiado y parte lo he escrito a mano, a sido un fallo de ahora, no esta en la pelicula flash XD.

Por karlos_ubuntu

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Ene 2010 03:07 am
So... ¿Se arregló tu problema?

Dicho de paso... Crear un LoadVars directo en un botón es atroz para la prolijidad. Más desprolijo trabajes, peor te irá en los resultados finales.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 07 Ene 2010 03:14 am
Que va no se soluciono, al final lo programe de otra manera que si que iva pero no como yo queria, al final la solucion fue un loadvars muy simple, que si funcionaba. En el segundo caso lo que hice fue crear un swf a parte y utilizar loadmovie para cargarlo en la pagina, de esta manera si funcionaba, una vez mas no como yo queria...

Agradezco tu ayuda.

Por karlos_ubuntu

10 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.