Foros del Web » Programando para Internet » PHP »

ayuda con UPDATE

Estas en el tema de ayuda con UPDATE en el foro de PHP en Foros del Web. Que tal gente, el objetivo es basicamente que despues de obtener el id_producto y la cantidad_detalle_ventas de la tabla detalle_ventas, hacer este UPDATE: $consulta_uno = ...
  #1 (permalink)  
Antiguo 05/09/2010, 23:06
 
Fecha de Ingreso: agosto-2009
Mensajes: 37
Antigüedad: 14 años, 8 meses
Puntos: 0
ayuda con UPDATE

Que tal gente, el objetivo es basicamente que despues de obtener el id_producto y la cantidad_detalle_ventas de la tabla detalle_ventas, hacer este UPDATE:

$consulta_uno = "UPDATE productos SET cantidad_stock=cantidad_stock + '$cant_prod_up' WHERE id_producto = '$id_prod_up'";
$obj_db->consulta($consulta_uno);

en la tabla productos.

aca el codigo completo:

require ('../include/generic_lib.php');
$obj_db = new db();

$consulta = "SELECT id_producto, cantidad_detalle_ventas FROM detalle_ventas WHERE id_venta = 94";
$obj_db->consulta($consulta);
$cantidad_lineas = $obj_db->cant_filas_res;
$contador=0;

if($obj_db->cant_filas_res!=0)
{
while($linea = $obj_db->tomar_fila())
{
$id_prod_up = $linea["id_producto"];
$cant_prod_up = $linea["cantidad_detalle_ventas"];
echo "<B>Id producto: </B>".$id_prod_up."<BR>";
echo "<B>Cantidad Producto: </B>".$cant_prod_up."<BR>";
$arr[] = $linea;
}
}
else
{
echo "Sin Resultados";
}
$datos = array('datos' => $arr);

//aca es donde estoy probando tomar los valores de la consulta
foreach ($datos as $clave=>$arr)
{
echo "dni: $clave Nombre: $valor<br>";
}
while($contador < $cantidad_lineas)
{
//Restablecemos el campo cantidad_stock de la tabla productos
$consulta_uno = "UPDATE productos SET cantidad_stock=cantidad_stock + '$cant_prod_up' WHERE id_producto = '$id_prod_up'";
$obj_db->consulta($consulta_uno);
$contador++;
}

echo "<B>N&uacute;mero de Filas: </B>".$cantidad_lineas;

cualquier ayuda vendria bien, gracias.
  #2 (permalink)  
Antiguo 05/09/2010, 23: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: ayuda con UPDATE

especificamente cual es el problema???? o lo adivinamos??
__________________
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 05/09/2010, 23:54
 
Fecha de Ingreso: agosto-2009
Mensajes: 37
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ayuda con UPDATE

el tema es que esta parte solo me decrementa una fila de la tabla productos:

while($contador < $cantidad_lineas)
{
//Restablecemos el campo cantidad_stock de la tabla productos
$consulta_uno = "UPDATE productos SET cantidad_stock=cantidad_stock + '$cant_prod_up' WHERE id_producto = '$id_prod_up'";
$obj_db->consulta($consulta_uno);
$contador++;
}

si es que la venta tiene 3 filas en la tabla detalle_ventas conectada a la tabla ventas, luego debe decrementarme en la tabla productos los 3 productos en el campo cantidad_stock, no se si me explico, esto debe efectuarse cuando se desea modificar una venta o factura, no se si me explico bien, gracias por responder, en cuanto al foreach lo estaba probrando para ver si almaceno los id_producto que tomo de la tabla detalle_ventas para lueog decrementarlos
  #4 (permalink)  
Antiguo 06/09/2010, 00:05
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: ayuda con UPDATE

has un echo a esta variable
Código PHP:
Ver original
  1. $cantidad_lineas;
y ve cuantas te trae y el el while creo que debe de ser <= para que incluya el ultimo o no??
verifica bien esa variable que es ahi donde esta el detalle suerte
__________________
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 06/09/2010, 00:13
 
Fecha de Ingreso: agosto-2009
Mensajes: 37
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ayuda con UPDATE

Me devuelve correctamente la cantidad de filas, te paso el codigo que uso ya con la interfaz:

//Actualizamos los datos de la tabla Ventas
$consulta_princ = "UPDATE ventas SET id_cliente=$id_cliente, id_usuario=1, fecha_venta=$fecha_venta, importe_venta=$importe_venta WHERE id_venta=$id_venta";
$obj_db->consulta($consulta_princ);

//Tomamos el id_producto y la cantidad_detalle_ventas para efectuar el update
$consulta = "SELECT id_producto, cantidad_detalle_ventas FROM detalle_ventas WHERE id_venta = '$id_venta'";
$obj_db->consulta($consulta);
$linea = $obj_db->tomar_fila();
$id_prod_up = $linea["id_producto"];
$cant_prod_up = $linea["cantidad_detalle_ventas"];
$contador=0;
$cantidad_lineas = $obj_db->cant_filas_res;

ESTA PARTE ES DONDE NO ME ESTA EFECTUANDO
while($contador > $cantidad_lineas)
{
//Restablecemos el campo cantidad_stock de la tabla productos
$consulta_uno = "UPDATE productos SET cantidad_stock=cantidad_stock + '$cant_prod_up' WHERE id_producto = $id_prod_up";
$obj_db->consulta($consulta_uno);
$contador++;
}

// Eliminamos las filas de la tabla detalle_ventas relacionadas al id_venta
$consulta = "DELETE FROM detalle_ventas WHERE id_venta = $id_venta";
$obj_db->consulta($consulta);

