-
Notifications
You must be signed in to change notification settings - Fork 0
/
procesar_compra copy.php
75 lines (62 loc) · 2.82 KB
/
procesar_compra copy.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
#session_start();
require("config/conexion.php");
include('./templates/header.html');
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Verificar si se ha seleccionado una fecha de despacho
if (!empty($_POST['fecha_despacho'])) {
$fecha_despacho = $_POST['fecha_despacho'];
// Obtener productos del carrito
$productos = $_SESSION['carrito'];
// Obtener información del cliente
$nombre_usuario = $_SESSION['username'];
try {
// Obtener el ID del cliente basado en el nombre de usuario
$stmt = $pdo2->prepare("SELECT id FROM usuarios WHERE nombre = :nombre_usuario");
$stmt->bindParam(':nombre_usuario', $nombre_usuario, PDO::PARAM_STR);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$id_cliente = $row['id'];
$stmt->closeCursor();
// Iniciar una transacción
$pdo->beginTransaction();
$pdo2->beginTransaction();
// Iterar sobre los productos del carrito
foreach ($productos as $producto) {
$id_producto = $producto['id_producto'];
$id_tienda = $producto['id_tienda'];
// Llamar al procedimiento almacenado "nueva_compra" en $db2
$stmt = $pdo2->prepare("SELECT nueva_compra(:p_id_producto, :p_id_tienda, :p_id_cliente)");
$stmt->bindParam(':p_id_producto', $id_producto, PDO::PARAM_INT);
$stmt->bindParam(':p_id_tienda', $id_tienda, PDO::PARAM_INT);
$stmt->bindParam(':p_id_cliente', $id_cliente, PDO::PARAM_INT);
$stmt->execute();
$stmt->closeCursor();
// Llamar al procedimiento almacenado "actualizar_stock_compra" en $db
$stmt = $pdo->prepare("SELECT actualizar_stock_compra(:p_id_tienda, :p_id_producto)");
$stmt->bindParam(':p_id_tienda', $id_tienda, PDO::PARAM_INT);
$stmt->bindParam(':p_id_producto', $id_producto, PDO::PARAM_INT);
$stmt->execute();
$stmt->closeCursor();
}
// Confirmar la transacción
$pdo->commit();
$pdo2->commit();
// Vaciar el carrito y mostrar un mensaje de éxito
unset($_SESSION['carrito']);
echo '<h2>Compra realizada exitosamente.</h2>';
echo '<p>¡Gracias por tu compra!</p>';
} catch (PDOException $e) {
// Si ocurre un error, deshacer la transacción
$pdo->rollBack();
$pdo2->rollBack();
echo "Error al procesar la compra: " . $e->getMessage();
}
} else {
echo '<h2>Debe seleccionar una fecha de despacho.</h2>';
}
}
?>