BOLETC/php/insertar_concierto.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());
}
?>