Comunidad PHPeros

Lenguajes => PHP => Mensaje iniciado por: linex2016 en 03 de Mayo de 2016, 12:49:29 pm

Título: Problema en meter datos en bbdd mediante foreach y while
Publicado por: linex2016 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.
Título: Re:Problema en meter datos en bbdd mediante foreach y while
Publicado por: javipilo 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 ."')");
}
}
Título: Re:Problema en meter datos en bbdd mediante foreach y while
Publicado por: Blackstar 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.