Foros del Web » Programando para Internet » PHP »

Bucle para insertar varios registros en un BD

Estas en el tema de Bucle para insertar varios registros en un BD en el foro de PHP en Foros del Web. Hola, bien pues comenzare por explicar mi problema: Deseo ingresar varios registros en una base de datos al mismo tiempo, los datos los envio mediante ...
  #1 (permalink)  
Antiguo 29/11/2010, 13:59
 
Fecha de Ingreso: noviembre-2010
Ubicación: The Sky
Mensajes: 11
Antigüedad: 14 años
Puntos: 0
Bucle para insertar varios registros en un BD

Hola, bien pues comenzare por explicar mi problema:

Deseo ingresar varios registros en una base de datos al mismo tiempo, los datos los envio mediante POST, con un foreach recorro el arreglo para encontrar los datos que debo ingresar que son ID_Articulo, ID_Salida y Cantidad.

El problema es que inserta un registro por cada cantidad, es decir, si deseo insertar 2 registros en la BD aparecen 4 registros.

ID_Articulo----ID_Salida----Cantidad
abc-001---------89------------1
abc-001---------89------------9
abc-012---------89------------1
abc-012 --------89------------9

Mi codigo es:

foreach($_POST as $clave => $Cod_A){
for ($i=1; $i<=$linea; $i++) {
$cant = substr_replace('cantidad', $i, 8);
$cantidad = $_POST[$cant];

$sql2="INSERT INTO detalle_reg_s (Insumo_Det, Cod_RS, Cantidad) VALUES ('$Cod_A', $Codigo_RS, $cantidad)";
$res2=mysql_query($sql2, $dbd);
echo mysql_error();


}
}
Gracias, espero me puedan ayudar
  #2 (permalink)  
Antiguo 29/11/2010, 14:53
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 10 meses
Puntos: 96
Respuesta: Bucle para insertar varios registros en un BD

SAludos

Si quitas el for, dejas solo el foreach e imprime la sentencia sin ejecutarla sobre la base de datos te retorna lo que esperas o ya desde el foreach tienes problemas?
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 30/11/2010, 05:44
Avatar de tersipodes  
Fecha de Ingreso: noviembre-2010
Mensajes: 23
Antigüedad: 14 años
Puntos: 0
Respuesta: Bucle para insertar varios registros en un BD

Hola,

¿Podrías poner el formulario que utilizas para enviar la información para que se inserte en la BD? Así sería más fácil ayudarte.
  #4 (permalink)  
Antiguo 30/11/2010, 07:54
 
Fecha de Ingreso: noviembre-2010
Ubicación: The Sky
Mensajes: 11
Antigüedad: 14 años
Puntos: 0
Respuesta: Bucle para insertar varios registros en un BD

Nano_ si no le pongo el for, no inserta ningun registro, ya que el for va contando la cantidad que se va a insertar, el tersipodes formulario es:

<?php
$linea = 1;

while($row = mysql_fetch_array($res2, MYSQL_ASSOC)) {
$Cod_A = $row{'Cod_A'};
$Nombre_A = $row{'Nombre_A'};
$cantidad = $row{'cantidad'};

echo("<tr><td><input type='checkbox' name='Codigo$linea' value='$Cod_A'>"."<td>".$Cod_A."</td> <td>".$Nombre_A."</td> <td>".$cantidad."</td>");
echo "<input type='hidden' name='Cod_A$linea' value='".$Cod_A."'>";
echo "<input type='hidden' name='cantidad$linea' value='".$cantidad."'>";
echo "<input type='hidden' name='linea' value='".$linea."'>";

$linea++;
}
mysql_free_result($res);

echo "</form>";
?>

Espero me entiendan....
  #5 (permalink)  
Antiguo 30/11/2010, 08:08
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 10 meses
Puntos: 96
Respuesta: Bucle para insertar varios registros en un BD

Saludos

