PHP - Actualizar stock en carrito de compras

   
Vista:
Imágen de perfil de ccessaro

Actualizar stock en carrito de compras

Publicado por ccessaro (18 intervenciones) el 19/03/2017 20:23:39
Buenas Tardes!
soy aprendiz pero trabajo duro para aprender, estoy en una situacion que no he podido corregir, tengo una tienda online y todo funciona de maravilla adiciono el articulo, cambio la cantidad y cuando confirmo la venta me actualiza el stock, aqui es donde tengo la situacion a mejorar y cuando la venta es mayor que la existencia me actualiza la base de datos (MySQL) y cuando verifico las existencias me salen negativas, yo quiero que cuando sea mayor la venta no me deje seguir con la compra y me devuelva a el listado de productos para que coloquen la cantidad menor, muchas gracias.

este es el codigo que utilizo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 	//Agrego la variable de sesion al arreglo
	$arreglo=$_SESSION['carrito'];
	//Recorro el arreglo 
	for($i=0;$i<count($arreglo);$i++){
		//Consulto la cantidad en stcck dependiendo del Id que baya el ciclo For
		$re=mysql_query("SELECT cuanto_hay FROM articulo WHERE id_articulo=".$arreglo[$i]['id_articulo'])or die(mysql_error());
                         if($cantidad > $cuanto_hay) {
                             echo "La cantidad es superior a lo que hay en la tienda";
                         }else{ // actualizo la db con los datos nuevos!
						while ($f=mysql_fetch_array($re)) {
							//hago el calculo de cuantos van a quedar en Stock
							$x=$f['cuanto_hay']-$arreglo[$i]['cantidad'];
							//Actualizo el registro stock de la BD
							mysql_query("UPDATE articulo SET cuanto_hay=".$x." WHERE id_articulo=".$arreglo[$i]['id_articulo'])or die(mysql_error());
						}
			}
					}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip

Actualizar stock en carrito de compras

Publicado por kip (862 intervenciones) el 20/03/2017 02:54:27
Hola, lo que yo haria en tu caso es colocar una condicion en la consulta asi:

1
$re = mysql_query("SELECT cuanto_hay FROM articulo WHERE id_articulo = ".$arreglo[$i]['id_articulo']." AND cuanto_hay >= ".$arreglo[$i]['cantidad'])or die(mysql_error());

De esa forma solo traere el registro si el stock es mayor o igual a la cantidad del carrito.

Entonces quedaria asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
//Agrego la variable de sesion al arreglo
$arreglo = $_SESSION['carrito'];
//Recorro el arreglo 
for ($i = 0; $i < count($arreglo); $i++) {
    //Consulto la cantidad en stcck dependiendo del Id que baya el ciclo For
    $re = mysql_query("SELECT cuanto_hay FROM articulo WHERE id_articulo = " . $arreglo[$i]['id_articulo'] . " AND cuanto_hay >= " . $arreglo[$i]['cantidad']) or die(mysql_error());
    if (mysql_num_rows($re) === 0) {
        echo "La cantidad es superior a lo que hay en la tienda";
    } else { // actualizo la db con los datos nuevos!
        while ($f = mysql_fetch_array($re)) {
            //hago el calculo de cuantos van a quedar en Stock
            $x = $f['cuanto_hay'] - $arreglo[$i]['cantidad'];
            //Actualizo el registro stock de la BD
            mysql_query("UPDATE articulo SET cuanto_hay=" . $x . " WHERE id_articulo=" . $arreglo[$i]['id_articulo']) or die(mysql_error());
        }
    }
}

Fijate en el mysql_num_rows() que uso para saber si la consulta retorno algun registro y si esta funcion me retorna un 0 pues no hago el UPDATE.

Te recomiendo tambien usar la libreria mysqli en lugar de mysql.
http://php.net/manual/es/mysqli.examples-basic.php

Pruebalo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Cesar Augusto Rojas

Actualizar stock en carrito de compras

Publicado por Cesar Augusto Rojas (18 intervenciones) el 20/03/2017 18:06:36
Buenos dias!
KIP te agradezco tu ayuda, ahora la actualizacion me dice que "La cantidad es superior a lo que hay en la tienda" y no me descuenta el articulo que supera las existencias en la base de datos , hasta alli perfecto. muchas gracias.
Entonces me descuenta las que estan correctas (ademas me envia al correo las compras totales con todos los items y cantidades pedidas) como hago para que no me descuente ninguna y vuelva al checkout, para que actualice la cantidad en el articulo correspondiente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de ccessaro

Actualizar stock en carrito de compras

Publicado por ccessaro (18 intervenciones) el 20/03/2017 18:41:55
Hola!
Kip pensandolo bien deberia ser que cuando yo actualizo la cantidad me salga un mensaje que lo maximo son $cuanto_hay osea las existencias reales de la base de datos.
O que no me haga ninguna actualizacion y me retorne al checkout (pagina donde puedo actualizar las cantidades).
Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad