Foros del Web » Programando para Internet » PHP »

Insertar datos mediante while

Estas en el tema de Insertar datos mediante while en el foro de PHP en Foros del Web. Hola, Tengo una lista de productos cargados en la base de datos. Y para mostrarlos uso el siguiente while Código PHP:    $result = mysql_query ( ...
  #1 (permalink)  
Antiguo 03/03/2013, 18:10
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años
Puntos: 1
Exclamación Insertar datos mediante while

Hola,

Tengo una lista de productos cargados en la base de datos. Y para mostrarlos uso el siguiente while


Código PHP:
   $result=mysql_query("select * from t_combo ORDER BY id_combo",$link); 
echo
"
<form method="
post" class="stdform" action="cargar-orden-2.php" >
"
;
                                        while(
$row mysql_fetch_array($result)) { 
                                        echo
"
                                                    <p  class='span3' style='margin:20px 20px'>
                                                        <label style='width:100px;position:relative;z-index:2'>"
.$row["comb_nombre"]."</label>
                                                        <input type='hidden' name='id_combo' class='span1' value='"
.$row["id_combo"]."' />
                                                        <input type='hidden' name='comb_nombre' class='span1' value='"
.$row["comb_nombre"]."' />
                                                        <input type='hidden' name='comb_precio' class='span1' value='"
.$row["comb_precio"]."' />
                                                        <span class='field' style='margin-left:20px'><input type='text' name='ven_combo_cantidad' class='span1' placeholder='0' /></span>
                                                    </p>
                                        "
;
                                        }
echo
"
</form>"

Esto me arroja los siguientes datos:
  • Ron
  • Vodka
  • Whisky

En cada uno de ellos puedo llenar la cantidad de productos que deseo.

Para cargar en la siguiente tabla:

Código MySQL:
Ver original
  1. $qry= "INSERT INTO t_orden(id_orden, id_producto,cantidad_producto) VALUES
  2.     ('".$_POST["id_orden"]."','".$_POST["id_producto"]."','".$_POST["cantidad_producto"]."')";

El problema es que solo me registra un producto, supongamos que pongo 2 de cada uno, esto no repite las cargas no se si mediante un

foreach($_POST['id_producto'] as $valor) {
}

sea posible

Mi idea es que si coloco 2 de cada uno se registre un dato por individual cada uno. Por ejm:

1 - Orden:1, id_produdcto:Ron, cantidad_producto: 2
2 - Orden:1, id_produdcto:Vodka, cantidad_producto: 5
3 - Orden:1, id_produdcto:Whisky, cantidad_producto: 1

o en dado caso si no marco uno que haga esto:


1 - Orden:1, id_produdcto:Ron, cantidad_producto: 2
2 - Orden:1, id_produdcto:Vodka, cantidad_producto: 5

Espero su ayuda.

Slds,
__________________
Sé parte de nuestro mundo creativo.

http://bbcreativos.com
  #2 (permalink)  
Antiguo 03/03/2013, 18:14
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Insertar datos mediante while

para poder hacer un
Código PHP:
Ver original
  1. foreach($_POST['id_producto'] as $valor) {
  2. }

tienes que en el loop que te genera el campo declarar el atributo name como arreglo
Código HTML:
Ver original
  1. <input type="text" name="id_producto[]" />
de lo contrario solo te traerá el ultimo de los registros, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 03/03/2013, 18:43
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años
Puntos: 1
Respuesta: Insertar datos mediante while

Listo!!

Ya me registra pero ahora tengo otro problema,

Va así:

Código PHP:
Ver original
  1. <?php
  2.                                         while($row = mysql_fetch_array($result)) {
  3.                                         echo"
  4.                                                     <p  class='span3' style='margin:20px 20px'>
  5.                                                         <label style='width:100px;position:relative;z-index:2'>".$row["comb_nombre"]."</label>
  6.                                                         <input type='hidden' name='id_combo[]' class='span1' value='".$row["id_combo"]."' />
  7.                                                         <input type='hidden' name='comb_nombre' class='span1' value='".$row["comb_nombre"]."' />
  8.                                                         <input type='hidden' name='comb_precio' class='span1' value='".$row["comb_precio"]."' />
  9.                                                         <span class='field' style='margin-left:20px'><input type='text' name='ven_combo_cantidad[]' class='span1' placeholder='0' /></span>
  10.                                                     </p>
  11.                                         ";
  12.                                         }
  13.                                         ?>

Tengo que ingresar la cantidad de los productos y no me la registra

Código MySQL:
Ver original
  1. foreach($_POST['id_combo'] as $valor) {
  2.        $qry = mysql_query("INSERT INTO t_venta_combo (id_combo, id_venta, ven_combo_cantidad) VALUES ('".$valor."', '8', '".$_POST["ven_combo_cantidad"]."')") or die("Query: $qry <br />Error: ".mysql_error());
  3. }

Aparte me registra todos los campos que arroja el while asi no les coloque cantidad.

Slds,
__________________
Sé parte de nuestro mundo creativo.

http://bbcreativos.com
  #4 (permalink)  
Antiguo 03/03/2013, 18:47
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Insertar datos mediante while

Ya ahí queda de ti como desarrollador, hacer las verificaciones de lo que traes de tu formulario, con simples condicionales pudieras hacer lo que deseas
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 03/03/2013, 18:49
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años
Puntos: 1
Respuesta: Insertar datos mediante while

Intente lo siguiente,

Pero no arranca

Código PHP:
Ver original
  1. foreach($_POST['id_combo'] as $valor) && ($_POST['ven_combo_cantidad'] as $valor2) {
  2.        $qry = mysql_query("INSERT INTO t_venta_combo (id_combo, id_venta, ven_combo_cantidad) VALUES ('".$valor."', '".$row["id_venta"]."', '".$valor2."')") or die("Query: $qry <br />Error: ".mysql_error());
  3. }

No se cual es el problema,
__________________
Sé parte de nuestro mundo creativo.

http://bbcreativos.com
  #6 (permalink)  
Antiguo 03/03/2013, 18:55
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Insertar datos mediante while

debería de ser algo así
Código PHP:
Ver original
  1. foreach($_POST['id_combo'] as $key => $valor) {
  2.     echo "el id_combo es " . $valor . " el ven_combo_cantidad es " . $_POST[ven_combo_cantidad][$key];
  3. }
con ese ejemplo deberías de poder hacer ya la query que necesitas, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #7 (permalink)  
Antiguo 03/03/2013, 19:23
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años
Puntos: 1
Respuesta: Insertar datos mediante while

Listo!! logrado! mil graciaaas!!
__________________
Sé parte de nuestro mundo creativo.

http://bbcreativos.com

Etiquetas: mediante, mysql, select, sql, tabla
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 19:03.