Ir para conteúdo
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>

 

Compartilhar este post


Link para o post
Compartilhar em outros 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 ?

Compartilhar este post


Link para o post
Compartilhar em outros 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 ?

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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!

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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 } ?>

 

Compartilhar este post


Link para o post
Compartilhar em outros 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

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 ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
×

Informação importante

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