Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/03/2015, 02:51
tdcp
 
Fecha de Ingreso: febrero-2014
Ubicación: Madrid
Mensajes: 19
Antigüedad: 8 años, 6 meses
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