Jump to content

Problema ao exibir a chegada prevista em um sistema de consulta de horários em PHP


Neive Ferreira Coelho

Postagens Recomendadas

Olá, Estou enfrentando um problema ao exibir a chegada prevista em um sistema de consulta de horários em PHP. O sistema permite que os usuários selecionem uma seção de origem e uma seção de destino, e com base nessa seleção, o sistema consulta o banco de dados para obter os horários de viagem correspondentes. Meu banco de dados é o MySQL, e aqui estão as informações relevantes sobre a estrutura das tabelas que estou usando: Tabela "viagens": Colunas: id (chave primária), horario_saida, poltronas_livres, preco, tipo, linha, rota, empresa, ocupacao Tabela "tempo_de_viagem": Colunas: id (chave primária), secao_origem_codigo, secao_destino_codigo, duracao_minutos Tabela "secoes": Colunas: id (chave primária), codigo, nome_secao Eu segui as instruções fornecidas em alguns tutoriais e tentei implementar a exibição da chegada prevista adicionando o código necessário. No entanto, a chegada prevista não está sendo exibida corretamente. Em vez disso, está sendo exibido o horário de saída como a chegada prevista para todas as viagens. Eu verifiquei o código e parece que a consulta ao banco de dados para obter a duração da viagem está correta. No entanto, algo não está funcionando corretamente ao calcular a chegada prevista com base no horário de saída e na duração. Exemplo: minha saída 06 horas e o tempo de viagem é de 1h40min quero que na cheda prevista mostra 07h40mim. Aqui está o trecho de código relevante que estou usando para exibir os horários de viagem e calcular a chegada prevista. connect_error) { die("Falha na conexão com o banco de dados: " . $conn->connect_error); } // ... // Consulta para buscar os horários de saída das viagens $sql = "SELECT * FROM viagens"; $result = $conn->query($sql); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo ""; echo ""; // Consulta para buscar a duração da viagem na tabela tempo_de_viagem $secaoOrigem = $_POST['estou_em']; $secaoDestino = $_POST['indo_para']; $sql_tempo = "SELECT duracao_minutos FROM tempo_de_viagem WHERE secao_origem_id = $secaoOrigem AND secao_destino_id = $secaoDestino"; $result_tempo = $conn->query($sql_tempo); if ($result_tempo !== false && $result_tempo->num_rows > 0) { $row_tempo = $result_tempo->fetch_assoc(); $duracao_minutos = $row_tempo["duracao_minutos"]; // Formatar a duração utilizando a função formatarDuracao() $duracao_formatada = formatarDuracao($duracao_minutos); // Calcular a chegada prevista com base na hora de saída e duração $horario_saida = strtotime($row["horario_saida"]); $duracao_minutos = intval($row_tempo["duracao_minutos"]); $horario_chegada = $horario_saida + ($duracao_minutos * 60); $chegada_prevista = date('H:i', $horario_chegada); echo "" . $chegada_prevista . ""; echo "" . $duracao_formatada . ""; } // Restante do código para exibir as outras colunas da tabela // echo "" . $row["poltronas_totais"] . ""; // echo "" . $row["poltronas_vendidas"] . ""; //cho "" . ($row["poltronas_totais"] - $row["poltronas_vendidas"]) . ""; // Fechando a tag echo ""; } } else { echo "Nenhum horário de viagem encontrado"; } $conn->close(); ?>
Link to comment
Compartilhe em outros sites

consegui resolver

// Consulta para buscar a duração da viagem $secaoOrigem = $_POST['estou_em'] ?? 1; $secaoDestino = $_POST['indo_para'] ?? 2; $sql_tempo = "SELECT ADDTIME('" . $row['horario_saida'] . "', t.tempo_de_viagem) as chegada_prevista FROM tarifa t INNER JOIN linhas l ON t.linha_id = l.id WHERE t.origem_id = $origemId AND t.destino_id = $destinoId"; $result_tempo = $conn->query($sql_tempo); if ($result_tempo && $result_tempo->num_rows > 0) { $row_tempo = $result_tempo->fetch_assoc(); echo "

" .date('H:i', strtotime($row_tempo['chegada_prevista'])) . ""; } else { echo "Não disponível"; }
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...