Comunidad de diseño web y desarrollo en internet online

Enviar un array contenido en un datagrid a una base de datos

Citar            
MensajeEscrito el 29 Jul 2005 08:15 pm
Que tal, mi pregunta es acerca de que ya se como enviar variables (digamos un registro) de flash por php a una base de datos incluso insertarlas a una tabla.

Ahora mi pregunta es como hacer que el contenido de un datagrid que se va llenando con las entradas que da el usuario, se inserte en una tabla de una base de datos, es decir como envio todo ese arreglo contenido en el datagrid a la base de datos.

Este es la manera como lleno mi datagrid, pero no se como enviar ese array para insertarlo en una tabla...., pls denme tips, utilizo php del lado del server.

Código :

alSeleccionar.change = function(objeto){
   if (objeto.target == pelis_grid){
        solGrid.addItem({Equipo: objeto.target.getItemAt(objeto.target.selectedIndex).Equipo,
                   Marca:   objeto.target.getItemAt(objeto.target.selectedIndex).Marca,
                   Modelo: objeto.target.getItemAt(objeto.target.selectedIndex).Modelo,
                   Serie: objeto.target.getItemAt(objeto.target.selectedIndex).Serie,
                   Vigencia: objeto.target.getItemAt(objeto.target.selectedIndex).Vigencia,
                   Calibrado: objeto.target.getItemAt(objeto.target.selectedIndex).Calibrado,
                   Proxima: objeto.target.getItemAt(objeto.target.selectedIndex).Proxima,
                   Precio: parseFloat(objeto.target.getItemAt(objeto.target.selectedIndex).Precio)});
      datossol.items = solGrid;
      sol_grid.dataProvider = datossol.dataProvider;
      sol_grid.hScrollPolicy = "auto";
      sol_grid.setStyle("fontSize", 9);
      sol_grid.getColumnAt(0).width = 120;
      sol_grid.getColumnAt(1).width = 80;
      sol_grid.getColumnAt(2).width = 80;
      sol_grid.getColumnAt(3).width = 80;
      sol_grid.getColumnAt(4).width = 50;
      sol_grid.getColumnAt(5).width = 60;
      sol_grid.getColumnAt(6).width = 60;
      sol_grid.getColumnAt(7).width = 60;
      sol_grid.getColumnAt(0).setStyle("textAlign", "left");
      sol_grid.getColumnAt(1).setStyle("textAlign", "left");      
      sol_grid.getColumnAt(2).setStyle("textAlign", "left");
      sol_grid.getColumnAt(3).setStyle("textAlign", "left");
      sol_grid.getColumnAt(4).setStyle("textAlign", "left");
      sol_grid.getColumnAt(5).setStyle("textAlign", "left");
      sol_grid.getColumnAt(6).setStyle("textAlign", "left");
      sol_grid.getColumnAt(7).setStyle("textAlign", "left");
      sol_grid.editable=true;
      sol_grid.getColumnAt(0).editable = false;
      sol_grid.getColumnAt(1).editable = false;
      sol_grid.getColumnAt(2).editable = false;
      sol_grid.getColumnAt(3).editable = false;
      sol_grid.getColumnAt(4).editable = true;
      sol_grid.getColumnAt(5).editable = false;
      sol_grid.getColumnAt(6).editable = false;
      sol_grid.getColumnAt(7).editable = false; 
      
      sumador = solGrid;
      suma=0;
      for(var i=0;i<=solGrid.length-1;i++) 
         { 
            suma+= parseFloat(sumador.getItemAt(i)["Precio"]); 
         } 
         sumador.slice(0);
         total_txt.text = suma;
         i_txt.text = i;
         //trace(suma)
   }
}
pelis_grid.addEventListener("change", alSeleccionar);

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 29 Jul 2005 08:53 pm
No se si se pueda hacer lo que quiero, agradeceria me informaran si se puede realizar esto con flash, y que tendria que hacer, no se como leer todo el array, pasarselo a PHP y que este lo inserte en la base de datos.

O si saben de algun otro metodo, no se, en serio denme un tip, o un ejemplo talves.

Gracias anticipadas.

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 01 Ago 2005 06:25 pm
Algun ejemplo.... pls

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 03 Ago 2005 02:03 am
Directamente, el array, no podras pasarlo a mysql, pero con unas pocas líneas, en php, puedes tratar el arreglo, que le envies desde Flash, algo como:

