Foros del Web » Programando para Internet » PHP »

Guardar campos dinámicos de un formulario a mysql

Estas en el tema de Guardar campos dinámicos de un formulario a mysql en el foro de PHP en Foros del Web. Hola tengo un formulario que me sirve para realizar cotizaciones, en dicho formulario agrego los datos del cliente al que le quiero cotizar y los ...
  #1 (permalink)  
Antiguo 16/02/2015, 09:16
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 1 mes
Puntos: 2
Pregunta Guardar campos dinámicos de un formulario a mysql

Hola tengo un formulario que me sirve para realizar cotizaciones, en dicho formulario agrego los datos del cliente al que le quiero cotizar y los elementos que le cotizo, la cosa es que hay cotizaciones que solo tienen un producto y otros que tienen más de uno, entiendo bien que debo utilizar dos tablas una que tenga los datos de la cotización y otra que tenga los elementos de la cotizaciones pero mi problema es que estoy generando los campos de las descripciones forma dinámica y ahí es donde no se como guardarlos en la base de datos, lo que tengo es lo siguiente:

Código HTML:
Ver original
  1. <form id="PerfilPuesto" name="PerfilPuesto" method="post">
  2.               <h1>Nueva Cotización</h1>
  3.               <table width="950">
  4.                 <tr>
  5.                   <td><p>
  6.                     <label for="Empresa">Nombre de la Empresa:</label>
  7.                     </p>
  8.                     <p>
  9.                       <input name="Empresa" type="text" required="required" class="datos" id="Empresa">
  10.                   </p></td>
  11.                   <td><p>
  12.                     <label for="Contacto">Contácto:</label>
  13.                     </p>
  14.                     <p>
  15.                       <input name="Contacto" type="text" required="required" class="datos" id="Contacto">
  16.                   </p></td>
  17.                   <td><p>
  18.                     <label for="Email">Email:</label>
  19.                     </p>
  20.                     <p>
  21.                       <input name="Email" type="email" required="required" class="datos" id="Email">
  22.                   </p></td>
  23.               </tr>
  24.                 <tr>
  25.                   <td><p>
  26.                     <label for="Tel">Teléfono:</label>
  27.                     </p>
  28.                     <p>
  29.                       <input name="Tel" type="text" required="required" class="datos" id="Tel">
  30.                   </p></td>
  31.                   <td><p>
  32.                     <label for="NIT">NIT:</label>
  33.                     </p>
  34.                     <p>
  35.                       <input name="NIT" type="text" class="datos" id="NIT">
  36.                   </p></td>
  37.                   <td><p>
  38.                     <label for="Direccion">Dirección:</label>
  39.                     </p>
  40.                     <p>
  41.                       <input name="Direccion" type="text" class="datos" id="Direccion">
  42.                   </p></td>
  43.               </tr>
  44.             </table>
  45.             <br />
  46.               <table width="950">
  47.                 <tr>
  48.                   <td><p>
  49.                     <label for="cant1">Cantidad:</label>
  50.                     </p>
  51.                     <p>
  52.                       <input name="cant1" type="number" required="required" class="datosmenor3" id="cant1">
  53.                   </p></td>
  54.                   <td><p>
  55.                     <label for="desc1">Descripción:</label>
  56.                     </p>
  57.                     <p>
  58.                       <input name="desc1" type="text" required="required" class="datos3" id="desc1">
  59.                   </p></td>
  60.                   <td><p>
  61.                     <label for="Prec1">Precio Unitario:</label>
  62.                     </p>
  63.                     <p>
  64.                       <input name="Prec1" type="number" required="required" class="datosmenor3" id="Prec1">
  65.                   </p></td>
  66.                 </tr>
  67.               </table>
  68.               <br />
  69.             <a href="JavaScript:agregarCampo();" class="link"> Agregar Descripción </a>
  70.             <div id="contenedorcampos">
  71.                 <!--Dentro de este div se generan los campos dinámicos-->
  72.         </div>
  73.             <table align="center"><tr><td><input name="submit" type="submit" class="botonform" id="submit" value="Enviar"></td></tr></table>
  74.             </form>

Ese el el formulario html y dento del div con el nombre contenedorcampos van a crearse todos los campos dinámicos

Código Javascript:
Ver original
  1. function agregarCampo(){
  2.     campos = campos + 1;
  3.     var NvoCampo= document.createElement("div");
  4.     NvoCampo.id= "divcampo_"+(campos);
  5.     NvoCampo.innerHTML=
  6.         "<table width='950'>" +
  7.         "   <tr>" +
  8.         "     <td nowrap='nowrap'>" +
  9.         "       <p><label>Cantidad</label></p>" +
  10.         "        <p><input type='number' class='datosmenor3' required='required' min='1' name='cant" + campos + "' id='cant" + campos + "'></p>" +
  11.         "     </td>" +
  12.         "   <td nowrap='nowrap'>" +
  13.         "       <p><label>Descripión</label></p>" +
  14.         "           <p><input type='text' class='datos3' required='required' name='desc" + campos + "' id='desc" + campos + "'></p>" +
  15.         "     </td>" +
  16.         "     <td nowrap='nowrap'>" +
  17.         "       <p><label>Precio Unitario</label></p>" +
  18.         "        <p><input type='number' class='datosmenor3' required='required' min='1' name='Prec" + campos + "' id='Prec" + campos + "'></p>" +
  19.         "     </td>" +
  20.         "   </tr>" +
  21.         "   <tr>" +
  22.         "     <td nowrap='nowrap'>" +
  23.        
  24.         "     </td>" +
  25.         "     <td nowrap='nowrap'>" +
  26.        
  27.         "     </td>" +
  28.         "     <td nowrap='nowrap' align='right'>" +
  29.         "        <a href='JavaScript:quitarCampo(" + campos +");' class='link'> Quitar </a>" +
  30.         "     </td>" +
  31.         "   </tr>" +
  32.         "</table>";
  33.     var contenedor= document.getElementById("contenedorcampos");
  34.     contenedor.appendChild(NvoCampo);
  35.   }
  36.  
  37.  
  38. function quitarCampo(iddiv){
  39.   var eliminar = document.getElementById("divcampo_" + iddiv);
  40.   var contenedor= document.getElementById("contenedorcampos");
  41.   contenedor.removeChild(eliminar);
  42. }

LAs funciones de javascript agregarCampo sirve para crear un campo a la vez y la otra para eliminar el ultimo campo creado pero a la hora de almacenar los elementos en las dos tablas es donde me pierdo.

Muchas gracias por leer y tambien por ayudar.
  #2 (permalink)  
Antiguo 16/02/2015, 09:38
 
Fecha de Ingreso: mayo-2008
Mensajes: 224
Antigüedad: 16 años
Puntos: 4
Respuesta: Guardar campos dinámicos de un formulario a mysql

A mi entender te conviene usar jquery.
Yo lo haria asi.
Cada campo que creo dinamicamente le asigno un id dinamico y que no sea repetido. Tambien le asigno una clase xx( tiene que ser una clase muerta no declarada en css)
Cuando vaya a enviar (yo usaria ajax y post)
O hago un recorrido del div cotenedor o del body buscando esa clase xx y voy obteniendo los valores tanto del div creado como del nombre y su contenido antes de enviar todo o si tengo los campos creados dinamicamente dentro de un form lo serializo.

Espero te sirva.

Etiquetas: formula
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:01.