foreach($detalle_producto as $registro)
{
$id_producto = ($registro["id_producto"] == null) ? 'null' : "'".$registro["id_producto"]."'";
$cant_prod = ($registro["cantidad_detalle_ventas"] == null) ? 'null' : "'".$registro["cantidad_detalle_ventas"]."'";
$imp_prod = ($registro["importe_detalle_ventas"] == null) ? 'null' : str_replace('.', '', $registro["importe_detalle_ventas"]);

//Insertamos las nuevas filas en la tabla detalle_ventas relacionadas al id_venta
$consulta_princ = "INSERT INTO detalle_ventas(id_detalle_ventas, id_producto, id_venta, cantidad_detalle_ventas, importe_detalle_ventas) VALUES (nextval('sec_detalle_ventas'), $id_producto, $id_venta, $cant_prod, $imp_prod)";
$obj_db->consulta($consulta_princ);

//Volvemos a Decrementar el campo cantidad_stock de la tabla productos
$consulta_dos = "UPDATE productos SET cantidad_stock=cantidad_stock - $cant_prod WHERE id_producto = $id_producto";
$obj_db->consulta($consulta_dos);
}
  #6 (permalink)  
Antiguo 06/09/2010, 10:20
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: ayuda con UPDATE

teng una duda si estas es acomodando los stock para que hacer un ciclo?? cuantas veces tienes el mismo producto en el inventario??? deberia de ser una sola con su stock max y min y la cantidad de producto que tienes para hacer la comparacion o no?? ademas
while($contador > $cantidad_lineas)
siempre va a ser falso xq (contador es 0) por lo que siempre es menor 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 06/09/2010, 21:06
 
Fecha de Ingreso: agosto-2009
Mensajes: 37
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ayuda con UPDATE

hola, gracias por las respuestas, no logro salir con esto, la cosa es que quiero luego de tomar algunos valores de la bd, hacer un update multiple en otra tabla, el tema es que si pongo en comentario esta linea:

/*$consulta = "UPDATE productos SET cantidad_stock=cantidad_stock + '$cant_prod_up' WHERE id_producto = '$id_prod_up'";
$obj_db->consulta($consulta);*/

que es la que debe hacer el update, me muestra todas las filas correctamente, pero si descomento para hacer el update, solo me actualiza la ultima fila en la bd, necesito que haga una iteracion en ese update, no se si se entiende, cualquier ayuda vendria bien, gracias.

for($contador=0; $contador < $cantidad_lineas; $contador++)
{
while($linea = $obj_db->tomar_fila())
{

echo $id_prod_up = $linea["id_producto"];
echo $cant_prod_up = $linea["cantidad_detalle_ventas"];
/*$consulta = "UPDATE productos SET cantidad_stock=cantidad_stock + '$cant_prod_up' WHERE id_producto = '$id_prod_up'";
$obj_db->consulta($consulta);*/

}
}
  #8 (permalink)  
Antiguo 07/09/2010, 00:04
 
Fecha de Ingreso: agosto-2009
Mensajes: 37
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ayuda con UPDATE

Logre solucionarlo, con esto ya me efectua el UPDATE multiple jeje, ahora solo quisiera saber por que si escribo:

$consulta2 = "UPDATE productos SET cantidad_stock=cantidad_stock + '$cant_prod_up' WHERE id_producto = '$id_prod_up'";
$resultado= pg_query($consulta2);

o asi:

pg_query("UPDATE productos SET cantidad_stock=cantidad_stock + '$cant_prod_up' WHERE id_producto = '$id_prod_up'");

funciona perfectamente, pero si hago asi:

$consulta = "UPDATE productos SET cantidad_stock=cantidad_stock + '$cant_prod_up' WHERE id_producto = '$id_prod_up'";
$obj_db->consulta($consulta1);

no funciona, esto procede de una funcion definida en el archivo require ('../include/generic_lib.php');
que esta:

function consulta($consulta)
{
//Se ejecuta la consulta
$this->resultado = pg_query($this->conexion, $consulta);
$this->cant_filas_res = pg_num_rows($this->resultado);
return;
}

el codigo completo:

<?php

require ('../include/generic_lib.php');
$obj_db = new db();

$contador=0;

$consulta1 = "SELECT id_producto, cantidad_detalle_ventas FROM detalle_ventas WHERE id_venta = 104";
$obj_db->consulta($consulta1);
$cantidad_lineas = $obj_db->cant_filas_res;
while($linea = $obj_db->tomar_fila())
{

echo $id_prod_up = $linea["id_producto"];
echo $cant_prod_up = $linea["cantidad_detalle_ventas"];

$consulta2 = "UPDATE productos SET cantidad_stock=cantidad_stock + '$cant_prod_up' WHERE id_producto = '$id_prod_up'";
$resultado= pg_query($consulta2);
}

echo "<B>N&uacute;mero de Filas: </B>".$cantidad_lineas;

?>

Thanks anyways...
  #9 (permalink)  
Antiguo 07/09/2010, 10: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: ayuda con UPDATE

depura la consulta a ver que error te dice
Código PHP:
Ver original
  1. $this->resultado = pg_query($this->conexion, $consulta) or die (pg_error());
para ver que error te da a parte
Cita:
$consulta = "UPDATE productos SET cantidad_stock=cantidad_stock + '$cant_prod_up' WHERE id_producto = '$id_prod_up'";
$obj_db->consulta($consulta1);
$consulta no es igual a $consulta1
por lo que no esta tomando la consulta pero es bueno que en la parte de desarrollo depures tus consultas para ver los posibles errores suerte
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way

Etiquetas: update
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 11:16.