Foros del Web » Programando para Internet » Javascript »

Insertar multiples registros en bd mediante ajax

Estas en el tema de Insertar multiples registros en bd mediante ajax en el foro de Javascript en Foros del Web. Buenos días, Intento insertar varios registros (n registros) a una BD mediante ajax, no puedo definir la cantidad porque depende de la consulta. Envío mediante ...
  #1 (permalink)  
Antiguo 02/03/2015, 02:51
 
Fecha de Ingreso: febrero-2014
Ubicación: Madrid
Mensajes: 19
Antigüedad: 10 años, 1 mes
Puntos: 0
Insertar multiples registros en bd mediante ajax

Buenos días,

Intento insertar varios registros (n registros) a una BD mediante ajax, no puedo definir la cantidad porque depende de la consulta.
Envío mediante ajax via POST los registros que recibo a un archivo PHP, pero no consigo insertarlos.
Registros recibidos
Código PHP:
Ver original
  1. while($row_rates =  mysql_fetch_array($rs_rates)){
  2.  
  3.                         echo '<div class="subcontainer-zones['.$row_rates['id'].']" id="'.$row_rates['id'].'">
  4.                                 <input class="span2" type="text" name="id_zone_type[]" id="id_zone_type[]" value="'.$_POST['zone'].'" />
  5.                                 <input class="span2" type="text" name="id_carrier[]" id="id_carrier[]" value="'.$_POST['carrier'].'">
  6.                                 <input class="span2" type="text" name="id_rate[]" id="id_rate[]" value="'.$idrate.'">
  7.                                 <input class="span3" type="text" name="id_locate[]" id="id_locate[]" value="'.$row_rates['name'].'">                                   
  8.                                 <input type="button" class="delZoneValue" id="'.$row_rates['id'].'" value="Eliminar"/>
  9.                             </div>';
  10.                   }
Así los recojo
Código Javascript:
Ver original
  1. $('body').on('click','#definir',function(){
  2.     var $carrier = $('#carrier').val(),
  3.         $zone = $('#zone').val(),
  4.         $rate = $('#rate').val();
  5.        $.loader();
  6.         $.ajax({
  7.             type:'POST',
  8.             url:'create_zones.php',
  9.             complete:function(){                       
  10.               $.loader.hide(); 
  11.             },
  12.             data:{carrier:$carrier, zone:$zone, rate:$rate},
  13.             success: function(data){               
  14.               $('#results_zones').html(data);                                    
  15.             }      
  16.         });
  17. });
Formulario para envíar
Código HTML:
Ver original
  1. <form method="post" action="" id="form_zone">
  2. <fieldset id="fiel">
  3.  
  4. <table id="rows">
  5.     <tbody>
  6.         <div class="options-zones" id="results_zones"></div>
  7.     </tbody>
  8. <button id="enviar" name="enviar" type="submit">Guardar</button>
  9. </form>
Así los envío
Código Javascript:
Ver original
  1. $(document).ready(function() { 
  2.     $('#enviar').click(function(){
  3.  
  4.         var dataString = $('#form_zone').serialize();
  5.  
  6.         alert('Datos serializados: '+dataString);
  7.         $.loader();
  8.         $.ajax({
  9.             type: "POST",
  10.             url: "add_zone.php",
  11.             complete:function(){                       
  12.               $.loader.hide(); 
  13.             },
  14.             data: dataString,
  15.             success: function(data) {
  16.  
  17.             }
  18.         });
  19.     });
  20. });
Alert que muestra los registros serializados
Código HTML:
Ver original
  1. Datos serializados: id_zone_type%5B%5D=1&id_carrier%5B%5D=1&id_rate%5B%5D=1&id_locate%5B%5D=Espa%C3%B1a&id_zone_type%5B%5D=1&id_carrier%5B%5D=1&id_rate%5B%5D=1&id_locate%5B%5D=Portugal&id_zone_type%5B%5D=1&id_carrier%5B%5D=1&id_rate%5B%5D=1&id_locate%5B%5D=Andorra
Archivo PHP que los recibe
Código PHP:
Ver original
  1. $n= array();
  2. $c= array();
  3. $r= array();
  4. $l= array();
  5.  
  6. foreach($_POST['id_zone_type'] as $key=>$value)
  7.     $z[]= $value;
  8.  
  9. foreach($_POST['id_carrier'] as $key=>$value)
  10.     $c[]= $value;
  11.  
  12. foreach($_POST['id_rate'] as $key=>$value)
  13.     $r[]= $value;
  14.  
  15. foreach($_POST['id_locate'] as $key=>$value)
  16.     $l[]= $value;
  17.  
  18. for($i=0; $i<count($z); $i++)
  19. {
  20.   $record = 'id_zone_type, id_carrier, id_zone_rate, zone_location';  
  21.   $val = "'".$z[$i]."',";
  22.   $val .= "'".$c[$i]."',";
  23.   $val .= "'".$r[$i]."',";
  24.   $val .= "'".str_db($l[$i])."'";
  25.     $sql = " insert into ".$table_prefix."carriers_zones (";
  26.     $sql .= $record;
  27.     $sql .= ") VALUES (";
  28.     $sql .=  $val;
  29.     $sql .=  ")";  
  30.     execute($sql);  
  31.   //execute('insert into '.$table_prefix.'carriers_zones VALUES ('.$z[$i].', '.$c[$i].', '.$r[$i].', "'.$l[$i].'")');
  32.  
  33. }

Pero no consigo insertarlos. ¿Alguien puede prestarme algo de ayuda?
Un saludo y gracias.

Última edición por tdcp; 02/03/2015 a las 02:54 Razón: INCOMPLETO
  #2 (permalink)  
Antiguo 02/03/2015, 06:52
 
Fecha de Ingreso: septiembre-2003
Mensajes: 140
Antigüedad: 20 años, 6 meses
Puntos: 2
Respuesta: Insertar multiples registros en bd mediante ajax

Yo en su día me volví loco con el INSERT, y es que solo me funcionaba si ponia los campos entre tildes en vez de entre comillas simples. Los valores con comillas simples si funcionaban.

Código:
INSERT INTO miTabla (`campo1`,`campo2`) VALUES ('valor1','valor2');
¿De todas maneras el último for te muestra los valores que tienen que ser? ¿Solo falla el INSERT?
  #3 (permalink)  
Antiguo 02/03/2015, 14:43
 
Fecha de Ingreso: febrero-2014
Ubicación: Madrid
Mensajes: 19
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Insertar multiples registros en bd mediante ajax

Si sólo falla el insert.

Etiquetas: ajax, bd, 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 18:33.