Otra forma de implementarlo
Código PHP:
Ver original
  1. <?php
  2. while($row = mysql_fetch_array($res2, MYSQL_ASSOC)) {
  3. $Cod_A = $row{'Cod_A'};
  4. $Nombre_A = $row{'Nombre_A'};
  5. $cantidad = $row{'cantidad'};
  6. //no me queda claro lo de la cantidad por eso lo deje asi como lo tenias
  7. echo("<tr><td><input type='checkbox' name='Codigo[]' value='$Cod_A'>"."<td>".$Cod_A."</td> <td>".$Nombre_A."</td> <td>".$cantidad."</td>");
  8. echo "<input type='hidden' name='Cod_A[]' value='".$Cod_A."'>";
  9. echo "<input type='hidden' name='cantidad[]' value='".$cantidad."'>";
  10. }
  11.  
  12. echo "</form>";
  13. ?>

Recojiendo los valores:

Código PHP:
Ver original
  1. $linea=count($_POST['cantidad']);
  2. $Cod_A=$_POST['$Cod_A'];
  3. $Codigo_RS=$_POST['Codigo_RS'];
  4.  
  5. for ($i=0; $i<=$linea; $i++) {
  6. $cant = substr_replace('cantidad', $i, 8);
  7. $cantidad = $_POST[$cant];
  8. $valor1=$Cod_A[$i];
  9. $valor2=$Codigo_RS[$i]
  10. $sql2="INSERT INTO detalle_reg_s (Insumo_Det, Cod_RS, Cantidad) VALUES ('$valor1', '$valor2', $cantidad)";
  11. $res2=mysql_query($sql2, $dbd);
  12. echo mysql_error();
  13.  
  14. }
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #6 (permalink)  
Antiguo 30/11/2010, 08:17
 
Fecha de Ingreso: noviembre-2010
Ubicación: The Sky
Mensajes: 11
Antigüedad: 14 años
Puntos: 0
Pues aun no quiere, me marca un error de sintaxis del MySQL:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' )' at line 1

No me toma los hidden como un arreglo, no los reconoce, me imagino que por eso no hace la consulta a la base de datos y no inserta los registros

[QUOTE=Nano_;3654702]
//no me queda claro lo de la cantidad por eso lo deje asi como lo tenias

Lo que pasa es que estoy desarrollando un sistema para controlar las salidad de un almacen, entonces la cantidad la necesito para hacer operaciones en el inventario, como maximos, minimos, el stock

Última edición por GatorV; 30/11/2010 a las 09:04
  #7 (permalink)  
Antiguo 30/11/2010, 08:44
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 10 meses
Puntos: 96
Respuesta: Bucle para insertar varios registros en un BD

Imprime el query y postealo para saber como se están generando!.
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #8 (permalink)  
Antiguo 30/11/2010, 09:34
 
Fecha de Ingreso: noviembre-2010
Ubicación: The Sky
Mensajes: 11
Antigüedad: 14 años
Puntos: 0
Respuesta: Bucle para insertar varios registros en un BD

Nano__ muchas gracias ya solucionamos el problema:

El Formulario:
Código PHP:
<?php   
    $linea 
1;   
                        
    while(
$row mysql_fetch_array($res2,  MYSQL_ASSOC)) {
          
$Cod_A $row{'Cod_A'};
        
$Nombre_A $row{'Nombre_A'};
        
$cantidad $row{'cantidad'};
        
        echo(
"<tr><td><input type='checkbox' name='Codigo[]' value='$Cod_A'>"."<td>".$Cod_A."</td> <td>".$Nombre_A."</td> <td>".$cantidad."</td>");
        echo 
"<input type='hidden' name='Cod_A$linea' value='".$Cod_A."'>"
        echo 
"<input type='hidden' name='cantidad$linea' value='".$cantidad."'>";                            
        echo 
"<input type='hidden' name='linea' value='".$linea."'>";
        
$linea++;
    }     
    
mysql_free_result($res);
                    
    echo 
"</form>";
?>
El script PHP:
Código PHP:
$Codigo_RS$_POST['Cod_RS'];
$linea $_POST['linea']; echo $linea;
for (
$i=1$i<=$linea$i++) {
        
$cant substr_replace('cantidad'$i8);
        
$cantidad $_POST[$cant];
        
    
$C_A substr_replace('Cod_A'$i5);
        
$Cod_A $_POST[$C_A];
                
        
$sql2="INSERT INTO detalle_reg_s (Insumo_Det, Cod_RS, Cantidad) VALUES ('$Cod_A', $Codigo_RS, $cantidad)";
        
$res2=mysql_query($sql2$dbd);
        echo 
mysql_error();
        


Etiquetas: bd, bucle, registros
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:00.