Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] pasar arreglo con jquery para insertar en base de datos

Estas en el tema de pasar arreglo con jquery para insertar en base de datos en el foro de Javascript en Foros del Web. Hola, buenas tengo una pequeño problema al que le he estado buscando solución de varias maneras y aun no alcanzo a resolver, tengo el siguiente ...
  #1 (permalink)  
Antiguo 15/10/2014, 09:04
Avatar de Shelonix  
Fecha de Ingreso: octubre-2014
Ubicación: Chile
Mensajes: 11
Antigüedad: 9 años, 6 meses
Puntos: 0
Exclamación pasar arreglo con jquery para insertar en base de datos

Hola, buenas
tengo una pequeño problema al que le he estado buscando solución de varias maneras y aun no alcanzo a resolver,
tengo el siguiente código con el cual capturo algunos checkbox que están seleccionados, el código me devuelve bien los valores que quiero de los checkbox, hasta ahí bien


codigo jquery
Código:
<script type="text/javascript">
   $(function() {
    $('#enviar').click(function() {
        var codigos = new Array();
 
        $("input[@name='listado[]']:checked").each(function() {
            codigos.push($(this).val());
        });
 
		//alert (codigos);
        $.ajax({
            type: 'POST',
            url: 'cotizacion.php',
            data: codigos,
            success: function(data) {
                // Imprimimos la respuesta en el div result
                $('#result').html(data);

            }
        })
    }); 
});

</script>

luego de capturar el arreglo de los checkbox y arrojar un alert (que he anulado volviéndolo un comentario) para verificar que el proceso se ha realizado bien, hice el intento de un código para arrojar ese arreglo a un documento php que más tarde se encargaría de insertar cada valor en la base de datos


codigo php
Código:
<?php
require_once('libs/conexion.php');
$cn=  Conectarse();

$codigo[] = $_POST['codigos'];

echo "arreglo: ",$codigo;

for ($i=0; $i>=$codigo;$i++) {
$query="INSERT INTO cotizacion (codigo, nombre, modelo) SELECT articulos.codigobarra, articulos.nombreproducto, articulos.modelo FROM articulos WHERE articulos.codigobarra = $codigo";
mysql_query($query) or die(mysql_error());
}

?>
la linea de insertar ya verifiqué que funciona bien, solo pido algo de ayuda para que me guíen en que estoy haciendo mal por acá y poder terminar mi pequeño proyecto.
muchas gracias.
  #2 (permalink)  
Antiguo 15/10/2014, 11:47
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: pasar arreglo con jquery para insertar en base de datos

Tu problema está en el código PHP, que no está recogiendo bien el valor. Deberías postear en el foro dedicado a PHP


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 15/10/2014, 13:00
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: pasar arreglo con jquery para insertar en base de datos

El envío de los datos debes de hacerlo de esta manera:

Código Javascript:
Ver original
  1. data: {
  2.     array: codigos
  3. }

Y los recibes así:

Código PHP:
Ver original
  1. $codigos = $_POST['array'];
  2. $total = count($codigos);
  3. for ($i = 0; $i < $total; $i++){
  4.     //El resto de instrucciones
  5. }

Por otro lado, noto inconsistencia en tu consulta SQL, es decir, ¿intentas insertar datos desde otra tabla? Si fuera así, lo estás haciendo de la manera incorrecta, además, si estás enviando un array, no puedes hacer la comparación (WHERE) como si se tratara de un dato simple. El bucle for está mal formado. El contador debe llegar a ser menor que el total de elementos del array para poder continuar, no mayor o igual al array (otra inconsistencia pues no puedes comparar a un entero con un array).

Por último, realizar inserciones a la BD mediante un bucle, es bastante ineficiente, sería mejor que veas la forma de crear grupos de datos para insertarlos todos a la vez. Por ejemplo, esto insertaría tres grupos de datos en una sola consulta:

