Bienvenido a la sección de Preguntas y Respuestas, donde puedes plantear tus dudas e inquietudes técnicas y recibir respuestas de otros miembros de la comunidad. Si deseas consultar el foro anterior puedes hacerlo a través del enlace: Foro Anterior (Solo Lectura)

Realizar resta en un campo con una consulta UPDATE

0 positivos 0 negativos
9,420 vistas
Buen día amig@s. Quiero realizar una actualización en un campo de una tabla mientras al mismo tiempo inserto unos datos en otra tabla. La consulta que inserta los datos se realiza bien, pero la de actualización no. Pongo a continuación el código y estaría muy agradecido si alguien me echa una mano. Gracias de antemano.

 

<?php
                include('includes/conexion.php');
                mysql_set_charset('utf8');
                if (isset($_POST['btn_procesar'])){
                    $pro = strtoupper($_POST['producto']);
                    $codigo = $_POST['codigo'];
                    $cantidad = $_POST['cantidad'];
                    $preciot = $_POST['precio_total'];
                    $sql = "INSERT INTO ventas (id_producto, producto_venta, precio_venta, cantidad_venta) VALUES ('$codigo', '$pro', '$preciot', '$cantidad')";
                    $result = mysql_query($sql);
                    if ($result == true){
                        $consulta = "SELECT * FROM productos";
                        $resultado = mysql_query($consulta);
                        $fila = mysql_fetch_array($resultado);
                        if ($fila['cantidad'] >= $cantidad){
                        $consulta2 = "UPDATE productos SET cantidad = cantidad - '$cantidad' WHERE id='$codigo'";
                        $resultado2 = mysql_query($consulta2);
                        }
                    echo '<div class="container menu_sup">';
                        echo '<div class="col-lg-12">';
                          echo '<div class="panel panel-success">';
                            echo '<div class="panel-heading">Operación realizada con éxito</div>';
                            echo '<div class="panel-body">La venta se agregó a la base de datos.</div>';
                          echo '</div>';
                        echo '</div>';
                    echo '</div>';
                    }
                    else{
                    echo 'error';
                    }
                                
                }
            ?>
preguntado por kaarosu (15 puntos) Ene 23, 2015 en MySQL

2 Respuestas

0 positivos 0 negativos
 
Mejor respuesta

En la documentacion de mysql: http://dev.mysql.com/doc/refman/5.0/en/update.html puedes ver lo siguiente:

UPDATE t1 SET col1 = col1 + 1;

lo que indica que tus variables probablemente estan llegando mal, yo intentaria hacer un echo de la variable $consulta2 para ver exactamente que se esta ejecutando.

 

respondido por pax (136 puntos) Ene 30, 2015
seleccionada por carlos-belisario Feb 9, 2015
0 positivos 0 negativos

 $consulta2 = "UPDATE productos SET cantidad = cantidad - '$cantidad' WHERE .....

cantidad es string. intentas restarle a un numero un string? quitale las comillas simples.

un consejo cuando necesites meter una variable dentro de un string (de comilla dobles) usa los corchetes {} esto te ayuda cuando es un array o para diferenciar la sintaxis  ejemplo:

 $consulta2 = "UPDATE productos SET cantidad = cantidad - {$cantidad} WHERE ....

ejemplo con un arreglo:

 $consulta2 = "UPDATE productos SET cantidad = cantidad - {$array['cantidad']} WHERE ....

respondido por flaviosalas (47 puntos) Feb 15, 2015
...