Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/06/2012, 17:53
Avatar de kimmy
kimmy
 
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Guardar datos de input text dinamicos

Hola, lo cambié como me indicaste pero solo me guarda la última fila ingresada. Asi quedó:

Código PHP:
Ver original
  1. <html>
  2. <head>
  3. <script src="js/jquery.js" type="text/javascript"></script>
  4. <script type="text/javascript">
  5. $(document).ready(function(){
  6.    
  7. });
  8.  
  9. function agregarFila(obj){
  10.         $("#cant_campos").val(parseInt($("#cant_campos").val()) + 1);
  11.         var oId = $("#cant_campos").val();
  12.         var tipo_contacto = $("#selTipo_contacto").val();
  13.         var persona_contacto = $("#txtPersona_contacto").val();
  14.         var telefonos = $("#txtTelefonos").val();
  15.         var correo_contacto = $("#txtCorreo_contacto").val();
  16.  
  17.         var strHtml1 = "<td>" + tipo_contacto + '<input type="hidden" id="selTipo_contacto_' + oId + '" name="selTipo_contacto_' + oId + '" value="' + tipo_contacto + '"/></td>';
  18.         var strHtml2 = "<td>" + persona_contacto + '<input type="hidden" id="txtPersona_contacto_' + oId + '" name="txtPersona_contacto_' + oId + '" value="' + persona_contacto + '"/></td>' ;
  19.         var strHtml3 = "<td>" + telefonos + '<input type="hidden" id="txtTtelefonos_' + oId + '" name="txtTelefonos_' + oId + '" value="' + telefonos + '"/></td>' ;
  20.         var strHtml4 = "<td>" + correo_contacto + '<input type="hidden" id="txtCorreo_contacto_' + oId + '" name="txtCorreo_contacto_' + oId + '" value="' + correo_contacto + '"/></td>' ;
  21.         var strHtml5 = '<td><img src="images/delete.png" width="16" height="16" alt="Eliminar" onclick="if(confirm(\'Realmente desea eliminar este detalle?\')){eliminarFila(' + oId + ');}"/>';
  22.         strHtml5 += '<input type="hidden" id="hdnIdCampos_' + oId +'" name="hdnIdCampos[]" value="' + oId + '" /></td>';
  23.         var strHtmlTr = "<tr id='rowDetalle_" + oId + "'></tr>";
  24.         var strHtmlFinal = strHtml1 + strHtml2 + strHtml3 + strHtml4 + strHtml5;
  25.         //tambien se puede agregar todo el HTML de una sola vez.
  26.         //var strHtmlTr = "<tr id='rowDetalle_" + oId + "'>" + strHtml1 + strHtml2 + strHtml3 + strHtml4 + strHtml5 + strHtml6 +"</tr>";
  27.         $("#tbDetalle").append(strHtmlTr);
  28.         //si se agrega el HTML de una sola vez se debe comentar la linea siguiente.
  29.         $("#rowDetalle_" + oId).html(strHtmlFinal);
  30.         return false;
  31.     }
  32.     function eliminarFila(oId){
  33.         $("#rowDetalle_" + oId).remove();  
  34.         return false;
  35.     }
  36.  
  37.     function cancelar(){
  38.         $("#tbDetalle").html("");  
  39.         return false;
  40.     }
  41. </script>
  42. </head>
  43. <body>
  44. <form name="proyecto" id="proyecto" action="prueba6.php" method="post">
  45.     <input type="hidden" id="num_campos" name="num_campos" value="0" />
  46.     <input type="hidden" id="cant_campos" name="cant_campos" value="0" />
  47. <fieldset>
  48. <tr>
  49.     <td>Tipo de Contacto:</td>
  50.     <td><select name="selTipo_contacto[]" id="selTipo_contacto" class="textbox txtFec">
  51.       <option value="Informacion general">Informacion general</option>
  52.       <option value="Acuerdo comercial">Acuerdo comercial</option>
  53.       <option value="Reservaciones">Reservaciones</option>
  54.       <option value="Notificacion de pagos">Notificacion de pagos</option>
  55.       <option value="Actualización de tarifas">Actualizacion de tarifas</option>
  56.     </select></td>
  57.     <td>Persona Contacto:</td>
  58.     <td><input name="txtPersona_contacto[]" type="text" id="txtPersona_contacto" size="10" class="textbox" /></td>
  59.     <td>Telefonos:</td>
  60.     <td><input name="txtTelefonos[]" type="text" id="txtTelefonos" size="10" class="textbox" /></td>
  61.     <td>Correo Contacto:</td>
  62.     <td><input name="txtCorreo_contacto[]" type="text" id="txtCorreo_contacto" size="10" class="textbox" /></td>
  63.   </tr>
  64.  
  65.    
  66. </fieldset>
  67. <div class="button_div">    
  68.     <input type="reset" id="btnCancel" name="btnCancel" value="Cancelar" class="buttons_CANCEL" onClick="cancelar();" />
  69.     <input type="button" id="btnAgregar" name="btnAgregar" value="Agregar Persona" class="buttons_aplicar" onClick="agregarFila(document.getElementById('cant_campos'));" />
  70.     <input type="submit" id="btnAgregar" name="btnAgregar" value="Guardar" class="buttons_OK"  />
  71. </div>
  72. <fieldset class="fieldset">
  73.     <legend class="legend">
  74.         Detalle de Personas
  75.     </legend>
  76.     <div class="clear"></div>
  77.     <div id="form3" class="form-horiz">
  78.     <table width="100%" id="tblDetalle" class="listado">
  79.         <thead>
  80.             <tr>
  81.                 <th>Tipo de Contacto</th>
  82.                 <th>Persona Contacto</th>
  83.                 <th>Telefonos</th>
  84.                 <th>Correo Contacto</th>
  85.                 <th>Accion</th>
  86.             </tr>
  87.         </thead>
  88.         <tbody id="tbDetalle">
  89.         </tbody>
  90.     </table>
  91.     </div>
  92. </fieldset>
  93. </form>
  94. </body>
  95. </html>

