Jump to content
heenrique

Agrupar por data

Recommended Posts

Boa Noite

 

amigos tenho um select no qual me retorna o seguinte 

SELECT * FROM sis_suporte WHERE tecnico = '1' AND abertura < '2019-10-30';
+----+--------------------------------------+------------+---------------------+---------------------+-------+---------+----------------+-----------------------------+------------------+----------------------------+---------------------+------------+--------------+-------+---------+-------------+------------------------------------------------------------------+
| id | uuid_suporte                         | assunto    | abertura            | fechamento          | email | status  | chamado        | nome                        | login            | atendente                  | visita              | prioridade | ramal        | reply | tecnico | login_atend | motivo_fechar                                                    |
+----+--------------------------------------+------------+---------------------+---------------------+-------+---------+----------------+-----------------------------+------------------+----------------------------+---------------------+------------+--------------+-------+---------+-------------+------------------------------------------------------------------+
| 36 | 1901294b-80e6-4389-9059-fa090c09e382 | Outros     | 2019-09-14 19:27:42 | 2019-10-17 19:35:20 | NULL  | aberto  | 14091919272653 | Alex Ramos dos Santos       | alex.santos      | Letícia Paula de Oliveira  | 2019-10-17 16:27:15 | normal     | SAO PAULO    | nao   |       1 | leticia     | TÉCNICO HENRIQUE FINALIZOU A ORDEM: CLIENTE BLOQUEADO            |
| 37 | af8da3e7-9dbc-45b9-945b-d50cd45d9ea6 | Outros     | 2019-09-14 19:37:13 | 2019-10-04 21:11:25 | NULL  | fechado | 14091919370623 | Alexsandro Santos Braz      | alesysandro.braz | Letícia Paula de Oliveira  | 2019-10-04 16:37:15 | normal     | SAO PAULO    | nao   |       1 | leticia     | TÉCNICO HENRIQUE FINALIZOU A ORDEM:                              |
| 39 | 2b03e9d4-50ca-4713-8149-88fe083fb9d9 | Instalacao | 2019-09-16 17:00:22 | 2019-10-03 22:38:23 | NULL  | fechado | 16091916593665 | Henrique Gabriel de Almeida | teste            | Letícia Paula de Oliveira  | 2019-10-03 08:00:15 | normal     | POUSO ALEGRE | sim   |       1 | leticia     | TÉCNICO HENRIQUE FINALIZOU A ORDEM: QWE                          |
| 40 | b2c0fc23-0a5c-46ae-a8b8-a8641b1d53c4 | Outros     | 2019-10-03 23:21:22 | 2019-10-03 23:36:51 | NULL  | fechado | 03101923210987 | Henrique Gabriel de Almeida | teste            | sistema                    | 2019-10-03 14:21:15 | normal     | POUSO ALEGRE | nao   |       1 | admin       | TÉCNICO HENRIQUE FINALIZOU A ORDEM: RELIGUEI A FONTE DO CLIENTE  |
| 41 | e9aaf792-56c6-4fe1-b8c3-aa51338f65d1 | Outros     | 2019-10-03 23:23:02 | 2019-10-03 23:46:01 | NULL  | fechado | 03101923225491 | Cintia Rocha Vaz            | cintia.vaz       | sistema                    | 2019-10-03 17:22:15 | normal     | SAO PAULO    | nao   |       1 | admin       | TÉCNICO HENRIQUE FINALIZOU A ORDEM: 12                           |
+----+--------------------------------------+------------+---------------------+---------------------+-------+---------+----------------+-----------------------------+------------------+----------------------------+---------------------+------------+--------------+-------+---------+-------------+------------------------------------------------------------------+
5 rows in set (0.00 sec)

e quando imprimo sai um por um, gostaria de agrupar por data de abertura ex.

 

2019-09-14

Alex Ramos

Alexsandro

 

2019-09-16

Henrique

 

2019-10-03

Henrique

Cintia

 

como agrupar isso em php,

 

esse e o cod onde eu imprimo

 

                                        <?php while($dados = mysqli_fetch_assoc($resultado_os)){						if ($dados['status'] == 'aberto'){ ?>
                                            <div class='row'>
                                                <div class='col-md-12'>
                                                    <a href='os.php?os=<?php echo $dados['chamado']; ?>'>
                                                        <div style='box-shadow: 3px 3px 0px 1px rgba(0,0,0,0.1);' class='info-box'> <span class='info-box-icon1 bg-agua'><i style='padding-top: 35%;' class='ion ion-ios-gear-outline'></i></span>
                                                            <div class='info-box-content'> <span class='info-box-text'><b>ABERTA</b></span> <span class='info-box-text'><b>O.S:</b><?php echo $dados['chamado']; ?></span> <span class='info-box-text'><b>NOME:</b><?php echo utf8_encode($dados['nome']); ?></span> <span class='info-box-text'><b>TIPO:</b><?php echo $dados['assunto']; ?></span> <span class='info-box-text'><b>DATA/HORA:</b><?php echo (new DateTime($dados['visita']))->format('d/m/Y - H:i'); ?></span> </a>
                                                    </div>
                                                    </div>
                                                    <?php 	}	if ($dados['status'] == 'fechado'){ ?>
                                                        <div class='row'>
                                                            <div class='col-md-12'>
                                                                <a href='os.php?os=<?php echo $dados['chamado']; ?>'>
                                                                    <div style='box-shadow: 3px 3px 0px 1px rgba(0,0,0,0.1);' class='info-box'> <span class='info-box-icon1 bg-red'><i style='padding-top: 35%;' class="fa fa-check" aria-hidden="true"></i></span>
                                                                        <div class='info-box-content'> <span class='info-box-text'><b>FINALIZADA</b></span> <span class='info-box-text'><b>O.S:</b><?php echo $dados['chamado']; ?></span> <span class='info-box-text'><b>NOME:</b><?php echo utf8_encode($dados['nome']); ?></span> <span class='info-box-text'><b>TIPO:</b><?php echo $dados['assunto']; ?></span> <span class='info-box-text'><b>DATA/HORA:</b><?php echo (new DateTime($dados['fechamento']))->format('d/m/Y - H:i'); ?></span> </a>
                                                                </div>
                                                                </div>
                                                                <?php }	}  ?>
                                                            </div>
                                                        </div>
                                                </div>
                    </section>
                    </div>

 

