Devolución de productos en PHP y MySQL: selección aleatoria y actualización de compras
Devolución de productos con PHP y MySQL
Introduce el nombre del usuario
<?php session_start(); $conex = new mysqli("localhost", "root", "12345", "examensep"); if ($_POST) { if (!empty($_POST["usu"])) { $usuario = $_POST["usu"]; $res = $conex->query("SELECT NOMBRE, idu FROM usuarios WHERE nombre LIKE '$usuario'"); // Buscamos el usuario a ver si existe $row = $res->fetch_assoc(); $idu = $row["idu"]; // Almacenamos el identificativo del usuario // Seleccionamos un producto aleatorio que haya comprado el usuario elegido y que tenga más de dos unidades compradas de dicho producto $res1 = $conex->query("SELECT productos.ref, compras.unid FROM productos, compras WHERE productos.ref = compras.ref AND idc = '$idu' AND compras.unid > 2 ORDER BY RAND() LIMIT 1"); while ($row = $res1->fetch_assoc()) { echo "feo"; $_SESSION["iduser"] = $idu; $_SESSION["refprodto"] = $row[ref]; $_SESSION["uds"] = $row[unid]; header('Location: script2-2.php'); // Redirigimos a un nuevo PHP donde elegiremos las uds. a devolver de dicho producto. // A este nuevo PHP le pasamos por sesión el id del usuario y la ref del producto. } } } ?><?php session_start(); $conex = new mysqli("localhost", "root", "12345", "examensep"); // Recogemos las variables de sesión. En este momento conocemos el usuario introducido, la ref del producto aleatorio con más de 2 uds y las uds compradas $user = $_SESSION["iduser"]; $ref = $_SESSION["refprodto"]; $uds = $_SESSION["uds"]; echo "Las uds. compradas por el usuario con id $user, del producto con referencia $ref son $uds unidades"; // Ahora recogemos cuántas uds queremos devolver. Estas uds se restarán de la tabla compras y se añadirán a la tabla devoluciones echo "
Introduce las cantidades que deseas devolver
"; if (!empty($_POST["devo"])) { if ($_POST["devo"] > $uds) { echo "No se pueden devolver más uds de lo que se han comprado"; } else { $devo = $_POST["devo"]; $total = $uds - $devo; // Quitamos las uds que queremos devolver de la tabla compras $conex->query("UPDATE compras SET unid = '$total' WHERE ref = '$ref'"); // Obtenemos cuál es el id de la última devolución $resu1 = $conex->query("SELECT MAX(idd) AS maxid FROM devoluciones"); $row = $resu1->fetch_assoc(); $id = ++$row["maxid"]; // Añadimos cuál va a ser el id de la siguiente tupla echo "$ref
"; echo "$user
"; // Obtenemos cuál es el id de la devolución si ya existe para ese usuario en concreto $saber = $conex->query("SELECT idd FROM devoluciones WHERE ref = '$ref' AND idd = '$user'"); // Si ya existe una devolución de ese producto por ese usuario, actualizamos la tupla en devoluciones if ($conex->affected_rows > 0) { $res5 = $conex->query("SELECT unid FROM devoluciones WHERE ref = '$ref'"); $row = $res5->fetch_assoc(); $uni = $row["unid"]; $suma = $uni + $devo; $conex->query("UPDATE devoluciones SET unid = '$suma' WHERE idd = '$ids'"); } else { // Si no existe una devolución creamos una nueva tupla $conex->query("INSERT INTO devoluciones VALUES($id, $ref, $devo)"); } } } ?>