84 lines
2.7 KiB
PHP
84 lines
2.7 KiB
PHP
<?php
|
|
error_reporting(E_ALL);
|
|
ini_set('display_errors', 1);
|
|
|
|
include 'conexion.php';
|
|
|
|
if ($_SERVER["REQUEST_METHOD"] !== "POST") {
|
|
die("Error: La solicitud no es POST.");
|
|
}
|
|
|
|
$nombre = $_POST['nombre'] ?? '';
|
|
$artista = $_POST['artista'] ?? '';
|
|
$fecha = $_POST['fecha'] ?? '';
|
|
$hora = $_POST['hora'] ?? '';
|
|
$direccion = $_POST['direccion'] ?? '';
|
|
$precio_vip = $_POST['precio_vip'] ?? null;
|
|
$precio_general = $_POST['precio_general'] ?? null;
|
|
|
|
if (empty($nombre) || empty($artista) || empty($fecha) || empty($hora) || empty($direccion) || empty($precio_vip) || empty($precio_general)) {
|
|
die("Error: Todos los campos son obligatorios.");
|
|
}
|
|
|
|
// Manejo de imagen
|
|
if (!empty($_FILES["imagen"]["name"])) {
|
|
$extension = pathinfo($_FILES["imagen"]["name"], PATHINFO_EXTENSION);
|
|
$imagenNombre = time() . "_" . uniqid() . "." . $extension;
|
|
$rutaImagen = __DIR__ . "/../img/" . $imagenNombre;
|
|
|
|
if (!move_uploaded_file($_FILES["imagen"]["tmp_name"], $rutaImagen)) {
|
|
die("Error: No se pudo mover la imagen.");
|
|
}
|
|
} else {
|
|
$imagenNombre = "default.jpg";
|
|
}
|
|
|
|
$conn->begin_transaction();
|
|
|
|
try {
|
|
// Insertar el concierto con hora
|
|
$sql = "INSERT INTO conciertos (nombre, artista, fecha, hora, direccion, imagen) VALUES (?, ?, ?, ?, ?, ?)";
|
|
$stmt = $conn->prepare($sql);
|
|
$stmt->bind_param("ssssss", $nombre, $artista, $fecha, $hora, $direccion, $imagenNombre);
|
|
$stmt->execute();
|
|
$concierto_id = $stmt->insert_id;
|
|
|
|
// Insertar las zonas (VIP y General)
|
|
$sql_zonas = "INSERT INTO zonas (concierto_id, nombre, capacidad, precio) VALUES
|
|
(?, 'VIP', 5, ?),
|
|
(?, 'General', 10, ?)";
|
|
$stmt_zonas = $conn->prepare($sql_zonas);
|
|
$stmt_zonas->bind_param("idid", $concierto_id, $precio_vip, $concierto_id, $precio_general);
|
|
$stmt_zonas->execute();
|
|
|
|
// Obtener los IDs de las zonas insertadas
|
|
$zona_vip_id = $conn->insert_id;
|
|
$zona_general_id = $zona_vip_id + 1;
|
|
|
|
// Insertar los asientos (VIP y General)
|
|
$sql_asientos = "INSERT INTO asientos (zona_id, numero, estado) VALUES ";
|
|
$values = [];
|
|
$params = [];
|
|
|
|
for ($i = 1; $i <= 5; $i++) {
|
|
$values[] = "(?, ?, 'disponible')";
|
|
array_push($params, $zona_vip_id, $i);
|
|
}
|
|
for ($i = 1; $i <= 10; $i++) {
|
|
$values[] = "(?, ?, 'disponible')";
|
|
array_push($params, $zona_general_id, $i);
|
|
}
|
|
|
|
$sql_asientos .= implode(", ", $values);
|
|
$stmt_asientos = $conn->prepare($sql_asientos);
|
|
$stmt_asientos->bind_param(str_repeat("ii", count($params) / 2), ...$params);
|
|
$stmt_asientos->execute();
|
|
|
|
$conn->commit();
|
|
echo "Concierto agregado con éxito.";
|
|
} catch (Exception $e) {
|
|
$conn->rollback();
|
|
die("Error en la transacción: " . $e->getMessage());
|
|
}
|
|
?>
|