y en el que guarda:

Código PHP:
Ver original
  1. include ('funciones/db.php');
  2.  
  3. $conn = db_connect();
  4.   if (!$conn)
  5.    return 0;
  6.  
  7. $id_posada = 8;
  8. $num_campos= $_POST['num_campos'];
  9. $cant_campos= $_POST['cant_campos'];
  10. $tipo_contacto = $_POST['selTipo_contacto'];
  11. $persona_contacto = $_POST['txtPersona_contacto'];
  12. $telefonos = $_POST['txtTelefonos'];
  13. $correo_contacto = $_POST['txtCorreo_contacto'];
  14.  
  15. echo '<pre>';
  16.     var_dump($_POST);
  17.     echo '</pre>';
  18.  
  19. $numRows = count($cant_campos);
  20.  
  21.     for($i=0; $i<$numRows; $i++) {
  22.           $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());
  23.     }

Al imprimir con var_dump me arroja esto:

Código PHP:
Ver original
  1. array(16) {
  2.   ["num_campos"]=>
  3.   string(1) "0"
  4.   ["cant_campos"]=>
  5.   string(1) "2"
  6.   ["selTipo_contacto"]=>
  7.   array(1) {
  8.     [0]=>
  9.     string(25) "Actualización de tarifas"
  10.   }
  11.   ["txtPersona_contacto"]=>
  12.   array(1) {
  13.     [0]=>
  14.     string(6) "Jimena"
  15.   }
  16.   ["txtTelefonos"]=>
  17.   array(1) {
  18.     [0]=>
  19.     string(6) "999999"
  20.   }
  21.   ["txtCorreo_contacto"]=>
  22.   array(1) {
  23.     [0]=>
  24.     string(18) "[email protected]"
  25.   }
  26.   ["btnAgregar"]=>
  27.   string(7) "Guardar"
  28.   ["selTipo_contacto_1"]=>
  29.   string(19) "Informacion general"
  30.   ["txtPersona_contacto_1"]=>
  31.   string(4) "Bugs"
  32.   ["txtTelefonos_1"]=>
  33.   string(6) "111111"
  34.   ["txtCorreo_contacto_1"]=>
  35.   string(16) "[email protected]"
  36.   ["hdnIdCampos"]=>
  37.   array(2) {
  38.     [0]=>
  39.     string(1) "1"
  40.     [1]=>
  41.     string(1) "2"
  42.   }
  43.   ["selTipo_contacto_2"]=>
  44.   string(25) "Actualización de tarifas"
  45.   ["txtPersona_contacto_2"]=>
  46.   string(6) "Jimena"
  47.   ["txtTelefonos_2"]=>
  48.   string(6) "999999"
  49.   ["txtCorreo_contacto_2"]=>
  50.   string(18) "[email protected]"
  51. }

Que estoy haciendo mal????

Gracias.
__________________
Caminando con el corazón partío