Autor Tema: Problema en meter datos en bbdd mediante foreach y while  (Leído 268 veces)

Desconectado linex2016

  • PHPerit@
  • *
  • Mensajes: 1
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Problema en meter datos en bbdd mediante foreach y while
« en: 03 de Mayo de 2016, 12:49:29 pm »
Buenas!!!, actualmente, ,estoy preparando un programilla y me he encontrado con un problema. Os explico, paso un array, lo recorro con un foreach, y dentro del foreach tengo una consulta sql, para que, cuando se de la condición, se inserte los datos que saca el foreach.

Adjunto el código:

 

foreach($_POST['cantidad'] as $cantidad_factura)
{
$consulta_buscar="SELECT id_factura, numero_factura FROM facturas WHERE        numero_factura='$numero_factura'";
$lanzo_consulta_buscar=mysql_query($consulta_buscar);

while($resultado_buscar=mysql_fetch_array($lanzo_consulta_buscar))
{

$id_factura_can=$resultado_buscar['id_factura'];
$numero_factura_can=$resultado_buscar['numero_factura'];

}
$consulta_insertar_cantidad="INSERT INTO cantidad (id_cantidad, id_factura_can, numero_factura_can, cantidad_factura) VALUES ('NULL', '$id_factura_can', '$numero_factura_can', '$cantidad_factura')";
$lanzo_consulta_cantidad=mysql_query($consulta_insertar_cantidad);
}

 

Si lo hago de esta manera, el $id_factura_can, solo quedará un registro de todos los que pudiera tener, y el campo  numero_factura_can si queda correcto, por ejemplo:

id_factura_can    numero_factura_can

2                                5

2                                4

2                                1

 

Si el INSERT lo meto dentro del While, tampoco da el resultado que quiero, daría (por ejemplo);

id_factura_can    numero_factura_can

2                                5

2                                5

2                                5

2                                4

2                                4

2                                4

2                                1

2                                1

2                                1

 

3                                5

3                                5

3                                5

3                                5

..

..

..

¿Cómo puedo hacer para que cada id se asocie a su cantidad correspondiente? es decir:

 

id_factura_can    numero_factura_can

1                                2

2                                3

 4                                4

 

Muchas gracias.

Comunidad PHPeros

Problema en meter datos en bbdd mediante foreach y while
« en: 03 de Mayo de 2016, 12:49:29 pm »

Desconectado javipilo

  • PHPero Experto
  • *****
  • Mensajes: 975
  • Karma: 31
  • Sexo: Masculino
    • Ver Perfil
Re:Problema en meter datos en bbdd mediante foreach y while
« Respuesta #1 en: 04 de Mayo de 2016, 14:11:30 pm »
Sería así, pero el problema lo tienes en otro lado, mira bien:

Código: [Seleccionar]
foreach($_POST['cantidad'] as $cantidad_factura) {
$lanzo_consulta_buscar = mysql_query("SELECT id_factura, numero_factura FROM facturas WHERE numero_factura = '" . $numero_factura . "'");
while($resultado_buscar = mysql_fetch_array($lanzo_consulta_buscar)) {
$id_factura_can = $resultado_buscar['id_factura'];
$numero_factura_can = $resultado_buscar['numero_factura'];

$lanzo_consulta_cantidad = mysql_query("INSERT INTO cantidad (id_cantidad, id_factura_can, numero_factura_can, cantidad_factura) VALUES ('NULL', '" . $id_factura_can . "', '" . $numero_factura_can . "', '" . $cantidad_factura ."')");
}
}

Desconectado Blackstar

  • PHPerit@
  • *
  • Mensajes: 3
  • Karma: 0
  • Sexo: Masculino
  • Nuev@ PHPer@
    • Ver Perfil
Re:Problema en meter datos en bbdd mediante foreach y while
« Respuesta #2 en: 09 de Mayo de 2016, 14:42:03 pm »
Buen día

Creo que el problema lo tienes en el while, estás haciendo el insert fuera del ciclo while, al meter dentro debería de funcionar correctamente.

Espero haber sido de ayuda.