Share this post


Link to post
Share on other sites
1 hora atrás, Felipe Guedes Coutinho disse:

@heenrique

 

Experimente usar o SELECT abaixo:

 


"SELECT * FROM sis_suporte WHERE tecnico = '1' AND abertura < '2019-10-30' Group By DATE(abertura);"

Espero ter ajudado.

 

Att.

Felipe Coutinho

Olá Felipe, tentei mas não agrupa, creio que seja porque tem hora no campo abertura e são horas variadas, sou iniciante em sql tem alguma maneira de selecionar só o dia ?

Share this post


Link to post
Share on other sites
2 horas atrás, Felipe Guedes Coutinho disse:

@heenrique

 

Experimente usar o SELECT abaixo:

 


"SELECT * FROM sis_suporte WHERE tecnico = '1' AND abertura < '2019-10-30' Group By DATE(abertura);"

Espero ter ajudado.

 

Att.

Felipe Coutinho

Olá Felipe, tenteu mas não agrupa, creio que porque tem hora no campo abertura e são horas variadas, sou iniciante em sql tem alguma maneira de selecionar só o dia ?

Share this post


Link to post
Share on other sites

@heenrique

 

O Group By que te passei TEM que funcionar.

Quando se defini GROUP BY DATE(), não importa se o campo da sua tabela é um DATE (01-01-0001) ou um TIMESTAMP (0001-01-01 23.59.59) o comando DATE() transforma o TIMESTAMP em DATE para a comparação.

 

Só para que não fique com dúvida do que eu estou falando, da uma olhada na dúvida e na explicação aqui neste link do STACKOVERFLOW Agrupar por DATA um campo TIMESTAMP

 

EXEMPLO RETIRADO DO LINK:

 

2 RESPOSTA Utilize a função DATE, da seguinte maneira:
$sql = "SELECT * FROM tbl_reclamacoes GROUP BY DATE(data_reclamacoes) ORDER BY data_reclamacoes ASC";

Ela irá trazer somente a data no momento de agrupar.

 

 

Se você não conseguir fazer mesmo com a explicação do link e com a sugestão que eu lhe passei, mande o código que faz o select e a listagem do seu PHP para que fique melhor a analise e post a estrutura da sua tabela para quem quiser ajudar poder replicar o seu caso, resolver e mostrar a solução.

 

Exemplo da estrutura:

image.png.c22183eb868b413669194f0b2beeec12.png

 

Fico no aguardo.

 

Att.

Felipe Coutinho

Share this post


Link to post
Share on other sites
Em 21/10/2019 at 15:34, Felipe Guedes Coutinho disse:

@heenrique

 

O Group By que te passei TEM que funcionar.

Quando se defini GROUP BY DATE(), não importa se o campo da sua tabela é um DATE (01-01-0001) ou um TIMESTAMP (0001-01-01 23.59.59) o comando DATE() transforma o TIMESTAMP em DATE para a comparação.

 

Só para que não fique com dúvida do que eu estou falando, da uma olhada na dúvida e na explicação aqui neste link do STACKOVERFLOW Agrupar por DATA um campo TIMESTAMP

 

EXEMPLO RETIRADO DO LINK:

 

2 RESPOSTA Utilize a função DATE, da seguinte maneira:

$sql = "SELECT * FROM tbl_reclamacoes GROUP BY DATE(data_reclamacoes) ORDER BY data_reclamacoes ASC";

Ela irá trazer somente a data no momento de agrupar.

 

 

Se você não conseguir fazer mesmo com a explicação do link e com a sugestão que eu lhe passei, mande o código que faz o select e a listagem do seu PHP para que fique melhor a analise e post a estrutura da sua tabela para quem quiser ajudar poder replicar o seu caso, resolver e mostrar a solução.

 

Exemplo da estrutura:

image.png.c22183eb868b413669194f0b2beeec12.png

 

Fico no aguardo.

 

Att.

Felipe Coutinho

Olá Felipe, tentei tentei mas nao consegui,

 

Esta é a estrutura da tabela:

image.png.81ca2cba03b1c0a8e0bb6a05815ea5a0.png

 

Ao executar o comando 

SELECT * FROM sis_suporte GROUP BY DATE(abertura) ORDER BY visita ASC

ele me retorna:

image.thumb.png.529a122ff05813b2717d3b3c983338cd.png

 

ao executar:

SELECT * FROM sis_suporte

