Ir para conteúdo
Robson Tenorio Henriques

Como criar relatórios no MySQL com PHP

Recommended Posts

Estou desenvolvendo um sistema para uso particular onde realizo diariamente o cadastro dos seguintes valores no BD conforme abaixo:

INSERT INTO `viagem`(
    `viagem_nr`,
    `viagem_valor`,
    `viagem_gastos`,
    `viagem_usuario`,
    `viagem_data`,
    `viagem_hora`
)
VALUES(
    '$viagem_nr',
    '$viagem_valor',
    '$viagem_gastos',
    '$viagem_usuario',
    '$data_atual',
    '$hora_atual'
)

No caso viagem_usuario é a pessoa que preencheu o formulário com as informações.

 

Até o momento já consegui fazer um relatório do dia atual e do mês atual, abaixo esta o código do relatório diário:

<?php
include_once("../acesso/conexao.php");
include_once("../config.php");
include_once('../acesso/verifica_login.php');

//Seleção dos dados do BD com Filtragem para exibição na tabela
$filtro_data = date('Y-m-d');

$result_viagem = "SELECT * FROM viagem WHERE viagem_data = '$filtro_data' ORDER BY viagem_nr";
$resultado_viagem = mysqli_query($conexao, $result_viagem);

//Grafico
$data1 = '';
$data2 = '';

//Query para pegar os dados da tabela
$filtro_data = date('Y-m-d');
$sql = "SELECT * FROM viagem WHERE viagem_data = '$filtro_data' ORDER BY viagem_nr";
$result = mysqli_query($conexao, $sql);

//Loop
while ($row = mysqli_fetch_array($result)) {

  $data1 = $data1 . '"'. $row['viagem_valor'].'",';
  $data2 = $data2 . '"'. $row['viagem_gastos'] .'",';
}

$data1 = trim($data1,",");
$data2 = trim($data2,",");

?>


<!doctype html>
<html lang="pt-BR">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <Meta http-equiv="refresh" content="60" />
    <meta name="author" content="<?php echo $author; ?>">
    <meta name="email" content="<?php echo $email_author; ?>">
    <title><?php echo $title; ?></title>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.min.js"></script>
    <link href="https://getbootstrap.com.br/docs/4.1/dist/css/bootstrap.min.css" rel="stylesheet">
    <link rel="canonical" href="https://getbootstrap.com/docs/4.3/examples/navbar-fixed/">

    <!-- Bootstrap core CSS -->
    <link href="https://getbootstrap.com/docs/4.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">


    <style>
      .bd-placeholder-img {
        font-size: 1.125rem;
        text-anchor: middle;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
      }

      @media (min-width: 768px) {
        .bd-placeholder-img-lg {
          font-size: 3.5rem;
        }
      }

      .container{
          font-family: Arial;
          margin: 5px 5px 30px 5px;
          padding: 0;
          color: white;
          text-align: center;
          background: #555652;
          color: #E8E9EB;
          background: #222;
          border: #555652 1px solid;
          padding: 10px;
       }
      </style>

    <!-- Custom styles for this template -->
    <link href="css/navbar-top-fixed.css" rel="stylesheet">
  </head>

  <body>
<!--Inicio da NavBar-->
    <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
      <a class="navbar-brand" href="#"><?php echo $title; ?></a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>
    <div class="collapse navbar-collapse" id="navbarCollapse">
      <ul class="navbar-nav mr-auto">
        <li class="nav-item active">
          <a class="nav-link" href="../plataforma">Home<span class="sr-only">(current)</span></a>
        </li>
        <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            VIAGENS
          </a>
          <div class="dropdown-menu" aria-labelledby="navbarDropdown">
            <a class="dropdown-item" href="../sistema/viagem01.php">1ª Viagem</a>
            <a class="dropdown-item" href="../sistema/viagem02.php">2ª Viagem</a>
            <a class="dropdown-item" href="../sistema/viagem03.php">3ª Viagem</a>
            <a class="dropdown-item" href="../sistema/viagem04.php">4ª Viagem</a>
            <a class="dropdown-item" href="../sistema/viagem05.php">5ª Viagem</a>
            <a class="dropdown-item" href="../sistema/viagem06.php">6ª Viagem</a>
            <a class="dropdown-item" href="../sistema/viagem07.php">7ª Viagem</a>
            <div class="dropdown-divider"></div>
            <a class="dropdown-item" href="../sistema/encerramento.php">Fechamento</a>
          </div>
        </li>
      </ul>
    </div>
  </nav>
