Ir ao conteúdo

Posts recomendados

Postado

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

// 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 "<tr>";
        echo "<td><input type='radio' name='horario' value='" . $row["id"] . "'></td>";
        echo "<td>" . date('H:i', strtotime($row["horario_saida"])) . "</td>";



            // 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_codigo = '$secaoOrigem' AND secao_destino_codigo = '$secaoDestino'";
        $result_tempo = $conn->query($sql_tempo);

            $duracao_minutos = 0; // Inicializa a variável $duracao_minutos

            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"]);
              $chegada_prevista = date('H:i', strtotime("+{$duracao_minutos} minutes", $horario_saida));

              echo "<td>" . date('H:i', $horario_saida) . "</td>";
              echo "<td>" . $chegada_prevista . "</td>";
              echo "<td>" . $duracao_formatada . "</td>";
            } else {
              $chegada_prevista = "N/A";

              echo "<td>" . date('H:i', strtotime($row["horario_saida"])) . "</td>";
              echo "<td>" . $chegada_prevista . "</td>";
              //echo "<td>N/A</td>";
            }

Aqui está o trecho de código relevante que estou usando para exibir os horários de viagem e calcular a chegada prevista

  • mês depois...
Postado

Parece que o problema está na forma como a chegada prevista está sendo calculada


 

    // Calcular a chegada prevista com base na hora de saída e duração
    $horario_saida = strtotime($row["horario_saida"]); // Converte o horário de saída para timestamp
    $duracao_minutos = $row_tempo["duracao_minutos"]; // Duração da viagem em minutos

    // Calcula a chegada prevista em formato timestamp
    $chegada_prevista_timestamp = strtotime("+{$duracao_minutos} minutes", $horario_saida);

    // Formata a chegada prevista no formato 'H:i'
    $chegada_prevista = date('H:i', $chegada_prevista_timestamp);

    // Exibe a chegada prevista
    echo "<td>" . date('H:i', $horario_saida) . "</td>";
    echo "<td>" . $chegada_prevista . "</td>";
    echo "<td>" . $duracao_formatada . "</td>";

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!