Retorna:

image.thumb.png.5fef79c33501273005eb7dead67f0b4f.png

Meu codigo php:

<?php
        include_once "verifica_login.php";
		verificaLogin();
		include("conn.php");
		date_default_timezone_set('America/Sao_Paulo');
		$id = $_SESSION['user_id'];
		$nome = $_SESSION['user_nome'];
		$acesso = $_SESSION['user_acesso'];
		$func = $_SESSION['user_func'];
		$hoje = date("Y-m-d");		
		//SELECTS		

		$result_os = "SELECT * FROM sis_suporte GROUP BY DATE(abertura) ORDER BY visita ASC ";
		//$result_os = "SELECT DATE_FORMAT(date,'%Y-%m-%d') as abertura FROM sis_suporte WHERE tecnico = '1' AND abertura < '2019-10-30' Group By nome;";
		$resultado_os = mysqli_query($mysqli, $result_os);		

?>

    <html>
    <!DOCTYPE html>
    <html>

    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>            <?php echo $hoje ?>
        </title>
        <!-- Tell the browser to be responsive to screen width -->
        <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
        <!-- Bootstrap 3.3.7 -->
        <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css">
        <!-- Font Awesome -->
        <link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.min.css">
        <!-- Ionicons -->
        <link rel="stylesheet" href="bower_components/Ionicons/css/ionicons.min.css">
        <!-- jvectormap -->
        <link rel="stylesheet" href="bower_components/jvectormap/jquery-jvectormap.css">
        <!-- Theme style -->
        <link rel="stylesheet" href="dist/css/AdminLTE.min.css">
        <!-- AdminLTE Skins. Choose a skin from the css/skins
       folder instead of downloading all of them to reduce the load. -->
        <link rel="stylesheet" href="dist/css/skins/_all-skins.min.css">

        <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
        <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
        <!--[if lt IE 9]>
  <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
  <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
  <![endif]-->

        <!-- Google Font -->
        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic">
    </head>

    <body class="hold-transition skin-blue sidebar-mini">
        <div class="wrapper">
            <!-- MENU -->
            <?php include "includes/menu.php"; ?>
                <!-- Content Wrapper. Contains page content -->
                <div class="content-wrapper">
                    <!-- Main content -->
                    <section class="content">
                        <!-- Info boxes -->
                        <div class="row">
                            <div class="col-md-12">
                                <div class="box box-info">
                                    <div class="box-header with-border">
                                        <h3 class="box-title"><b>TODAS O.S</b></h3>
                                    </div>
                                    <!-- /.box-header -->
                                    <div id="atualizar" class="box-body">
									
                                        <?php while($dados = mysqli_fetch_assoc($resultado_os)){
										
										
										if ($dados['status'] == 'aberto'){ ?>
                                            <div class='row'>
                                                <div class='col-md-12'>
                                                    <a href='os.php?os=<?php echo $dados['chamado']; ?>'>
                                                        <div style='box-shadow: 3px 3px 0px 1px rgba(0,0,0,0.1);' class='info-box'> <span class='info-box-icon1 bg-agua'><i style='padding-top: 35%;' class='ion ion-ios-gear-outline'></i></span>
                                                            <div class='info-box-content'> <span class='info-box-text'><b>ABERTA</b></span> <span class='info-box-text'><b>O.S:</b><?php echo $dados['chamado']; ?></span> <span class='info-box-text'><b>NOME:</b><?php echo utf8_encode($dados['nome']); ?></span> <span class='info-box-text'><b>TIPO:</b><?php echo $dados['assunto']; ?></span> <span class='info-box-text'><b>DATA/HORA:</b><?php echo (new DateTime($dados['visita']))->format('d/m/Y - H:i'); ?></span> </a>
                                                    </div>
                                                    </div>
                                                    <?php 	}	if ($dados['status'] == 'fechado'){ ?>
                                                        <div class='row'>
                                                            <div class='col-md-12'>
                                                                <a href='os.php?os=<?php echo $dados['chamado']; ?>'>
                                                                    <div style='box-shadow: 3px 3px 0px 1px rgba(0,0,0,0.1);' class='info-box'> <span class='info-box-icon1 bg-red'><i style='padding-top: 35%;' class="fa fa-check" aria-hidden="true"></i></span>
                                                                        <div class='info-box-content'> <span class='info-box-text'><b>FINALIZADA</b></span> <span class='info-box-text'><b>O.S:</b><?php echo $dados['chamado']; ?></span> <span class='info-box-text'><b>NOME:</b><?php echo utf8_encode($dados['nome']); ?></span> <span class='info-box-text'><b>TIPO:</b><?php echo $dados['assunto']; ?></span> <span class='info-box-text'><b>DATA/HORA:</b><?php echo (new DateTime($dados['fechamento']))->format('d/m/Y - H:i'); ?></span> </a>
                                                                </div>
                                                                </div>
                                                                <?php }	}  ?>
                                                            </div>
                                                        </div>
                                                </div>
                    </section>
                    </div>
                    <!-- /.content-wrapper -->

                    <!-- RODAPE -->
                    <?php include "includes/rodape.php"; ?>
                        </div>
                        <!-- ./wrapper -->

                        <!-- jQuery 3 -->
                        <script src="bower_components/jquery/dist/jquery.min.js"></script>
                        <!-- Bootstrap 3.3.7 -->
                        <script src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
                        <!-- FastClick -->
                        <script src="bower_components/fastclick/lib/fastclick.js"></script>
                        <!-- AdminLTE App -->
                        <script src="dist/js/adminlte.min.js"></script>
                        <!-- Sparkline -->
                        <script src="bower_components/jquery-sparkline/dist/jquery.sparkline.min.js"></script>
                        <!-- jvectormap  -->
                        <script src="plugins/jvectormap/jquery-jvectormap-1.2.2.min.js"></script>
                        <script src="plugins/jvectormap/jquery-jvectormap-world-mill-en.js"></script>
                        <!-- SlimScroll -->
                        <script src="bower_components/jquery-slimscroll/jquery.slimscroll.min.js"></script>
                        <!-- ChartJS -->
                        <script src="bower_components/chart.js/Chart.js"></script>
                        <!-- AdminLTE dashboard demo (This is only for demo purposes) -->
                        <script src="dist/js/pages/dashboard2.js"></script>
                        <!-- AdminLTE for demo purposes -->
                        <script src="dist/js/demo.js"></script>
    </body>

    </html>