<!--Fim da NavBar-->

    <main role="main" class="col-md-12 ml-sm-auto col-lg-12 px-4">
      <h4>Bem Vindo, <b><?php echo $_SESSION['nome']; ?></b>.</h4>


      <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
        <h1 class="h2">Dashboard</h1>
        <div class="btn-toolbar mb-2 mb-md-0">
          <button class="btn btn-sm btn-outline-secondary dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            <span data-feather="calendar"></span>
              Hoje
          </button>
            <div class="dropdown-menu">
              <a class="dropdown-item" href="#">Mês Atual</a>
            </div>
        </div>
      </div>

  <div class="container">
    <h1><?php echo $title; ?></h1>
  <canvas id="chart" style="width: 80%; height: 50vh; background: #222; border: 1px solid #555652; margin-top: 10px;"></canvas>

  <script>
    var ctx = document.getElementById("chart").getContext('2d');
      var myChart = new Chart(ctx, {
        type: 'line',
        data: {
            labels: ["1ª","2ª","3ª","4ª","5ª","6ª","7ª"],
            datasets:
            [{
                label: 'Receita',
                data: [<?php echo $data1; ?>],
                backgroundColor: 'transparent',
                borderColor:'rgba(46, 204, 113,1.0)',
                borderWidth: 3
            },

            {
              label: 'Gastos',
                data: [<?php echo $data2; ?>],
                backgroundColor: 'transparent',
                borderColor:'rgba(235, 47, 6,1.0)',
                borderWidth: 3
            }]
        },

        options: {
            scales: {scales:{yAxes: [{beginAtZero: false}], xAxes: [{autoskip: true, maxTicketsLimit: 20}]}},
            tooltips:{mode: 'index'},
            legend:{display: true, position: 'top', labels: {fontColor: 'rgb(255, 255, 255)', fontSize: 16}}
        }
    });
  </script>
  </div>

  <h2>HOJE</h2>
  <div class="table-responsive">

    <table id="valores" class="table table-striped table-sm display">
      <thead>
        <tr align="center">
          <th>ID</th>
          <th>Data</th>
          <th>Hora</th>
          <th>Viagem</th>
          <th>Valor</th>
          <th>Gastos</th>
          <th>Usuário</th>
       </tr>
     </thead>
        <tbody>
          <?php while ($rows_viagens = mysqli_fetch_assoc($resultado_viagem)) { ?>
            <tr align="center">
              <td><?php echo $rows_viagens['viagem_ID']; ?></td>
              <td><?php echo date('d/m/Y', strtotime($rows_viagens['viagem_data'])); ?></td>
              <td><?php echo $rows_viagens['viagem_hora']; ?></td>
              <td><?php echo $rows_viagens['viagem_nr']; ?></td>
              <td><?php echo $rows_viagens['viagem_valor']; ?></td>
              <td><?php echo $rows_viagens['viagem_gastos']; ?></td>
              <td><?php echo $rows_viagens['viagem_usuario']; ?></td>
            </tr>
          <?php } ?>
        </tbody>
      </table>
    </div>
</main>
</div>
</div>

<!-- JavaScript do Bootstrap -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script>window.jQuery || document.write('<script src="https://getbootstrap.com/docs/4.3/assets/js/vendor/jquery-slim.min.js"><\/script>')</script>
<script src="https://getbootstrap.com.br/docs/4.1/assets/js/vendor/popper.min.js"></script>
<script src="https://getbootstrap.com.br/docs/4.1/dist/js/bootstrap.min.js"></script>
<script src="https://getbootstrap.com/docs/4.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-xrRywqdh3PHs8keKZN+8zzc5TX0GRTLCcmivcbNJWm2rs5C8PRhcEn3czEjhAO9o" crossorigin="anonymous"></script>

<!-- Ícones -->
<script src="https://unpkg.com/feather-icons/dist/feather.min.js"></script>
<script>
feather.replace()
</script>

<!-- Gráficos -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.1/Chart.min.js"></script>
      
    </body>
</html>

 

Porém os mesmo são atualizados automaticamente, eu necessito puxar do BD, todos os dados cadastrados no mês de julho como exemplo, e esse relatório pode ser no formato de uma tabela simples, mas que ele quando gerado fique salvo na plataforma para consultas futuras e não seja alterado.

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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

  • Conteúdo Similar

    • Por violin101
      Pessoal, saudações.
       
      Por favor, me perdoa em recorrer ao auxílio dos amigos, mas infelizmente estou com uma dúvida e não estou conseguindo resolver.
       
      Preciso de ajuda, para criar uma rotina onde o sistema possa Gerar/Calcular vencimentos com períodos variados, ou seja:
      00/30/60/90
      28/42/56
      etc
       
      Como faço para o Sistema entender que os PERÍODOS VARIADOS, seja a quantidade de parcelas e vencimentos ?
       
      Observação: peço desculpa se postei minha dúvida na postagem errada.
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Estou com uma dúvida de como devo fazer.
       
      Preciso criar uma Rotina para Cadastrar Faturamento, por exemplo:
      1) 28/42/56 dias -> de 28 p/ 42 a dif. é de 14 dias...
      2) 30/60/90 dias -> de 30 p/ 60 a dif. é de 30 dias...
      3) 0/15/30/45 dias  -> de 0 p/ 15 a dif. é de 15 dias...
       
      Como devo fazer para  cadastrar os prazo de vencimento, onde o sistema possa contar as diferenças entre os dias ?
       
      Grato,
       
      Cesar
    • Por Giovanird
      O script abaixo atualiza a página (centro.php) a cada um minuto e dentro desta página terei uma div que não poderá ser atualizada.
      Tentei colocar esta div como pagina com setInterval de 100 minutos porem ao dar o refresh no centro.php  tudo vai junto.  Será que isto é possivel?

      Desde já meu muito obrigado!
      <script> function atualiza(){ var url = 'centro.php'; $.get(url, function(dataReturn) { $('#centro').html(dataReturn); }); } setInterval("atualiza()",60000); </script>  

    • Por ILR master
      Fala pessoal, tudo bem?
       
      Eu tenho um dominio e vários subdomios dentro.
      Quero saber como recuperar um cookie nos subdominios, uma vez que ele foi criado em um subdominio específico.
       
      Estrutura:
      Tô criando o cookie em usuario.dominio.com.br com o seguinte código:
       
      $valor = md5(uniqid(rand(), true));
      setcookie("token", $valor, time() + (60 * 10), "/", "www.dominio.com.br");
       
      Porém, quero recuperar esse valor em todos os outros subdominios, mas esse codigo aí não tá funcionando.
       
      Alguém pode ajudar?
      Valeu
       
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.