Foros del Web » Programando para Internet » Javascript »

Pasar Array Multidimensional Javascript mediante PHP

Estas en el tema de Pasar Array Multidimensional Javascript mediante PHP en el foro de Javascript en Foros del Web. Saludos, He construido en Javascript un Array Multidimensional Asociativo; el cual se alimenta de datos de un formulario; hasta aca todo esta muy bien, y ...
  #1 (permalink)  
Antiguo 12/01/2010, 09:27
 
Fecha de Ingreso: enero-2010
Mensajes: 5
Antigüedad: 14 años, 3 meses
Puntos: 0
Pasar Array Multidimensional Javascript mediante PHP

Saludos,

He construido en Javascript un Array Multidimensional Asociativo; el cual se alimenta de datos de un formulario; hasta aca todo esta muy bien, y el array se crea perfectamente.

El problema es que tengo que enviar este array mediante PHP a otro archivo para que este se encargue de leerlo e insertar los datos en un BD.

No tengo aun una idea de como enviar este array; intente asignadolo a un campo oculto, pero al ser un objeto este no lo toma como algo valido; intente tambien enviandolo como parametro GET convertido en un string pero al ser multidimensional, no era posible convertirlo en un string; y menos aun en algo logico.

Por favor, si alguien sabe como poder hacer esto, o tiene alguna idea que se pueda probar, estare muy agradecido.

Saludos
  #2 (permalink)  
Antiguo 12/01/2010, 09:33
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Pasar Array Multidimensional Javascript mediante PHP

tendrás que resolverlo con recursión, seria una buena alternativa, o buscar algún algoritmo que te serialice JSON, porque tanto por get y post sólo puedes pasar cadenas
  #3 (permalink)  
Antiguo 12/01/2010, 09:57
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 3 meses
Puntos: 45
Respuesta: Pasar Array Multidimensional Javascript mediante PHP

Buenas,

Por definición un array es una colección ordenada de elementos y cada elemento tiene una posicion numérica dentro del array. Se puede conocer la posición de cada elemento por su índice, es decir si tiene tres elementos, el primero sera el 0, el siguiente el 1 y el útimo el 2. y esto siempre es así. En otros lenguajes como perl por ejemplo si que existen las matrices asociativas que son las que están indexadas con cadenas en lugar de números. En javascript para simular esto se utilizan objetos gracias a la propiedad length. Por otro lado tampoco se admiten en javascript arrays multidimensionales salvo que sea un array de arrays que no es el caso.

Los formularios ya están preparados para enviar los datos, es una acción asociada al elemento <input type="submit"> de todos los formularios o también puedes hacerlo mediante el evento equivalente en javascript y lo que se enviará será el valor de la propiedad value (según el tipo de elemento que sea).

De todos modos, aunque se pudiera no entiendo que sentido puede tener enviarlo asi. porque despues en el servidor tendrás que volver a separarlo para guardarlo. Siempre es mejor buscar la manera mas sencilla de hacer las cosas. Un saludo.
  #4 (permalink)  
Antiguo 12/01/2010, 10:09
 
Fecha de Ingreso: enero-2010
Mensajes: 5
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Pasar Array Multidimensional Javascript mediante PHP

Cita:
Iniciado por maycolalvarez Ver Mensaje
tendrás que resolverlo con recursión, seria una buena alternativa, o buscar algún algoritmo que te serialice JSON, porque tanto por get y post sólo puedes pasar cadenas
maycolalvarez, no entiendo mucho como podria hacerlo por JSON, ya que la verdad nunca lo he trabajado; si pudieras darme un empujon sobre que debo investigar o por donde irme, te lo agradeceria.
  #5 (permalink)  
Antiguo 12/01/2010, 10:26
 
Fecha de Ingreso: enero-2010
Mensajes: 5
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Pasar Array Multidimensional Javascript mediante PHP

Tecna, la verdad lo que yo tengo sí es un array de arrays.. Te cuento que es lo que tengo y necesito mas especificamente.

Tengo un formulario con algunos input, en este formulario hay un texto que tiene asignada la funcion javascript. Esta funcion lo que hace es recoger los datos del formulario, construir el array y borrar los campos del formulario.

Asi es como construyo el Array; en este punto no tengo ningun problema y el Array queda formado exactamente como lo necesito.

Código Javascript:
Ver original
  1. var referencias = new Array();  
  2.  
  3. function insRow()
  4. {
  5.  
  6. ....
  7. ....
  8.  
  9.    
  10.  var datos_refer = new Array();
  11.  
  12. datos_refer['conta'] = conta;
  13. datos_refer['id'] = id;
  14. datos_refer['cantidad'] = cantidad;
  15. datos_refer['descuento'] = desc;
  16. datos_refer['adicional'] = adc;
  17.  
  18. referencias[id] = datos_refer;
  19.  
  20. ...
  21. ..
  22.  
  23. }

El inconveniente es que necesito insertar el array referencias[] en un BD junto con otros datos que hacen parte del formulario, por lo tanto lo que hago es enviar la accion submit() hacia otro archivo que procesa; el problema es que no tengo forma de que referencias[] "llegue" hasta el archivo de proceso para poder ser insertado.