Código :

<?
function modificaAlgo($Arreglo){
   foreach($Arreglo as $fila){
      $this->campos="  ";
      $this->valores="  ";
      foreach($fila as $campo => $valorCampo){
         $this->campos .= "$campo, ";
         $this->valores .= "'$valorCampo', ";
      }
      $this->campos=substr($this->campos,0,(strlen($this->campos)-2));
      $this->valores=substr($this->valores,0,(strlen($this->valores)-2));   
      $this->sql="
      INSERT INTO tabla
      ($this->campos)
      VALUES
      ($this->valores)";
      $Resultado=mysql_query($this->sql);
      if(!$Resultado){
         return mysql_error();
      }
   }
   return true;
}
?>



Obviamente, te faltarían validadores de datos y demás, pero bueno, espero te de una idea. :wink:

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

clabbrowser
Citar            
MensajeEscrito el 03 Ago 2005 01:50 pm
Javierdaniel o a quien corresponda:

Heber si me puedes ayudar, de antemano gracias.

Mira mi primera duda es como enviar todas mis variables de flash a PHP, es decir todo mi arreglo, te puedes dar cuenta en mi primer post de este tema como lo voy generando. (mi arreglo se llama solGrid).

estoy haciendo pruebas pero no me jala, quiero enviar todas mis variables o todo mi arreglo al presionar mi boton enviar, al cual asocio esta funcion

Código :

function enviar() {
   enviar_lv.solicitud = solGrid;
   enviar_lv.send("solicitud.php", "POST");
}


En mi php trato de cachar mi arreglo asi:

Código :

/* igualamos las variables enviadas */
foreach($_POST as $solicitud => $valor){
   $asignacion = "\$" . $solicitud . "='" . $valor . "';";
   eval($asignacion);
   print "$asignacion";
}


El print anterior solo me muestra esto cuando envio 2 registros:

$solicitud='[object Object],[object Object]solicitud=[object Object],[object Object]';

Sugerencias.... en verdad las necesito. Gracias

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 03 Ago 2005 02:00 pm
manuel_cfe, como ya te he visto trabajando en Remoting, creí que lo estabas haciendo usando, este.

Con Flash Remoting, si puedes enviar arreglos, directamente de Flash, solo lo envias como arreglo y ya.

Con loadVars, solo mandas texto. Hay lo que puedes hacer, es enviar un arreglo convertido a string.

Código :

   enviar_lv.solicitud = solGrid.join("-");
   enviar_lv.send("solicitud.php", "POST");


En php, algo como:


Código :

$datos=split($_POST["solicitud"],"-");
foreach($datos as $solicitud => $valor){
   $asignacion = "\$" . $solicitud . "='" . $valor . "';";
   eval($asignacion);
   print "$asignacion";
}


Saludos :wink:

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 03 Ago 2005 02:21 pm
Ok, modifique mi flash y mi php deacuerdo a tu post anterior, esto es lo que me imprime cuando envio mi array con 2 registros:

$0='-';

Que paso?

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 03 Ago 2005 02:29 pm
Bueno, básicamente te platico la idea, a ciencia cierta, desconozco la estructura de tus datos.

¿Por qué no pruebas así?

Código :

enviar_lv.solicitud = solGrid.join("-");
trace(enviar_lv.solicitud);
enviar_lv.send("solicitud.php", "POST");


De esta forma, vas a estar probando, hasta que la informacion, quede, en puro texto, por ejemplo, para un arreglo simple(de hecho primero prueba con uno simple, despues con uno más complejo):

arreglo=new array("daniel","daniel2","daniel3");
trace(arreglo.join("-"));

Como vez, me arroja un String, en el que los elementos están separados, por "-". Como lo que tu tienes, es una matriz, tendrías, que convertir, los arrays interiores, en String, también.

Como te digo, primero prueba, con un array sencillo, en un fla, totalmente nuevo al que estas. Lo importante es que primero entiendas y practiques lo que vas a hacer.

Suerte!
^^

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 03 Ago 2005 03:34 pm
Ok... en un fla aparte pongo esto:

Código :

enviar_lv= new LoadVars();

arreglo=new Array("daniel","daniel2","daniel3");
enviar_lv.solicitud = arreglo.join("-");
trace(arreglo.join("-"));
trace(enviar_lv.solicitud);


