Foros del Web » Programando para Internet » PHP »

Formulario dinámico

Estas en el tema de Formulario dinámico en el foro de PHP en Foros del Web. Hola, quiero hacer un formulario dinámico, tengo una tabla en MySQL con bastantes registros, por ejemplo: Código: +Cod.-+Producto---+ |PR_1 |Teclado | |PR_2 |Monitor | |PR_3 ...
  #1 (permalink)  
Antiguo 09/01/2009, 11:47
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 15 años, 6 meses
Puntos: 1
Formulario dinámico

Hola, quiero hacer un formulario dinámico, tengo una tabla en MySQL con bastantes registros, por ejemplo:
Código:

+Cod.-+Producto---+
|PR_1 |Teclado    |
|PR_2 |Monitor    |
|PR_3 |Teléfono   |
|PR_4 |Ratón      |
|PR_5 |Lector DVD |
|PR_6 |Lector CD  |
|PR_7 |Memoria RAM|
|PR_8 |Memoria RIM|
+-----+-----------+
 
Lo que yo quiero es generar un formulario dinámico con dos campos: Producto que será el campo Producto de la anterior tabla y Cantidad que será un campo que recoja un valor numérico que introducirá el usuario.

Quiero que el formulario tenga tantas líneas como registros tenga la tabla MySQL y luego quiero tener un botón cuya funcionalidad sea la de insertar en otra tabla MySQL (por ejemplo Pedidos) los productos con las cantidades que el usuario ha metido, es decir, si el usuario ha metido esto en el formulario:

Código:

Teclado: 0    
Monitor: 8   
Teléfono: 7   
Ratón: 0     
Lector DVD: 3
Lector CD: 4
Memoria RAM: 0
Memoria RIM: 9
 
quiero que me genere cinco sentencias de inserción en la tabla Pedidos.

De momento lo único que se hacer es esto:

Código PHP:
<?php
   $link 
mysql_connect("localhost""user""0000");
   
mysql_select_db("Prueba"$link);
   
$result mysql_query("select * from Producto"$link);
   while (
$registro mysql_fetch_array($result)) { 
      echo 
"Producto: "$registro['Descripcion'] . "<br>";
   } 
?>
¿Es posible esto que yo quiero? Si es posible, ¿cómo puedo generar en tiempo de ejecución una caja de texto para la cantidad que vaya al lado del producto?

Muchas gracias y un saludo.

Última edición por letni; 12/01/2009 a las 14:05
  #2 (permalink)  
Antiguo 09/01/2009, 12:18
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Respuesta: Formulario dinámico

para generar la tabla cada una con un productos y el campo de texto para digitrar la cantidad seria algo asi.

Código PHP:
<table>
<tr><td>Codigo</td><td>Cantidad</td></tr>
<?
$Select 
mysql_query("select * from productos order by Producto asc");
while (
$Resultado mysql_fetch_array($Select))
{
echo 
"<tr>";
echo 
"<td>".$Resultado['Producto']."</td>";
echo 
"<td><input type='text' name='Cantidad_".$Resultado['Cod']."'></td>";
echo 
"</tr>";
}
?>
</table>

Le coloque al nombre del campo de trexto de la cantidad el codigo del producto con eso cuando usted los vaya arecibir va a saber facilmente que cantidad pertenece a que producto.


No le entiendo lo de las 5 sentencias a que se refiere con eso?
  #3 (permalink)  
Antiguo 11/01/2009, 09:25
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Formulario dinámico

Muchas gracias, he entendido correctamente cómo crear cajas de texto en tiempo de ejecución con un nombre único para todas ellas.

Cita:
Iniciado por helacer Ver Mensaje
No le entiendo lo de las 5 sentencias a que se refiere con eso?
Me refiero a que luego he de generar una sentencia de inserción para cada fila del formulario en la que el usuario haya digitado una cantidad, de esta forma puedo generar un pedido (un nuevo registro en otra tabla llamada Pedido).

¿Cómo llevo a cabo esto?

Última edición por letni; 11/01/2009 a las 09:40
  #4 (permalink)  
Antiguo 11/01/2009, 20:10
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Respuesta: Formulario dinámico

se me ocurre esta opcion

Código PHP:
// Carga los productos
$Select mysql_query("select * fro productos order by codigo asc");
// Recorro los productos
while ($Recorre mysql_fetch_array($Select))
{
// Genera el nombre del campo
$Actual "Cantidad_".$Recorre['Codigo'];
// Recibe la cantidad asignada al producto actual
$Cantidad $_POST[$Actual];
if (
$Cantidad 0)
// Inserta el pedido
$Agrega mysql_query("insert into pedidos values ('".$CodPedido."','".$Recorre['Codigo']."','".$Cantidad."')");
if (
$Agrega)
     echo 
"Se agrego el producto al pedido";

  #5 (permalink)  
Antiguo 12/01/2009, 13:55
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Formulario dinámico

@helacer, creo que lo he entendido, tengo este código y me funciona, te ganaste Karma amigo:

consulta.php:

Código PHP:
<html> 
   <body> 
      <form method = "post" action = "mostrar.php">
      <table>
         <tr>
             <td>Producto</td>
             <td>Cantidad</td>
         </tr>  
      <?php
         $link 
mysql_connect("localhost""user""0000");
         
mysql_select_db("Prueba"$link);
         
$result mysql_query("select * from Productos"$link);
         while (
$registro mysql_fetch_array($result)) {
            echo 
"<tr>";
            echo 
"<td>".$registro['Descripcion']."</td>"
            echo 
"<td><input type ='text' name = 'Cantidad_".$registro['Codigo']."'></td>";  
            echo 
"</tr>";
         }
      
?>
      </table>
      <input type="Submit" name = "enviar" value = "Mostrar">
   </body> 
</html>
mostrar.php:

Código PHP:
<?php
   
// Carga los productos
   
$link mysql_connect("localhost""user""0000");
   
mysql_select_db("Prueba"$link);
   
$Select mysql_query("select * from Productos");
   
// Recorro los productos
   
while ($Recorre mysql_fetch_array($Select)) {
      
// Genera el nombre del campo
      
$Actual "Cantidad_".$Recorre['Codigo'];
      
// Recibe la cantidad asignada al producto actual
      
$Cantidad $_POST[$Actual];
      if (
$Cantidad 0)
         
// Inserta el pedido
         
echo "Nombre de la caja de texto: ".$Actual." Código: ".substr($Actual9strlen($Actual))." Cantidad: ".$Cantidad."<br/>";
         
//$Agrega = mysql_query("insert into pedidos values ('".$CodPedido."','".$Recorre['Codigo']."','".$Cantidad."')");
      
if ($Agrega)
        echo 
"Se agregó el producto al pedido";
   } 
?>
Saludos.

Última edición por letni; 12/01/2009 a las 17:47
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 04:30.