Ver Mensaje Individual
  #18 (permalink)  
Antiguo 06/04/2016, 14:27
Eric_Alberto
 
Fecha de Ingreso: febrero-2016
Mensajes: 31
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Guardar datos de input text dinamicos

Cita:
Iniciado por Triby Ver Mensaje
Bueno, parece que el copy/paste sin analizar sigue siendo una mala opción, porque me equivoqué en la sugerencia para la línea del JS y la forma correcta es:

Código Javascript:
Ver original
  1. strHtml5 += '<input type="hidden" id="nombreDelCampo_' + oId +'" name="nombreDelCampo[]" value="' + oId + '" /></td>';

Con eso y el PHP "original" debería ser suficiente:
Código PHP:
Ver original
  1. // Debe ser <= porque el contador lo inicias en cero, de lo contrario omitiría el último elemento
  2. for($i=0; $i<=$numRows; $i++) {
  3.           $sql_ins2 = mysql_query("INSERT INTO contactos (id_posada, tipo_contacto, persona_contacto, telefonos, correo_contacto) VALUES ('$id_posada', '".$_POST['selTipo_contacto'][$i]."', '".$_POST['txtPersona_contacto'][$i]."', '".$_POST['txtTelefonos'][$i]."', '".$_POST['txtCorreo_contacto'][$i]."')") or die ("Error en Insert : ".mysql_error());
  4.     }
disculpa amigo podrias ayudarme yo tengo un codigo diferente y al igual que a kimmy solo me guarda 1 solo dato, mis codigos son los siguientes:
codigo del formulario
Código PHP:
Ver original
  1. <div id="stylized" class="myform" style="margin:40px auto;">
  2.  
  3. <form id="form" name="form" method="POST" action="insertar_registro.php">
  4. <div id="material_pedido"></div>
  5.  
  6. <label>Clave del Empleado:</label><select id="empleado" name="idemp" style="width:50px;"></select><span style="float:left;padding:8px 0px 8px 8px;">
  7. Nombre del Empleado:</span><select  id="no_empl" style="width:90px;"></select><span style="float:left;padding:8px 0px 8px 8px;">
  8. Area del Solicitante:</span><select type="text" id="area" style="width:110px;"></select><span style="float:left;padding:8px 0px 8px 8px;">
  9. Fecha de la Solicitud:</span><?php $fecha= date("Y-m-d"); ?><!--=== sirve para obtener la fecha del equipo automaticamente ===-->
  10. <input type="date" name='fecha_sol[]' required value="<?php echo $fecha; ?>" readonly style="width:119px;"/><span style="float:left;padding:8px 0px 8px 8px;"></span>
  11. <left><h1>Articulo a pedir</h1>
  12. <p>Puede añadir mas de 1 pedido si asi lo decea</p></left>
  13. <div id="div_1">
  14. <span style="float:left;padding:9px 0px 0px 0px;">
  15. <label>Clave producto:</span></label><input type="text" id="clave1" name="clave[]" style="width:50px;"/><span style="float:left;padding:9px 0px 0px 0px;">
  16. Producto:</span><input type="text" id="prod" placeholder="Nombre producto" name="producto[]" style="width:110px;"/><span style="float:left;padding:9px 0px 0px 0px;">
  17. Marca:</span><input type="text" id="marca" placeholder="Marca producto" name="marca[]" style="width: 100px;"/><span style="float:left;padding:9px 0px 0px 0px;">
  18. Cantidad:</span><input type="number" name="cantidad[]" min='1' max='100'style="width:30px;"/><input class="bt_plus" id="1" type="button" value="+" /><div class="error_form"></div>
  19. </div>
  20. <br>
  21. <br>
  22. <button type="submit" name="submit" class="boton">Enviar</button>
  23. </form>
  24. </div>
codigo del agregar campos
Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.     $(".bt_plus").each(function (el){
  3.         $(this).bind("click",addField);
  4.     });
  5. });
  6.  
  7. function addField(){
  8.     //el id del elemento div qutandole la palabra "div_" de delante. para asi aumentar el numero.
  9.     var clickID = parseInt($(this).parent('div').attr('id').replace('div_',''));
  10.     //Se genera el nuevo id
  11.     var newID = (clickID+1);
  12.     //Se crea un clon del elemento div que contiene los campos de texto
  13.     $newClone = $('#div_'+clickID).clone(true);
  14.     //Se le asigna el nuevo numero id
  15.     $newClone.attr("id",'div_'+newID);
  16.     //se le asigna nuevo id al primer campo input dentro del div y le borro cualquier valor que tenga, asi no copia lo ultimo que hayas escrito.
  17.     //(igual que antes no es necesario tener un id)
  18.     $newClone.children("input").eq(0).attr("id",'clave'+newID).val('');
  19.     //Se borra el valor del segundo input(campo de cantidad)
  20.     $newClone.children("input").eq(1).val('');
  21.     //Se asigna el nuevo id al boton
  22.     $newClone.children("input").eq(4).attr("id",newID)
  23.     //Se inserta el div clonado y modificado despues del div original
  24.     $newClone.insertAfter($('#div_'+clickID));
  25.     //Se cambia el signo "+" por el signo"-" y se quita el evento addfield
  26.     $("#"+clickID).val('-').unbind("click",addField);
  27.     //Se cambia el signo del evento delRow para que borre la fila en caso de hacer click
  28.     $("#"+clickID).bind("click",delRow);
  29. }
  30.  
  31. function delRow(){
  32.     //Esta funcion destruye el elemento actual una vez echo el click
  33.     $(this).parent('div').remove();
  34. }
y por ultimo donde guardo
Código PHP:
Ver original
  1. <?php
  2.    
  3.     include("php/conexion.php");
  4.    
  5.     $cuenta = count($_POST['clave']);  /*esto fue lo que hice, pero me sigue guardando el primer campo y los otros 2 que agrego no*/
  6.     $cuenta = count($_POST['idemp']);
  7.     $cuenta = count($_POST['producto']);
  8.     $cuenta = count($_POST['marca']);
  9.     $cuenta = count($_POST['cantidad']);
  10.     $cuenta = count($_POST['fecha_sol']);
  11.    
  12.     for ($i=0; $i <$cuenta; $i++) {
  13.         $idemp = $_POST['idemp'][$i];
  14.         $clave = $_POST['clave'][$i];
  15.         $producto = $_POST['producto'][$i];
  16.         $marca = $_POST['marca'][$i];
  17.         $cantidad = $_POST['cantidad'][$i];
  18.         $fecha_sol = $_POST['fecha_sol'][$i];
  19.            
  20.      //print_r($_POST);
  21.  
  22.     $query1 ="INSERT INTO detalle(id_pedidos, id_producto, producto, marca, cantidad, fecha_solicitud)
  23.    VALUES('$idemp', '$clave', '$producto', '$marca', '$cantidad', '$fecha_sol')";
  24.     $resultado=mysqli_query($conexion, $query1);
  25.      
  26.       if($query1){
  27.               header("Location: pedidos.php");
  28.                 }else{
  29.                 echo '<script> alert("El Pedido No Se Envio");</script>';
  30.                 echo '<script> window.location=" pedidos.php"; </script>';
  31.             }
  32.     }
  33. ?>
espero puedas ayudare ya que seria de gran ayuda