No hay problema en los 2 trace como dices me da los String separados por "-".

Pero en el fla donde quiero que quede pongo esto

Código :

for(var i=0;i<=solGrid.length-1;i++) { 
   suma+= parseFloat(sumador.getItemAt(i)["Precio"]); 
   enviar_lv.solicitud = solGrid.join("-");
   celda.text=enviar_lv.solicitud; 
          }


y lo que me aparece cada vez que agrego un registro en celda.text es esto:

[object Object]-[object Object]

Porque no me pone todo mi registro, si es lo mismo ....

??? Gracias

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 03 Ago 2005 03:35 pm
Ok... en un fla aparte pongo esto:

Código :

enviar_lv= new LoadVars();

arreglo=new Array("daniel","daniel2","daniel3");
enviar_lv.solicitud = arreglo.join("-");
trace(arreglo.join("-"));
trace(enviar_lv.solicitud);


No hay problema en los 2 trace como dices me da los String separados por "-".

Pero en el fla donde quiero que quede pongo esto

Código :

for(var i=0;i<=solGrid.length-1;i++) { 
   suma+= parseFloat(sumador.getItemAt(i)["Precio"]); 
   enviar_lv.solicitud = solGrid.join("-");
   celda.text=enviar_lv.solicitud; 
          }


y lo que me aparece cada vez que agrego un registro en celda.text es esto:

[object Object]-[object Object]

Porque no me pone todo mi registro, si es lo mismo ....

??? Gracias

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 03 Ago 2005 05:11 pm
Bien... aunque es poco avance, pero ya logre armar mi array, no se si esta bien, ami me parece que no deberia de ser asi, pero es la unica forma que encontre.

Código :

arreglo.push(objeto.target.getItemAt(objeto.target.selectedIndex).Equipo,          objeto.target.getItemAt(objeto.target.selectedIndex).Marca,
objeto.target.getItemAt(objeto.target.selectedIndex).Modelo,
objeto.target.getItemAt(objeto.target.selectedIndex).Serie,
objeto.target.getItemAt(objeto.target.selectedIndex).Vigencia,
objeto.target.getItemAt(objeto.target.selectedIndex).Calibrado,
objeto.target.getItemAt(objeto.target.selectedIndex).Proxima,
objeto.target.getItemAt(objeto.target.selectedIndex).Precio);


Ok, hasta qui ya arme mi arreglo, ahora mi celda.text, despliega esto cuando meto 2 registros estoy haciendo arreglo.join con "|".

    PRUEBA|PRUEBA|PRUEBA|PRUEBA|12|2004-07-15|
    2005-07-15|100.58|PRUEBA2|PRUEBA2|
    PRUEBA2|PRUEBA2|12|2005-07-18|2007-07-18|100


Pero aun mantengo el codigo en PHP que me propuso javierdaniel y no se que pasa porque el PHP me sigue imprimiendo solo esto:

    $0='-';


Se supone que me deberia de imprimir todas mis variables.... javierdaniel, elecash,... Alguien hecheme la mano

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 03 Ago 2005 05:15 pm
Perdon me imprime esto,

$0='|';

tambien lo modifique

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 03 Ago 2005 05:36 pm
Puedes usar algo asi:

Código :

<?php
$cadena = "PRUEBA|PRUEBA|PRUEBA|PRUEBA|12|2004-07-15|2005-07-15|100.58|PRUEBA2";
$items = explode("|", $cadena);
foreach($items as $num => $value){
   echo $num." => ".$value."\n";
}
?>
[/code]

Por Tmeister

260 de clabLevel

2 tutoriales

 

firefox
Citar            
MensajeEscrito el 03 Ago 2005 06:00 pm
ok....

Ahora utilizando el codigo de tmeister

/* igualamos las variables enviadas */
$cadena = $_POST['solicitud'];
$items = explode("|", $cadena);
foreach($items as $num => $value){
echo $num." => ".$value."\n";
}


Me pone esto, porque demonios lo repite 2 veces...

0 => PRUEBA * PRUEBA * PRUEBA * PRUEBA * 12 * 2004-07-15 * 2005-07-15 * 100.58 solicitud = PRUEBA * PRUEBA * PRUEBA * PRUEBA * 12 * 2004-07-15 * 2005-07-15 * 100.58

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 03 Ago 2005 08:46 pm
Realizo mi envio de mi array o mejor dicho mi cadena asi:

