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()); } ?>