minha ideia é exibir algo assim:

image.png.69f6ea93198e49488ef8601ed8f3206d.png

 

agradeço pela ajuda!

Share this post


Link to post
Share on other sites

@heenrique

 

Acho que temos um erro na sua lógica ou eu entendi errado.

 

Só para exclarecer, você quer LISTAR TODAS AS SUAS ORDENS DE SERVIÇOS ou LISTAR APENAS 1 ORDEM DE SERVIÇO DE CADA DATA?

 

Porque assim, se você usar o GROUP BY você estará exibindo apenas 1 chamado daquele dia, porque ele vai "AGRUPAR" por data, ou seja, vou usar o exemplo dessa imagem que você diz querer o resultado.

 

Temos 3 ordens de serviços aberta no dia 12/10/2019, 2 abertas no dia 11/10/2019 e mais 2 abertas no dia 10/10/2019... se eu executar o GROUP BY o meu resultado final será 1 chamado do dia 12/10/2019, 1 chamado do dia 11/10/2019 e 1 chamado do dia 10/10/2019... É isso que você quer?

 

CASO ESTE NÃO SEJA O CENÁRIO QUE VOCÊ DESEJA, o que eu recomendo você a fazer é o seguinte.

 

1 - Primeiro, realizar um select ORDENANDO pela data de abertura.

 

2 - No WHILE para se listar você precisa comparar a data de ABERTURA com uma data_anterior.

 

3 - Explicando então como funciona, se a data do registro for diferente da data_anterior, você da um print na data, então teremos a primeira impressão na tela

 

12/10/2019

Após imprimir a data, jogamos o resultado da data do registro para a variável da data anterior para a próxima comparação do registro a ser lido.

 

AI IMPRIMOS O PRIMEIRO REGISTRO 

 

12/10/2019

os: 10

 

Voltamos para o WHILE, lemos o próximo registro.

 

COMPARAMOS a data do registro atual com a data_anterior.

 

SE FOR IGUAL, não imprimimos a data, apenas o registro ficando assim:

 

12/10/2019

os: 10

ps: 9

 

SE a data for DIFERENTE impimimos a data e o registro

 

12/10/2019

os: 10

11/10/2019

os: 9

 

Então ficamos neste laço até ler todas as ordens de serviço.

 

ISSO ira gerar algo parecido com isso:

 

12/10/2019
os: 10
os:  9
os:  8
11/10/2019
os:  7
os:  6
10/10/2019
os:  5
os:  4

 

Me diga o que realmente você quer E SE O ERRO que você está recebendo é de COMANDO COM PROBLEMA ou o ERRO DE LÓGICA como eu imagino que seja.

 

Fico no aguardo.

 

Att.

Felipe Coutinho

Share this post


Link to post
Share on other sites

@heenrique

 

Só para você ver, eu montei o seu ambiente de teste aqui e coloquei a lógica que eu falei, segue abaixo, veja se não é o que você espera.

 

Repare que eu removi o seu comando select de cima da página e deixei mais próximo do WHILE para melhor visualização e entendimento.

  <div id="atualizar" class="box-body">
      <?php
      //SELECTS
      $data_anterior = "";
      $result_os  = "SELECT * FROM sis_suporte ORDER BY abertura DESC";
      $resultado_os  = mysqli_query($mysqli, $result_os );
      while($dados = mysqli_fetch_assoc($resultado_os )) {
          if ($dados['abertura'] != $data_anterior) {
              echo (new DateTime($dados['abertura']))->format('d/m/Y');
          }
          $data_anterior = $dados['abertura'];
          ?>
          <div class='row'>
              <div class='col-md-12'>
                  <a href='os.php?os=<?php echo $dados['chamado']; ?>'>Open OS</a>
            <?php if ($dados['status'] == 'Aberto'){ ?>
                  <div style='box-shadow: 3px 3px 0px 1px rgba(0,0,0,0.1);' class='info-box'> <span class='info-box-icon1 bg-agua'><i style='padding-top: 35%;' class='ion ion-ios-gear-outline'></i></span>
                      <div class='info-box-content'> <span class='info-box-text'><b>ABERTA</b></span> <span class='info-box-text'><b>O.S:</b><?php echo utf8_encode($dados['chamado']); ?></span> <span class='info-box-text'><b>NOME:</b><?php echo utf8_encode($dados['nome']); ?></span> <span class='info-box-text'><br /><b>TIPO:</b><?php echo $dados['assunto']; ?></span> <span class='info-box-text'><b>DATA/HORA:</b><?php echo (new DateTime($dados['visita']))->format('d/m/Y - H:i'); ?></span> </a>
                      </div>
                  </div>
            <?php }
                  if ($dados['status'] == 'Fechado') { ?>
                  <div style='box-shadow: 3px 3px 0px 1px rgba(0,0,0,0.1);' class='info-box'> <span class='info-box-icon1 bg-red'><i style='padding-top: 35%;' class="fa fa-check" aria-hidden="true"></i></span>
                      <div class='info-box-content'> <span class='info-box-text'><b>FINALIZADA</b></span> <span class='info-box-text'><b>O.S:</b><?php echo utf8_encode($dados['chamado']); ?></span> <span class='info-box-text'><b>NOME:</b><?php echo utf8_encode($dados['nome']); ?></span> <span class='info-box-text'><br /><b>TIPO:</b><?php echo $dados['assunto']; ?></span> <span class='info-box-text'><b>DATA/HORA:</b><?php echo (new DateTime($dados['fechamento']))->format('d/m/Y - H:i'); ?></span> </a>
                      </div>
                  </div>
            <?php } ?>
              </div>
          </div>
<?php } ?>
  </div>

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Share this post