Código :

enviar_lv.envio = arreglo.join("*");
enviar_lv.send("solicitud.php", "POST");


Si hago esto :

Código :

celda.text=enviar_lv.envio;


No hay problema todo bien :) , pero :? , porque cuando recibo mi variable en PHP y mando a imprimir lo que recibo me lo pone doble como que lo manda 2 veses aunque sea solo un registro el que veo en mi campo de texto "celda.text".

este es mi PHP:

Código :

$cadena = $_POST['envio'];
echo "Esto llego: $cadena";


Y siempre lo dobletea, esto me manda de salida mi php.

Esto llego: PRUEBA2*PRUEBA2*PRUEBA2*PRUEBA2*12*2005-07-18*2007-07-18*100envio=PRUEBA2*PRUEBA2*PRUEBA2*PRUEBA2*12*2005-07-18*2007-07-18*100

Porque :crap: , alguien sabe porque , demonios siempre cuando ya parece que lo tengo, siempre hay una piedrita ene el zapato.

No se porque sucede esto, nunca me habia pasado... les repito visalizo

Código :

celda.text=enviar_lv.envio;


Y hay un solo registro todo bien ahi.

Pero PHP lo recibe doble, es un detalle de LoadVars?? :(

Alguien ayudeme pls.

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 03 Ago 2005 08:46 pm
Realizo mi envio de mi array o mejor dicho mi cadena asi:

Código :

enviar_lv.envio = arreglo.join("*");
enviar_lv.send("solicitud.php", "POST");


Si hago esto :

Código :

celda.text=enviar_lv.envio;


No hay problema todo bien :) , pero :? , porque cuando recibo mi variable en PHP y mando a imprimir lo que recibo me lo pone doble como que lo manda 2 veses aunque sea solo un registro el que veo en mi campo de texto "celda.text".

este es mi PHP:

Código :

$cadena = $_POST['envio'];
echo "Esto llego: $cadena";


Y siempre lo dobletea, esto me manda de salida mi php.

Esto llego: PRUEBA2*PRUEBA2*PRUEBA2*PRUEBA2*12*2005-07-18*2007-07-18*100envio=PRUEBA2*PRUEBA2*PRUEBA2*PRUEBA2*12*2005-07-18*2007-07-18*100

Porque :crap: , alguien sabe porque , demonios siempre cuando ya parece que lo tengo, siempre hay una piedrita ene el zapato.

No se porque sucede esto, nunca me habia pasado... les repito visalizo

Código :

celda.text=enviar_lv.envio;


Y hay un solo registro todo bien ahi.

