Foros del Web » Programando para Internet » PHP »

PHP OO Insertar en bd datos de formulario dinamico

Estas en el tema de Insertar en bd datos de formulario dinamico en el foro de PHP en Foros del Web. mi consulta es la siguiente: tengo un form dinámico con un botón, cada vez que el usuario presiona el botón se añaden en la parte ...
  #1 (permalink)  
Antiguo 30/05/2013, 10:07
Avatar de mmiguel40  
Fecha de Ingreso: marzo-2013
Ubicación: Barquisimeto Venezuela
Mensajes: 17
Antigüedad: 11 años, 7 meses
Puntos: 1
Pregunta Insertar en bd datos de formulario dinamico

mi consulta es la siguiente:

tengo un form dinámico con un botón, cada vez que el usuario presiona el botón se añaden en la parte de abajo 3 input 'text'. con sus id únicos. Estos id son la combinación de un string concatenando el valor de una variable 'i' el código seria algo como esto var i =1; id= "nombre"+i+; , ejemplo:

Código HTML:
Ver original
  1. <input type='text' id='nombre1'>
  2. <input type='text' id='apellido1'>
  3. <input type='text' id='telefono1'>

y si el usuario vuelve a presionar el boton los siguientes 3 input se generan exactamente igual solo cambia el valor de "i" porque esta se incrementa cada vez que se presiona el boton. ejemplo
Código HTML:
Ver original
  1. <input type='text' id='nombre2'>
  2. <input type='text' id='apellido2'>
  3. <input type='text' id='telefono2'>

Hasta aca todo bien mi enrredo radica en el codigo php para insertar estos campos dinamicos en la base de datos que en mi caso es mysql
tengo el siguiente codigo pero no guarda nada... en realidad si llega a la bd pero cada vez que le doy guardar para que inserte en bd agrega una linea nueva en la tabla pero con todos los campos en blanco???

anexo les copio el php para que me asesoren por favor gracias de antemano:

Código PHP:
Ver original
  1. <?php
  2. $x = $_post[i];
  3. //esta variable i es un input que tengo en el form que me guarda el ultimo valor de i al momento de presionar cobrar
  4. include ('conexion.php');
  5.  
  6. for (i=1; i <=$X;i++){
  7.  
  8. $y = i;
  9.  
  10. $producto = $_POST["prod".$y];
  11. $cantidad = $_POST["cant".$y];
  12. $precio = $_POST["prec".$y];
  13. $subtotal = $_POST["subt".$y];
  14.  
  15. $query = "INSERT INTO pago (nompro, canpro, prepro, subpro) values ('$producto', '$cantidad', '$precio', '$subtotal')"
  16.  
  17. if (!mysql_query( $query , $conexion)){
  18.  
  19.     echo "Error: " . mysql_error();
  20.  
  21. }
  22. else {
  23.  
  24.     echo ("ok");                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     }  
  25. ?>
  #2 (permalink)  
Antiguo 30/05/2013, 10:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Insertar en bd datos de formulario dinamico

El valor que se usa para crear las variables es el del name y tu no lo has puesto, el id no sirve para eso.

Eso sin contar los tremendos errores de sintaxis que tienes, pero eso ya es cosa a parte.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 30/05/2013, 10:22
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Insertar en bd datos de formulario dinamico

Lo mejor es generar inputs que se envíen como array y te evitas estar concatenando nombres de inputs raros, cuando generes nuevos input solo indica el mismo nombre y agregas corchetes al final...

Código HTML:
Ver original
  1. <input type="text" name="producto[]" /> <input type="text" name="cantidad[]" />
  2. <input type="text" name="producto[]" /> <input type="text" name="cantidad[]" />
  3. <input type="text" name="producto[]" /> <input type="text" name="cantidad[]" />
  4. <input type="text" name="producto[]" /> <input type="text" name="cantidad[]" />
  5. <input type="text" name="producto[]" /> <input type="text" name="cantidad[]" />
  6. <input type="text" name="producto[]" /> <input type="text" name="cantidad[]" />
  7. <input type="text" name="producto[]" /> <input type="text" name="cantidad[]" />
  8. <input type="text" name="producto[]" /> <input type="text" name="cantidad[]" />

Y al final en PHP solo recorres el array entregado por el navegador...

Código PHP:
Ver original
  1. <?php
  2.  
  3. foreach($_POST["producto"] as $producto) {
  4.      echo $producto.'<br/>';
  5. }
  6.  
  7. foreach($_POST["cantidad"] as $cantidad) {
  8.      echo $cantidad;
  9. }

PD no había visto la respuesta de @pateketrueke, y si, tiene toda la razón, te recomiendo que leas antes un buen tutorial/manual de PHP porque tienes problemas básicos en la sintaxis del lenguaje...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #4 (permalink)  
Antiguo 31/05/2013, 07:11
Avatar de mmiguel40  
Fecha de Ingreso: marzo-2013
Ubicación: Barquisimeto Venezuela
Mensajes: 17
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: Insertar en bd datos de formulario dinamico

gracias por las respuestas, lo que pasa es que ayer hice la pregunta en el foro de manera general por eso cometí algunos errores. por lo de los name, si se dan cuenta los name del html con los name que uso en el POST no concuerdan. ahora con el ciclo en php para insertar en la bd ahi si con toda humildad reconozco que estoy ponchao... voy a probar con el foreach. tal como lo sugerist en tu respuesta. les estoy avisando el avance
  #5 (permalink)  
Antiguo 02/06/2013, 11:58
Avatar de mmiguel40  
Fecha de Ingreso: marzo-2013
Ubicación: Barquisimeto Venezuela
Mensajes: 17
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: Insertar en bd datos de formulario dinamico

nuevamente gracias por la colaboración, todos los día se aprende algo nuevo hice unos cambios en mi codigo para trabajar con la sugerencia de Nemutagk los textbox que quiero guardar en bd los genero con esta función en js

antes estaba asi, generaba un name diferente cada vez que el usuario pulsara el botón que genera los textbox.


Código Javascript:
Ver original
  1. function crear() {
  2.  
  3. detalle = document.getElementById('det');
  4. contenedor = document.createElement('div');
  5. contenedor.id = 'detfac'+i;
  6. detalle.appendChild(contenedor);
  7.  
  8. prod = document.createElement('input');
  9.   prod.type = 'text';
  10.   prod.name = 'prod'+i;
  11.   prod.id = 'prod'+i;
  12.   contenedor.appendChild(prod);
  13.  
  14. cant = document.createElement('input');
  15.   cant.type = 'text';
  16.   cant.name = 'cant'+i;
  17.   cant.id = 'cant'+i;
  18.   cant.size = '6';
  19.  
  20.   contenedor.appendChild(cant);  
  21.  
  22.  
  23. prec = document.createElement('input');
  24.   prec.type = 'text';
  25.   prec.name = 'prec'+i;
  26.   prec.id = 'prec'+i;
  27.   prec.size = '10';
  28.   contenedor.appendChild(prec);
  29.  
  30. subt = document.createElement('input');
  31.   subt.type = 'text';
  32.   subt.name = 'subt'+i;
  33.   subt.id = 'subt'+i;
  34.   subt.size = '12';
  35.   contenedor.appendChild(subt);
  36.  
  37.   check = document.createElement('input');
  38.   check.type = 'checkbox';
  39.   check.name = 'check'+i;
  40.   check.id = 'check'+i;
  41.   contenedor.appendChild(check);
  42.  
  43.  
  44.  
  45. llenar();
  46. descontar();
  47. window.alert(i+" producto agregado");
  48.  
  49. i++;  
  50.  
  51.  
  52.  
  53.  
  54. }

ahora lo ajuste para que el php lo reciba como arreglo e inserte en bd a traves de un "for"


Código Javascript:
Ver original
  1. function crear() {
  2.  
  3. detalle = document.getElementById('det');
  4. contenedor = document.createElement('div');
  5. contenedor.id = 'detfac';
  6. detalle.appendChild(contenedor);
  7.  
  8. prod = document.createElement('input');
  9.   prod.type = 'text';
  10.   prod.name = 'prod[]';
  11.   prod.id = 'prod'+i;
  12.   contenedor.appendChild(prod);
  13.  
  14. cant = document.createElement('input');
  15.   cant.type = 'text';
  16.   cant.name = 'cant[]';
  17.   cant.id = 'cant'+i;
  18.   cant.size = '6';
  19.  
  20.   contenedor.appendChild(cant);  
  21.  
  22.  
  23. prec = document.createElement('input');
  24.   prec.type = 'text';
  25.   prec.name = 'prec[]';
  26.   prec.id = 'prec'+i;
  27.   prec.size = '10';
  28.   contenedor.appendChild(prec);
  29.  
  30. subt = document.createElement('input');
  31.   subt.type = 'text';
  32.   subt.name = 'subt[]';
  33.   subt.id = 'subt'+i;
  34.   subt.size = '12';
  35.   contenedor.appendChild(subt);
  36.  
  37.   check = document.createElement('input');
  38.   check.type = 'checkbox';
  39.   check.name = 'check[]';
  40.   check.id = 'check'+i;
  41.   contenedor.appendChild(check);
  42.  
  43.  
  44.  
  45. llenar();
  46. descontar();
  47. window.alert(i+" producto agregado");
  48.  
  49. i++;  
  50.  
  51.  
  52.  
  53.  
  54. }

una ultima consulta si yo tengo una variable que me traje a través de un $valor = $POST[valor] y este "valor" contiene un numero con el cual pretendo recorrer el arreglo ejemplo inserta en bd mientras i<valor; para que funcione correctamente tengo que usar un count? ejemplo i<count.$valor; que opcion podria aplicar?

Etiquetas: form, insert, mysql
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 05:33.