-
Total de itens
1 -
Registro em
-
Última visita
Sobre Neto Sales
Neto Sales's Achievements
0
Reputação
-
Neto Sales começou a seguir CÓDIGO PARA SELEÇÃO DE POLTRONAS
-
Alguém pode me ajudar com esse código para seleção de poltronas. Atualmente ele gera a numeração das poltronas, à partir de uma consulta no banco de dados. O que alta funcionar é a seleção da poltrona com um clique no mouse, e a gravação das informações do form (cliente, pacote de viagem e poltrona) em uma nova tabela específica. Segue código parcialmente funcional... <?php // Inicia a sessão session_start(); // Verifica se o usuário está logado if (!isset($_SESSION['usuario_id']) || empty($_SESSION['usuario_id'])) { // Redireciona para a página de login se não estiver logado header("Location: ../login.php"); exit(); } // Inclui a conexão ao banco de dados include('../includes/db.php'); // Habilita a exibição de erros error_reporting(E_ALL); ini_set('display_errors', 1); if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Retorna a lista de nomes para o pacote selecionado if (isset($_POST['pacoteId'])) { $pacoteId = $_POST['pacoteId']; $stmt = $conn->prepare(" SELECT cv.id, c.nome FROM cadastro_vendas cv INNER JOIN clientes c ON cv.nome = c.id WHERE cv.pacote = :pacoteId "); $stmt->bindParam(':pacoteId', $pacoteId); $stmt->execute(); $nomes = $stmt->fetchAll(PDO::FETCH_ASSOC); // Retorna os nomes como JSON echo json_encode($nomes); exit(); } // Retorna o mapa de poltronas para o modelo selecionado if (isset($_POST['modeloId'])) { $modeloId = $_POST['modeloId']; $stmt = $conn->prepare("SELECT * FROM bus WHERE id = :modeloId"); $stmt->bindParam(':modeloId', $modeloId); $stmt->execute(); $modelo = $stmt->fetch(PDO::FETCH_ASSOC); // Verifica poltronas ocupadas $stmt = $conn->prepare("SELECT numero_poltrona, piso FROM poltronas WHERE modelo_id = :modeloId AND ocupada = 1"); $stmt->bindParam(':modeloId', $modeloId); $stmt->execute(); $poltronasOcupadas = $stmt->fetchAll(PDO::FETCH_ASSOC); // Mapeia as poltronas ocupadas $ocupadas = []; foreach ($poltronasOcupadas as $poltrona) { $ocupadas[$poltrona['piso']][] = $poltrona['numero_poltrona']; } // Retorna o mapa de poltronas como HTML ob_start(); echo '<p>Modelo: ' . $modelo['modelo'] . '</p>'; echo '<p>Pisos: ' . $modelo['pisos'] . '</p>'; echo '<div>'; echo '<h3>Poltronas do Ônibus</h3>'; function createSeatMap($start, $end, $numSeatsPerRow, $modeloId, $piso, $ocupadas) { echo '<div class="bus-row">'; for ($i = $start; $i <= $end; $i++) { if (($i - $start) % $numSeatsPerRow == 0 && $i != $start) { echo '</div><div class="bus-row">'; } $cor = (isset($ocupadas[$piso]) && in_array($i, $ocupadas[$piso])) ? 'red' : 'green'; echo '<div class="seat" style="background-color:' . $cor . ';" data-poltrona="' . $i . '" data-piso="' . $piso . '" data-modelo="' . $modeloId . '">' . $i . '</div>'; if (($i - $start + 1) % ($numSeatsPerRow / 2) == 0) { echo '<div class="aisle"></div>'; } } echo '</div>'; } if ($modelo['pisos'] == 1) { echo '<h4>Piso 1</h4>'; createSeatMap($modelo['num_inicio_piso1'], $modelo['num_final_piso1'], 4, $modeloId, 1, $ocupadas); } else { echo '<h4>Piso 1</h4>'; createSeatMap($modelo['num_inicio_piso1'], $modelo['num_final_piso1'], 4, $modeloId, 1, $ocupadas); echo '<h4>Piso 2</h4>'; createSeatMap($modelo['num_inicio_piso2'], $modelo['num_final_piso2'], 4, $modeloId, 2, $ocupadas); } echo '</div>'; echo ob_get_clean(); exit(); } // Salva a poltrona selecionada if (isset($_POST['poltrona'])) { $poltrona = $_POST['poltrona']; $piso = $_POST['piso']; $modeloId = $_POST['modeloId']; $pacoteId = $_POST['pacoteId']; $clienteId = $_POST['clienteId']; // Verifica se a poltrona já está ocupada $stmt = $conn->prepare("SELECT * FROM poltronas WHERE modelo_id = :modeloId AND numero_poltrona = :poltrona AND piso = :piso AND ocupada = 1"); $stmt->bindParam(':modeloId', $modeloId); $stmt->bindParam(':poltrona', $poltrona); $stmt->bindParam(':piso', $piso); $stmt->execute(); $poltronaOcupada = $stmt->fetch(PDO::FETCH_ASSOC); if ($poltronaOcupada) { echo 'Poltrona já ocupada!'; } else { // Insere a poltrona no banco de dados $stmt = $conn->prepare("INSERT INTO poltronas (pacote_id, cliente_id, modelo_id, numero_poltrona, piso, ocupada) VALUES (:pacoteId, :clienteId, :modeloId, :poltrona, :piso, 1)"); $stmt->bindParam(':pacoteId', $pacoteId); $stmt->bindParam(':clienteId', $clienteId); $stmt->bindParam(':modeloId', $modeloId); $stmt->bindParam(':poltrona', $poltrona); $stmt->bindParam(':piso', $piso); if ($stmt->execute()) { echo 'Poltrona reservada com sucesso!'; } else { echo 'Erro ao reservar poltrona!'; } } exit(); } } ?> <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <title>Reserva de Poltronas</title> <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet"> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <style> .bus-row { display: flex; margin-bottom: 10px; } .seat { width: 50px; height: 50px; margin: 5px; display: flex; align-items: center; justify-content: center; border-radius: 5px; cursor: pointer; } .aisle { width: 30px; } </style> <script> $(document).ready(function() { // Carrega os nomes quando um pacote é selecionado $('#pacote').change(function() { var pacoteId = $(this).val(); $.ajax({ url: 'mapa_poltronas.php', type: 'POST', data: {pacoteId: pacoteId}, success: function(response) { var nomes = JSON.parse(response); var options = '<option value="">Selecione um nome</option>'; nomes.forEach(function(nome) { options += '<option value="' + nome.id + '">' + nome.nome + '</option>'; }); $('#nomes').html(options); }, error: function(xhr, status, error) { console.log("Erro na requisição AJAX: " + error); } }); }); // Carrega o mapa de poltronas quando um modelo é selecionado $('#modelo').change(function() { var modeloId = $(this).val(); $.ajax({ url: 'mapa_poltronas.php', type: 'POST', data: {modeloId: modeloId}, success: function(response) { $('#poltronas').html(response); }, error: function(xhr, status, error) { console.log("Erro na requisição AJAX: " + error); } }); }); // Seleciona uma poltrona $(document).on('click', '.seat', function() { var poltrona = $(this).data('poltrona'); var piso = $(this).data('piso'); var modeloId = $('#modelo').val(); var pacoteId = $('#pacote').val(); var clienteId = $('#nomes').val(); if (!clienteId) { alert('Selecione um cliente antes de reservar a poltrona.'); return; } $.ajax({ url: 'mapa_poltronas.php', type: 'POST', data: { poltrona: poltrona, piso: piso, modeloId: modeloId, pacoteId: pacoteId, clienteId: clienteId }, success: function(response) { alert(response); // Atualiza o mapa de poltronas após a reserva $('#modelo').trigger('change'); }, error: function(xhr, status, error) { console.log("Erro na requisição AJAX: " + error); } }); }); }); </script> </head> <body> <div class="container"> <h2>Reserva de Poltronas</h2> <form> <div class="form-group"> <label for="pacote">Pacote</label> <select class="form-control" id="pacote" name="pacote"> <option value="">Selecione um pacote</option> <?php $stmt = $conn->query("SELECT id, nome_pacote FROM pacotes_viagem"); $pacotes = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($pacotes as $pacote) { echo '<option value="' . $pacote['id'] . '">' . $pacote['nome_pacote'] . '</option>'; } ?> </select> </div> <div class="form-group"> <label for="nomes">Nomes</label> <select class="form-control" id="nomes" name="nomes"> <option value="">Selecione um nome</option> </select> </div> <div class="form-group"> <label for="modelo">Modelo do Ônibus</label> <select class="form-control" id="modelo" name="modelo"> <option value="">Selecione um modelo</option> <?php $stmt = $conn->query("SELECT id, modelo FROM bus"); $modelos = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($modelos as $modelo) { echo '<option value="' . $modelo['id'] . '">' . $modelo['modelo'] . '</option>'; } ?> </select> </div> </form> <div id="poltronas"> <!-- Informações do modelo selecionado serão exibidas aqui --> </div> </div> </body> </html>