No se si esto les da un poco mas de claridad sobre lo que tengo y deseo hacer.

Muchas gracias por responder; y espero que me puedas colaborar con esto.
  #6 (permalink)  
Antiguo 12/01/2010, 10:39
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 3 meses
Puntos: 45
Respuesta: Pasar Array Multidimensional Javascript mediante PHP

Buenas,

sigo sin entenderlo ¿por qué hay que vaciar los campos antes de enviarlo? ¿cómo vas a tratar los datos en la base de datos? , supongo que cada campo del formulario será un campo de la base de datos o ¿vas a guardarlo todo junto?
  #7 (permalink)  
Antiguo 12/01/2010, 10:53
 
Fecha de Ingreso: enero-2010
Mensajes: 5
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Pasar Array Multidimensional Javascript mediante PHP

Tecna, mira, lo que yo estoy haciendo es algo similar a un sistema de pedidos.

Entonces tengo un encabezado con todos los datos del cliente, los cuales deben insertarse en una tabla.

Y tengo el cuerpo del pedido, el cual consta de muchas referencias; estas referencias son las que yo "incluyo" en el array.

Lo que yo necesito es recuperar los datos de este cliente y las referencias pertencientes al pedido (muchas), y poder insertar estos datos en las tablas respectivas.

Cabe aclarar que yo tengo un "impedimento" de desarrollo y es que esto que estoy realizando esto bajo SugarCRM .. por lo tanto me es "imposible" cambiar el diseño que tiene actualmente este desarrollo.

Espero que puedas entenderme y colaborarme con esto. De nuevo, gracias por responder
  #8 (permalink)  
Antiguo 12/01/2010, 10:56
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Pasar Array Multidimensional Javascript mediante PHP

Si te entendí bien podrías codificar los datos para luego, en php, usar json_decode.
La idea sería hacer algo como esto:
Código PHP:
<script>
var 
datos_refer = new Array();
 
datos_refer['conta'] = 'ssss';
datos_refer['id'] = 5;
datos_refer['cantidad'] = 15;
datos_refer['descuento'] = 20;
datos_refer['adicional'] = 'bla';
var 
cad='{';
for(var 
i in datos_refer){
    
cad+='"'+i+'":"'+datos_refer[i]+'",';
}
var 
cad =cad.substring(0,cad.length-1)+'}';
alert(cad);
</script> 
  #9 (permalink)  
Antiguo 12/01/2010, 11:33
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 3 meses
Puntos: 45
Respuesta: Pasar Array Multidimensional Javascript mediante PHP

Buenas

Pero al hacer el envio sólo puedes enviar cadenas y el proceso de los datos lo tendrás que hacer en el servidor. No hace falta un array que luego tendrás que convertir en cadena La solución que te da Panino5001 es buena para luego trocearlo en el servidor por el separador ":" pero es que eso mismo es lo que hacen ya los formularios, unen todos los valores mediante un separador ¿para que complicarse? los valores los puedes ir arrastrando en campos ocultos y enviarlo todo a la vez. De donde obtengas los datos y como los codifiques es otro tema y habría varias alternativas.
  #10 (permalink)  
Antiguo 12/01/2010, 12:48
 
Fecha de Ingreso: enero-2010
Mensajes: 5
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Pasar Array Multidimensional Javascript mediante PHP

Panino5001, Tecna.

Muchas gracias por su respuesta; creo que lo que hare es que por cada referencia ingresada almacenare la info en un string, separada mediante un caracter; y eso lo agregare a un campo oculto.

La verdad no me parece a solucion mas "Limpia" pero si la mas logica para este caso.

Muchas gracias por sus respuestas; me abrieron otras posibilidades para desarrollar esto.

Igual quedo con la duda de si es posible enviar un Array Javascript, investigare alguna forma de hacerlo y si la encuentro por aca la dejare.

Muchisimas Gracias
  #11 (permalink)  
Antiguo 13/01/2010, 05:51
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Pasar Array Multidimensional Javascript mediante PHP

Cita:
Igual quedo con la duda de si es posible enviar un Array Javascript, investigare alguna forma de hacerlo y si la encuentro por aca la dejare.
no creo que logres encontrar algo. transferir un array de javascript a cualquier lenguaje de servidor es imposible dado que ambos lenguajes son independientes. es decir, no se entienden mutuamente y tampoco existe alguna forma de conectarlos para que los diferentes tipos de datos (array, objetos, numeros, booleanos) se puedan pasar directamente. por poner un ejemplo, javascript y vbscript, aunque diferentes lenguajes, pueden interactuar entre ambos. es decir, tu puedes crear una funcion en javascript y luego invocarla en vbscript. no se si hasta la fecha de hoy sigue siendo cierto pero en algun lugar lo lei. el punto es que este tipo de interaccion no se puede lograr con javascript y lenguaje servidor por ser dos entornos diferentes. de ahi que la unica forma de transferir un valor de un lenguaje a otro es necesario "serializarlo" en forma de string como lo demostro Panino.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: multidimensional, pasar, php
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 06:39.