Pero PHP lo recibe doble, es un detalle de LoadVars?? :(

Alguien ayudeme pls.

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 04 Ago 2005 03:34 pm
Hola: a lo mejor esto te sirve. Cuando quiero enviar un arreglo desde flash para insertarlo en una BD, uso el siguiente código en flash:

Código :

enviar_lv = new LoadVars();
arreglo = new Array("daniel", "daniel2", "daniel3");
var i:Number = 0;
while (arreglo[i] != undefined) {
   enviar_lv["dato"+i] = arreglo[i];
   i++;
}
enviar_lv.nombres = enviar_lv.toString();
enviar_lv.sendAndLoad(.........);

En el código, hago uso de los ejemplos que han puesto en los posts de arriba. Lo que hace el código es recorrer el arreglo y lo asigna a una variable del loadvars y despúes uso enviar_lv.toString() y lo que hace es concatenar las variables separadas por "&" dentro de la variable "nombres" que es lo que recibirá PHP.
Luego en PHP uso lo que ya se habia mencionado antes:

Código :

<?php
$items = explode("&", $nombres);
foreach($items as $num => $value){
   echo $value."<br>";
} 
?>

Y con eso la salida es:
dato2=daniel3
dato1=daniel2
dato0=daniel

A lo mejor hay alguna manera mas sencilla de hacerlo pero a mi me ha funcionado bien.

b.to :?

Por b.to

10 de clabLevel



 

frente a la pompu =/

firefox
Citar            
MensajeEscrito el 04 Ago 2005 05:59 pm
Gracias a todos... gracias Cristalab!!

Muestro informacion en un datagrid, el usuario selecciona de la lista y se llena el otro datagrid, y todas mis variables contenidas en el datagrid 2 las envio a PHP... este es mi codigo AS

Código :

//******************************************
alSeleccionar.change = function(objeto){
   if (objeto.target == pelis_grid){
        solGrid.addItem({Equipo: objeto.target.getItemAt(objeto.target.selectedIndex).Equipo,
                   Marca:   objeto.target.getItemAt(objeto.target.selectedIndex).Marca,
                   Modelo: objeto.target.getItemAt(objeto.target.selectedIndex).Modelo,
                   Serie: objeto.target.getItemAt(objeto.target.selectedIndex).Serie,
                   Vigencia: objeto.target.getItemAt(objeto.target.selectedIndex).Vigencia,
                   Calibrado: objeto.target.getItemAt(objeto.target.selectedIndex).Calibrado,
                   Proxima: objeto.target.getItemAt(objeto.target.selectedIndex).Proxima,
                   Precio: parseFloat(objeto.target.getItemAt(objeto.target.selectedIndex).Precio)});
        arreglo.push(objeto.target.getItemAt(objeto.target.selectedIndex).Equipo,
                objeto.target.getItemAt(objeto.target.selectedIndex).Marca,
                objeto.target.getItemAt(objeto.target.selectedIndex).Modelo,
                objeto.target.getItemAt(objeto.target.selectedIndex).Serie,
                objeto.target.getItemAt(objeto.target.selectedIndex).Vigencia,
                objeto.target.getItemAt(objeto.target.selectedIndex).Calibrado,
                objeto.target.getItemAt(objeto.target.selectedIndex).Proxima,
                objeto.target.getItemAt(objeto.target.selectedIndex).Precio);
      datossol.items = solGrid;
      sol_grid.dataProvider = datossol.dataProvider;
      sol_grid.hScrollPolicy = "auto";
      sol_grid.setStyle("fontSize", 9);
      sol_grid.getColumnAt(0).width = 120;
      sol_grid.getColumnAt(1).width = 80;
      sol_grid.getColumnAt(2).width = 80;
      sol_grid.getColumnAt(3).width = 80;
      sol_grid.getColumnAt(4).width = 50;
      sol_grid.getColumnAt(5).width = 60;
      sol_grid.getColumnAt(6).width = 60;
      sol_grid.getColumnAt(7).width = 60;
      sol_grid.getColumnAt(0).setStyle("textAlign", "left");
      sol_grid.getColumnAt(1).setStyle("textAlign", "left");      
      sol_grid.getColumnAt(2).setStyle("textAlign", "left");
      sol_grid.getColumnAt(3).setStyle("textAlign", "left");
      sol_grid.getColumnAt(4).setStyle("textAlign", "left");
      sol_grid.getColumnAt(5).setStyle("textAlign", "left");
      sol_grid.getColumnAt(6).setStyle("textAlign", "left");
      sol_grid.getColumnAt(7).setStyle("textAlign", "left");
      sol_grid.editable=true;
      sol_grid.getColumnAt(0).editable = false;
      sol_grid.getColumnAt(1).editable = false;
      sol_grid.getColumnAt(2).editable = false;
      sol_grid.getColumnAt(3).editable = false;
      sol_grid.getColumnAt(4).editable = true;
      sol_grid.getColumnAt(5).editable = false;
      sol_grid.getColumnAt(6).editable = false;
      sol_grid.getColumnAt(7).editable = false; 
      
      sumador = solGrid;
      suma=0;
      for(var i=0;i<=solGrid.length-1;i++) 
         { 
            suma+= parseFloat(sumador.getItemAt(i)["Precio"]); 
            var j:Number = 0; 
            while (arreglo[j] != undefined) { 
                      enviar_lv[j] = arreglo[j]; 
                       j++; 
            enviar_lv.envio = arreglo.join("*");
              }
         } 
         sumador.slice(0);
         total_txt.text = suma;
         i_txt.text = i;
   }
}
pelis_grid.addEventListener("change", alSeleccionar);


Asi las recibo en PHP

Código :

/* igualamos las variables enviadas */
$cadena = $_POST['envio'];
$items = explode("*", $cadena);
foreach($items as $num => $value){
     echo "Clave: ",$num , " Valor: ",$value,"<br>";
};


^^ Gracias totales

Por manuel_cfe

106 de clabLevel



 

msie

 

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