Link to post
Share on other sites
1 hora atrás, Felipe Guedes Coutinho disse:

@heenrique

 

Só para você ver, eu montei o seu ambiente de teste aqui e coloquei a lógica que eu falei, segue abaixo, veja se não é o que você espera.

 

Repare que eu removi o seu comando select de cima da página e deixei mais próximo do WHILE para melhor visualização e entendimento.


  <div id="atualizar" class="box-body">
      <?php
      //SELECTS
      $data_anterior = "";
      $result_os  = "SELECT * FROM sis_suporte ORDER BY abertura DESC";
      $resultado_os  = mysqli_query($mysqli, $result_os );
      while($dados = mysqli_fetch_assoc($resultado_os )) {
          if ($dados['abertura'] != $data_anterior) {
              echo (new DateTime($dados['abertura']))->format('d/m/Y');
          }
          $data_anterior = $dados['abertura'];
          ?>
          <div class='row'>
              <div class='col-md-12'>
                  <a href='os.php?os=<?php echo $dados['chamado']; ?>'>Open OS</a>
            <?php if ($dados['status'] == 'Aberto'){ ?>
                  <div style='box-shadow: 3px 3px 0px 1px rgba(0,0,0,0.1);' class='info-box'> <span class='info-box-icon1 bg-agua'><i style='padding-top: 35%;' class='ion ion-ios-gear-outline'></i></span>
                      <div class='info-box-content'> <span class='info-box-text'><b>ABERTA</b></span> <span class='info-box-text'><b>O.S:</b><?php echo utf8_encode($dados['chamado']); ?></span> <span class='info-box-text'><b>NOME:</b><?php echo utf8_encode($dados['nome']); ?></span> <span class='info-box-text'><br /><b>TIPO:</b><?php echo $dados['assunto']; ?></span> <span class='info-box-text'><b>DATA/HORA:</b><?php echo (new DateTime($dados['visita']))->format('d/m/Y - H:i'); ?></span> </a>
                      </div>
                  </div>
            <?php }
                  if ($dados['status'] == 'Fechado') { ?>
                  <div style='box-shadow: 3px 3px 0px 1px rgba(0,0,0,0.1);' class='info-box'> <span class='info-box-icon1 bg-red'><i style='padding-top: 35%;' class="fa fa-check" aria-hidden="true"></i></span>
                      <div class='info-box-content'> <span class='info-box-text'><b>FINALIZADA</b></span> <span class='info-box-text'><b>O.S:</b><?php echo utf8_encode($dados['chamado']); ?></span> <span class='info-box-text'><b>NOME:</b><?php echo utf8_encode($dados['nome']); ?></span> <span class='info-box-text'><br /><b>TIPO:</b><?php echo $dados['assunto']; ?></span> <span class='info-box-text'><b>DATA/HORA:</b><?php echo (new DateTime($dados['fechamento']))->format('d/m/Y - H:i'); ?></span> </a>
                      </div>
                  </div>
            <?php } ?>
              </div>
          </div>
<?php } ?>
  </div>

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Felipe, MUITO OBRIGADO! pela paciência e por me ajuda, só preciso de uma ultima ajudinha!

 

acho que deve ter me expressado muito mal, usando seu código que você me mandou fica assim:

  <div id="atualizar" class="box-body">
      <?php
      //SELECTS
      $data_anterior = "";
      $result_os  = "SELECT * FROM sis_suporte WHERE tecnico = '$func' AND abertura < '$hoje' ORDER BY visita ASC";
      $resultado_os  = mysqli_query($mysqli, $result_os );
      while($dados = mysqli_fetch_assoc($resultado_os )) {
          if ($dados['abertura'] != $data_anterior) {
              echo (new DateTime($dados['abertura']))->format('d/m/Y');
          }
          $data_anterior = $dados['abertura'];
          ?>
          <div class='row'>
              <div class='col-md-12'>
                  <a href='os.php?os=<?php echo $dados['chamado']; ?>'></a>
                  <div style='box-shadow: 3px 3px 0px 1px rgba(0,0,0,0.1);' class='info-box'> <span class='info-box-icon1 bg-red'><i style='padding-top: 35%;' class="fa fa-check" aria-hidden="true"></i></span>
                      <div class='info-box-content'> <span class='info-box-text'><b>FINALIZADA</b></span> <span class='info-box-text'><b>O.S:</b><?php echo utf8_encode($dados['chamado']); ?></span> <span class='info-box-text'><b>NOME:</b><?php echo utf8_encode($dados['nome']); ?></span> <span class='info-box-text'><b>TIPO:</b><?php echo $dados['assunto']; ?></span> <span class='info-box-text'><b>DATA/HORA:</b><?php echo (new DateTime($dados['visita']))->format('d/m/Y - H:i'); ?></span> </a>
                      </div>
                  </div>				  
              </div>
          </div>
<?php } ?>
  </div>

image.thumb.png.fc4237090721c238daadf65d6306ecbf.png

 

mas fui tentar agrupar por outro campo ela ficou assim:

estou tentando comparar usando dados da coluna visita:

  <div id="atualizar" class="box-body">
      <?php
      //SELECTS
      $data_anterior = "";
      $result_os  = "SELECT * FROM sis_suporte WHERE tecnico = '$func' AND abertura < '$hoje' ORDER BY visita ASC";
      $resultado_os  = mysqli_query($mysqli, $result_os );
      while($dados = mysqli_fetch_assoc($resultado_os )) {
          if ($dados['visita'] != $data_anterior) {
              echo (new DateTime($dados['visita']))->format('d/m/Y');
          }
          $data_anterior = $dados['visita'];
          ?>
          <div class='row'>
              <div class='col-md-12'>
                  <a href='os.php?os=<?php echo $dados['chamado']; ?>'></a>
                  <div style='box-shadow: 3px 3px 0px 1px rgba(0,0,0,0.1);' class='info-box'> <span class='info-box-icon1 bg-red'><i style='padding-top: 35%;' class="fa fa-check" aria-hidden="true"></i></span>
                      <div class='info-box-content'> <span class='info-box-text'><b>FINALIZADA</b></span> <span class='info-box-text'><b>O.S:</b><?php echo utf8_encode($dados['chamado']); ?></span> <span class='info-box-text'><b>NOME:</b><?php echo utf8_encode($dados['nome']); ?></span> <span class='info-box-text'><b>TIPO:</b><?php echo $dados['assunto']; ?></span> <span class='info-box-text'><b>DATA/HORA:</b><?php echo (new DateTime($dados['visita']))->format('d/m/Y - H:i'); ?></span> </a>
                      </div>
                  </div>				  
              </div>
          </div>
<?php } ?>
  </div>

é mostra assim

image.thumb.png.a62b75d7cc39be3cbb0975e5ccb5ec27.png

Share this post


Link to post
Share on other sites

@heenrique

 

Me desculpa, mas eu não consegui entender o que está acontecendo com o que você QUER realmente.

 

Não sei se você sabe o conceito do GROUP BY, caso você saiba ótimo, mas caso não saiba vou te explicar, o comando GROUP BY JUNTA tudo o que for REPETIDO, logo se eu tenho uma coluna de números 1, 2 e 3, ele ira exibir apenas 1 numero de cada um desses números, mesmo que tenha 10 números 1, 20 números 2 e 30 números 3, é isso que o comando GROUP BY faz, junta tudo o que é repedito e mostra apenas 1 registro.

 

Bom dito isso, me diga, por que você quer agrupar por DATA? Qual é o resultado que você espera.

 

Lembrando que esse resultado foi o que você me disse que queria.

Citar

image.thumb.png.fc4237090721c238daadf65d6306ecbf.png

 

aqui, lembrando apenas que para que fique exatamente igual você precisa realizar um ORDER BY pela data de abertura DESC (que é do mais recente para o mais antigo ou seja de 12/10 para 11/10 / 10/10 e diminuindo).

Citar

image.png.69f6ea93198e49488ef8601ed8f3206d.png

 

 

Bom, agora me diga, o que você está querendo fazer que não está conseguindo.

 

Fico no aguardo.

 

Att.

Felipe Coutinho

Share this post


Link to post
Share on other sites
 

Olá Felipe, é exatamente o que você me mandou, funciona perfeito, só que além que fazer o while na coluna abertura, queria que fazer o while na coluna visita, porém quando altero para a coluna visita ele não agrupa como no código que você me mandou. Ele cria vários grupos com a mesma data como na imagem

Share this post


Link to post
Share on other sites

@heenrique

 

Para te falar a verdade nao entendi o que você está tentando fazer.

Você quer agrupar por DATA ABERTURA e também por DATA VISITA?

Coloque uma imagem de como você quer que fique para que a analise e a solução fique mais fácil.

 

Fico no aguardo.

 

Att.

Felipe Coutinho

Share this post


Link to post
Share on other sites
Em 04/11/2019 at 09:09, Felipe Guedes Coutinho disse:

@heenrique

 

Para te falar a verdade nao entendi o que você está tentando fazer.

Você quer agrupar por DATA ABERTURA e também por DATA VISITA?

Coloque uma imagem de como você quer que fique para que a analise e a solução fique mais fácil.

 

Fico no aguardo.

 

Att.

Felipe Coutinho

 

@Felipe Guedes Coutinho

 

Olá, era burrice minha, eu nao estava formatando a data, por este motivo ele não agrupava, este é meu codigo final!

 

 <div id="atualizar" class="box-body">
      <?php
      //SELECTS
      $data_anterior = "";
      $result_os  = "SELECT * FROM sis_suporte WHERE tecnico = '$func' AND abertura < '$hoje' ORDER BY visita DESC";
      $resultado_os  = mysqli_query($mysqli, $result_os );
      while($dados = mysqli_fetch_assoc($resultado_os )) {
          if ((new DateTime($dados['visita']))->format('d/m/Y') != $data_anterior) {
		  
              echo "
			  <div style='border-radius: 3px; margin: 0 0 3px 0; padding: 2px 10px 0px 0px; text-align: right;' class='callout callout-info'>
					" .(new DateTime($dados['visita']))->format('d/m/Y'). "
              </div>			  
			  ";
          }
          $data_anterior = (new DateTime($dados['visita']))->format('d/m/Y');
          ?>
										<?php if ($dados['status'] == 'fechado'){ ?>
                                            <div class='row'>
                                                <div class='col-md-12'>
                                                    <a href='os.php?os=<?php echo $dados['chamado']; ?>'>
                                                        <div style='box-shadow: 3px 3px 0px 1px rgba(0,0,0,0.1);' class='info-box'> <span class='info-box-icon1 bg-aqua'><i style='padding-top: 35%;' class='ion ion-ios-gear-outline'></i></span>
                                                            <div class='info-box-content'> <span class='info-box-text'>
																<b>ABERTA</b></span> <span class='info-box-text'>
																<b>O.S:</b><?php echo $dados['chamado']; ?></span> <span class='info-box-text'>
																<b>NOME:</b><?php echo utf8_encode($dados['nome']); ?></span> <span class='info-box-text'>
																<b>TIPO:</b><?php echo $dados['assunto']; ?></span> <span class='info-box-text'>
																<b>DATA/HORA:</b><?php echo (new DateTime($dados['visita']))->format('d/m/Y - H:i'); ?></span> </a>
                                                    </div>
                                                    </div>
                                                    <?php 	}	if ($dados['status'] == 'aberto'){ ?>
                                                        <div class='row'>
                                                            <div class='col-md-12'>
                                                                <a href='os.php?os=<?php echo $dados['chamado']; ?>'>
                                                                    <div style='box-shadow: 3px 3px 0px 1px rgba(0,0,0,0.1);' class='info-box'> <span class='info-box-icon1 bg-green'><i style='padding-top: 35%;' class="fa fa-check" aria-hidden="true"></i></span>
                                                                        <div class='info-box-content'> <span class='info-box-text'>
																			<b>FINALIZADA</b></span> <span class='info-box-text'>
																			<b>O.S:</b><?php echo $dados['chamado']; ?></span> <span class='info-box-text'>
																			<b>NOME:</b><?php echo utf8_encode($dados['nome']); ?></span> <span class='info-box-text'>
																			<b>TIPO:</b><?php echo $dados['assunto']; ?></span> <span class='info-box-text'>
																			<b>DATA/HORA:</b><?php echo (new DateTime($dados['visita']))->format('d/m/Y - H:i'); ?></span> </a>
                                                                </div>
                                                                </div>
                                                                <?php } ?>
                                                            </div>
                                                        </div>
<?php } ?>

 

Assim você me ajudou muito! obrigado mesmo,

 

estou com um outro problema que é o seguinte:

 

tenho um while onde a div se atualiza automaticamente a cada 10 segundos, e gostaria que quando tivesse uma alteração na quantidade de linhas tocasse um bip, o bip tudo bem, sei como executar ele, por ex: as 9:00 tinha 3 o.s para o técnico, ai apareceu um encaixe, e foi direcionada para esse técnico, então são 4 o.s, quando a div atualizar automaticamente e ver que o resultado de agora é maior que o anterior emitir um bip mas a parte para comparar com a quantidade anterior não consegui, 

 

sera o mesmo método desse, ele compara a data anterior, nesse caso ele compararia as linhas anteriores ?

 

esse é o trecho do código:

				  <?php 
		$hoje = date("Y-m-d");
		$mi = '08:00:00';
		$mf = '13:00:00';
		$ti = '13:00:01';
		$tf = '18:00:00';
			      $result_os_tard = "SELECT * FROM sis_suporte WHERE tecnico = '$func' AND visita BETWEEN '$hoje $ti' AND '$hoje $tf' LIMIT 5";
		          $resultado_os_tard = mysqli_query($mysqli, $result_os_tard);				  
				  while($dados = mysqli_fetch_assoc($resultado_os_tard)){ 
?>	
                  <tr>
					<td><a href="os.php?os=<?php echo $dados['chamado']; ?>">
					<?php 
						if ($dados['status'] == 'aberto'){
						echo '<span class="label label-danger">Aberto</button>';
						}
						
						
						if ($dados['status'] == 'fechado'){
						echo '<button class="label label-success">Fechado</button>';
						}
					?>
					</a></td>				  
                    <td><a href="os.php?os=<?php echo $dados['chamado']; ?>"><?php echo mb_strimwidth(utf8_encode($dados['nome']), 0, 15, "..."); ?></a></td>
                    <td><a href="os.php?os=<?php echo $dados['chamado']; ?>"><?php echo strtoupper(mb_strimwidth(utf8_encode($dados['assunto']), 0, 4)); ?></a></td>
                    <td><a href="os.php?os=<?php echo $dados['chamado']; ?>"><?php echo mb_strimwidth(utf8_encode($dados['chamado']), 0, 15, "..."); ?></a></td>	
                  </tr>
				  <?php } ?>

 

Share this post


Link to post
Share on other sites

@heenrique

 

Realmente eu não sei como você vai fazer, mas a idéia que tive é você fazer um COUNT do total de O.S. do técnico em algum lugar no seu sistema "antes" dessa tela onde apresenta esse BIP que se auto-atualiza, então com o resultado do COUNT você joga em uma VARIÁVEL DE SESSÃO

 

SESSION_START();

$_SESSION['total_os_tecnico'] = $resultado_count['count(*)'];

 

Não sei onde você pode colocar isso, talvez no login, ou na index, mas precisa ser fora da página onde você tem essa div que se auto-atualiza como comentei.

 

Então o segredo é você fazer um OUTRO COUNT dentro dessa div para pegar a quantidade de O.S. do técnico e com esse resultado você comparar com o resultado da variável de sessão com o resultado, se for != (diferente) ou sei lá só > você pega o COUNT que fez dentro da DIV e joga dentro da variável de sessão e toca o seu BIP e problema resolvido.

 

Essa foi a solução que eu encontrei sem conhecer o seu sistema.

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By JoãoRicardo.Lima
      Olá pessoal.
      Pessoal como eu faço o roteamento dos meus arquivos no meu projeto, pois sempre que inicio o meu servidor embutido do php em um diretório especifico, ele obviamente não "enxerga" as outras pastas, por exemplo. Eu tenho minha pasta com as views, mas qualquer link que eu coloco em uma view para ser redirecionado para ou view, o servidor não consegue achar o caminho, pois ele não conhece as outras pasta. Como eu faria este roteamento?.
    • By Pitag346
      Olá pessoal, tudo bem ? Estou com um probleminha, espero que me ajudem...
       
      Seguinte, tenho uma tabela onde faço a exibição de alguns dados, tais como:
       
      NOME, 
      QUANTIDADE, 
      VALOR
       
      Eu quero buscar o valor, em outra tabela e exibir dentro desse while. Porem, ele está exibindo em todos os resultados.
      Seguinte, 
      Cada usuário que efetuar uma vendo do produto tal, é salvo na tabela VENDIDOS, onde o mesmo armazena o "ticket_promote_id". 
      Ao fazer o while das vendas, quero pegar o valor do produto em outra tabela com o "ticket_promote_id" que mencionei acima, porem ao fazer isso, ele me retorna o valor de um produto em todos os resultados do while. 
       
      Alguém sabe por que ? Segue meu código abaixo:
      $valueTotali = 0; while($dados = mysqli_fetch_assoc($sql_promoters)){ $user = $dados['id']; $sqlIngress = $conn->query("SELECT * FROM vendidos WHERE ticket_promote_id = '$user' "); $cont = $sqlIngress->num_rows; if($cont > 0){ $dadosIngress = mysqli_fetch_assoc($sqlIngress); $loteId = $dadosIngress['ticket_lote_id']; $sqlLote = $conn->query("SELECT * FROM ingress WHERE lote_id = '$loteId' "); while($data = mysqli_fetch_assoc($sqlLote)){ $valueTotali += $data['lote_preco']; } }  
      Segue a imagem da tabela com o mesmo valor sendo replicado em todos os resultados:

       
       
    • By Marcos PP
      Alguém poderia me dar um exemplo de como pegar este retorno em Json para gravar em um banco de dados, a questão do banco e conexões não e necessário, apenas como pegar os retornos para trabalhar com eles


      Esta e a API
      http://click.omie.com/developer-0o843564k
    • By dutopfave
      Boa Tarde, estou criando um sistema de newsletter para um cliente, e ele quer ter um controle de quando o cliente viu o e-mail e também quando clico no botão da promoção, só que o link de clica eu consigo faze mais não sei como posso fazer quando o cliente visualiza somente o e-mail e contabiliza no banco de dados.
    • By avelar.avelar
      Estou tentando listar desta maneira:

       Escola: joao paulo IV
                    Turno: Manha
                                 Curso: 1 serie
                                 Curso: 2 serie
                                 Curso: 3 serie
                    Turno: Tarde
                                 Curso: 1 serie
                                 Curso: 2 serie
                                 Curso: 3 serie
       
       Escola: Margareth Lima
                    Turno: Manha
                                 Curso: 1 serie
                                 Curso: 2 serie
                                 Curso: 3 serie
                    Turno: Tarde
                                 Curso: 1 serie
                                 Curso: 2 serie
                                 Curso: 3 serie
      $query = Curso::query()->select('id', 'serie_curso', 'slug', 'escola_curso', 'turno_curso')->where('ativo', 1)->get();         foreach($query as $cursos){              $escola = $cursos->escola_curso;              $turno = $cursos->turno_curso;              if($cursos->escola_curso == $escola ) {                  echo $cursos->escola_curso;                  if($cursos->turno_curso == $turno) {                      echo $cursos->turno_curso;                      echo $cursos->nome_curso;                  }else{                      echo $cursos->turno_curso;                  }              }else{                  echo $cursos->escola_curso;              }          } Alguem poderias me ajudar? grato turma
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.