Código MySQL:
Ver original
  1. INSERT INTO tabla (campo1, campo2, campo3)
  2. VALUES ('valor1', 'valor2', 'valor3'), ('valor4', 'valor5', 'valor6'), ('valor7', 'valor8', 'valor9')
  3. WHERE campoClave = 'valorClave'

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 15/10/2014, 13:27
Avatar de Shelonix  
Fecha de Ingreso: octubre-2014
Ubicación: Chile
Mensajes: 11
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: pasar arreglo con jquery para insertar en base de datos

gracias por la respuesta de ambos

Alexis88 lo que intento hacer es llenar una tabla con los datos existentes de otra porque necesito luego esa tabla imprimirla en excel, lo hago de esta manera porque en la tabla principal existen cerca de 8 mil registros que estoy mostrando en una tabla paginada con jquery y quiero que los registros que seleccione en esa tabla en la pagina al darle al botón me envíe el valor de cada uno de los checkbox a la base de datos, por eso estaba intentando hacerlo con ese bucle

por lo que sinceramente te digo que en este momento no tengo imaginación para hacerlo de la manera que me recomiendas y tampoco se como adaptarlo a lo que ya tengo

y con respecto a las inconsistencias, pues es que estaba intentando cualquier cosa en algún momento y no dejé el código como estaba antes de experimentar con él.

de todas manera muchísimas gracias por intentar ayudarme.
  #5 (permalink)  
Antiguo 15/10/2014, 13:56
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: pasar arreglo con jquery para insertar en base de datos

Creo que la mayor inconsistencia está acá:

Cita:
Iniciado por Shelonix Ver Mensaje
quiero que los registros que seleccione en esa tabla en la pagina al darle al botón me envíe el valor de cada uno de los checkbox a la base de datos
Es decir, no sé qué habrás intentado decir, pero si el objetivo no está claro, va a ser muy difícil que logres encontrar el camino correcto en el código.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 15/10/2014, 14:07
Avatar de Shelonix  
Fecha de Ingreso: octubre-2014
Ubicación: Chile
Mensajes: 11
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: pasar arreglo con jquery para insertar en base de datos

hahahaaha para ponerlo más simple, para hacer una tarea de busqueda de registros en la tabla "artículos" quiero poder tomar los registros X que sea que seleccionen y llevarlos a una tabla llamada cotización donde estarán acumulándose hasta que se impriman

para ello intenté el arreglo que ya vistes y solo me falta encontrar la manera de llevar los valores de los checkbox al archivo php y de ahí que se manden a la tabla de cotización para solo hacer la impresión y acabar mi proyecto.

espero se entienda mejor mi objetivo.
  #7 (permalink)  
Antiguo 15/10/2014, 14:25
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: pasar arreglo con jquery para insertar en base de datos

Creo que sería más sencillo si simplemente guardas los datos de los checkbox en la tabla 'cotización', luego, cuando quieras tomar los valores que les correspondan de la tabla 'artículos', haces una consulta doble (INNER JOIN) y listo, ya tienes los datos de cada artículo sin necesidad de duplicar datos en ambas tablas.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 15/10/2014 a las 14:39 Razón: Palabra mal escrita
  #8 (permalink)  
Antiguo 16/10/2014, 10:19
Avatar de Shelonix  
Fecha de Ingreso: octubre-2014
Ubicación: Chile
Mensajes: 11
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: pasar arreglo con jquery para insertar en base de datos

Gracias por el consejo Alexis88 encontre una manera de hacer funcionar mi idea inicial sin problemas luego de quemarme las neuronas por mi cuenta para encontrar la respuesta, igual gracias por tu aporte, me ayudó a encontrar la respuesta más rápido.

Código PHP:
Ver original
  1. require_once('libs/conexion.php');
  2. $cn=  Conectarse();
  3.  
  4. $codigos= $_POST['array'];
  5. $total = count($codigos);
  6.  
  7. for ($i = 0; $i < $total; $i++){
  8. $cod= $codigos[$i];
  9. $query="INSERT INTO cotizacion (codigo, nombre, modelo) SELECT articulos.codigobarra, articulos.nombreproducto, articulos.modelo FROM articulos WHERE articulos.codigobarra = $cod";
  10. mysql_query($query) or die(mysql_error());
  11. }

Etiquetas: arreglo, database, jquery, 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 11:58.