Como actualizar varios registros según una categoría en PHP

Necesitaría actualizar todos los registros de una tabla de artículos que sean de la misma categoría.

Tengo un primer programa en el cual pido que se seleccione la categoría y que se ingrese el porcentaje para aumentar el valor del precio de venta al público.

Hasta ahí todo bien, al ir al otro programa recibo los datos hago los cálculos, y al hacer un echo veo que los cálculos a los artículos de esa categoría seleccionada lo hace bien, el problema es que al ir a actualizar en todos los artículos de la categoría seleccionada me pone solo el ultimo valor calculado.

Dejo aquí el código del programa en cuestión:

¿

<?phpinclude "conexion.php";$descripcion=  $_POST['descripcion'];$porcentaje=  $_POST['porcentaje'];$consulta=("SELECT * FROM articulo WHERE  descripcion = '$descripcion'");$datos=mysql_query($consulta,$conexion);while($row = mysql_fetch_array($datos)) {         $descripcion=  $row['descripcion'];          $pvp=          $row['pvp'];          $aumentopor = $pvp * $porcentaje /100;         $aumentopor = $pvp + $aumentopor;         echo $descripcion;         echo $aumentopor;            $actualizar=mysql_query("UPDATE articulo SET  pvp='".$aumentopor."'                WHERE descripcion='".$descripcion."'", $conexion);}if ($actualizar){   Echo "   <html>       <head>           <meta http-equiv='REFRESH' content='0 ; url=cambioprecio.php'>           <script>              alert ('Cambios de precio con exito!!!');           </script>        </head>    </html>    ";}  else{Echo "   <html>       <head>           <meta http-equiv='REFRESH' content='0 ; url=index.html'>           <script>              alert ('Error no se ha actualizado!!!');           </script>        </head>    </html>    ";}?> 

Pongo un ejemplo:
He seleccionado la categoría frutas
Y en esta categoría están:
Bananas 2,00 €
Manzanas 1,49 €
Naranjas 1,30 €
Y quiero aumentar un 2% a esta categoría
Y esto es lo que tendría que hacer al actualizar
bananas = 2.04
manzanas = 1.51
naranjas = 1.32

Pero lo que actualiza es esto:

bananas = 1.32
manzanas = 1.32
naranjas = 1.32

Osea toma el ultimo valor calculado y los actualiza todos con ese valor.

Espero haber sido claro, y esperando que alguien me pueda ayudar.

1 Respuesta

Respuesta
1

Puedes usar también con mysql, esta opción sobre el campo pvp

UPDATE articulo SET pvp=pvp*1.2 

Que seria el 2% + el 100 % puedes controlar la variable de cambio así:

$porcentajeIncremento=2;
mysql_query("UPDATE articulo SET pvp=pvp*1.".$porcentajeIncremento." ......);

Te ahorrarías todo el calculo con php y lo harías con mysql directamente.
Saludos. 

Gracias por suscribirte a: https://www.youtube.com/user/dimit28  y gracias por visitar: http://develoteca.com 

Hola,

Gracias por responder.

He hecho lo que me indicó pero sigo teniendo el error.

He cambiado una parte en el UPDATE  y ahora por lo menos no actualiza todos los registros con los mismos datos.

He podido observar que me está aumentando un 27.27% en vez del 4.10 % que es el dato que se le ha ingresado.

ejem.

pvp  92,00 porcentaje a aumentar 4.10%
me tendría que dar 95,78 en cambio me actualiza a  117.09

He puesto un echo para ver si los calculos los hace bien después del SELECT y sí, los hace bien.

he probado en el phpMyAdmin haciendo lo siguiente:
UPDATE articulo SET pvp = pvp + (pvp * 0.041) WHERE descripcion = 'Cortina-sin-estuche-serie'

y así si funciona perfecto.

Sigo dando vueltas al asunto y no loqro encontrar donde está el error.

dejo de nuevo el programa por si me puede ayudar a encontrar donde está el problema

<?php
include "conexion.php";
$descripcion=  $_POST['descripcion'];
$porcentaje=  $_POST['porcentaje'];
$aumentopor = $porcentaje /100;
$consulta=("SELECT * FROM articulo WHERE  descripcion = '$descripcion'");
$datos=mysql_query($consulta,$conexion);
while($row = mysql_fetch_array($datos))
 {
         $descripcion=  $row['descripcion']; 
         $pvp=          $row['pvp']; 
         $calculo = $pvp * $aumentopor;
         $calculo = $pvp + $calculo;
         echo $calculo;
       $actualizar=mysql_query("UPDATE articulo SET pvp = pvp + (pvp * 0.041)  WHERE descripcion='".$descripcion."'", $conexion);
}
if ($actualizar)
{
   echo "
   <html>
       <head>
           <meta http-equiv='REFRESH' content='0 ; url=cambioprecio.php'>
           <script>
              alert ('Cambios de precio con exito!!!');
           </script>
        </head>
    </html>
    ";
}  
else
{
 echo "
   <html>
       <head>
           <meta http-equiv='REFRESH' content='0 ; url=index.html'>
           <script>
              alert ('Error no se ha actualizado!!!');
           </script>
        </head>
    </html>
    ";
}
?>        

En la espera de sus noticias y una posible ayuda

Cordiales saludos

¿Cuál sería el error exactamente?, com osugerencia puedes imprimir print_r($_POST); para saber si toda la información esta llegando, también como sugerencia se puede imprimir:

"UPDATE articulo SET pvp = pvp + (pvp * 0.041)  WHERE descripcion='".$descripcion."'"

Para conocer que esta llegando como sentencia.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas