Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Adson aquino

[Resolvido] Relátorio

Recommended Posts

Bom Dia!

 

Estou tentando fazer uma alteração em meu relátorio mais não consigo, vou explicar.

 

O relatório é de um sistema de ponto, quando eu puxo o relatório aparece da seguinte maneira.

 

Adson

Data Horas Trabalhadas

Sexta-Feira, 05/03/2010

Entrada 08:27:26 ::1

Saída para almoço 08:27:32 ::1

Retorno do almoço 08:27:37 ::1

Saída 08:27:43 ::1

 

Total de Horas

 

 

 

Adson

Data Horas Trabalhadas

Sábado, 06/03/2010

Entrada 08:27:23 ::1

Saída para almoço 08:27:28 ::1

Retorno do almoço 08:30:06 ::1

Saída 08:30:11 ::1

 

Total de Horas

 

 

 

Teste

Data Horas Trabalhadas

Sexta-Feira, 05/03/2010

Entrada 08:31:59 ::1

Saída para almoço 08:32:03 ::1

 

Total de Horas

 

 

E eu gostaria que ficasse aqui assim.

 

 

Adson

Date Horas Trabalhadas

 

Terça, 1/12/2009 8.92

Entrada 7:40 192.168.60.145

Saida para almoco 11:00 192.168.60.145

Retorno do almoco 11:33 192.168.60.145

Saida 17:09 192.168.60.145

 

Quarta, 2/12/2009 9.04

Entrada 7:43 192.168.60.129

Saida para almoco 11:02 192.168.60.145

Retorno do almoco 11:35 192.168.60.145

Saida 17:18 192.168.60.145

 

Quinta, 3/12/2009 8.79

Entrada 7:43 192.168.60.129

Saida para almoco 11:00 192.168.60.145

Retorno do almoco 11:30 192.168.60.145

Saida 17:01 192.168.60.145

 

 

 

 

Só aparecia o nome do usuário novamente se o usuário fosse outro, segue meu código abaixo.

 

<table width=100% align=center class=misc_items border=0 cellpadding=3 cellspacing=0>
  
<tr>
  <td width=100% colspan=2 style="font-size:11px;color:#000000;border-style:solid;border-color:#888888;border-width:0px 0px 1px 0px;"><b><?php echo $users; ?></b></td>
</tr>

<tr>
  <td width=75% nowrap align=left style='color:#27408b;'><b><u>Data</u></b></td>
  <td width=25% nowrap align=left style='color:#27408b;'><b><u>Horas Trabalhadas</u></b></td></tr>
  <tr bgcolor="#FBFBFB" align="left"><td style="color:#000000;border-style:solid;border-color:#888888;border-width:1px 0px 0px 0px;" nowrap><?php echo $dia ?>, <?php echo date('d/m/Y', strtotime($data)) ?></td>
  <td nowrap style='color:#000000;padding-left:31px;border-style:solid;border-color:#888888;border-width:1px 0px 0px 0px;'><?php echo $hora_dia ?></td>
</tr>
  
<tr>
  <td width=100% colspan=2>
  <table width=100% align=center class=misc_items border=0 cellpadding=0 cellspacing=0>
  <tr bgcolor="#EFEFEF" align="left">

      <td align=left width=13% nowrap style="color:#009900;">Entrada</td>
      <td nowrap align=right width=10% style='padding-right:25px;'>      <?php echo $entrada ?></td>
      <td nowrap align=left width=15% style='padding-right:25px;color:#009900;'><?php echo $ip ?></td>
      
      
      <?php if ($saida_almoco != ''){ ?>
      <td width=77%></td></tr>
      <tr bgcolor="#FBFBFB" align="left">
      <td align=left width=13% nowrap style="color:#FF9900;">Saída para almoço</td>
      <td nowrap align=right width=10% style='padding-right:25px;'>      <?php echo $saida_almoco ?></td>
      <td nowrap align=left width=15% style='padding-right:25px;color:#FF9900;'><?php echo $ip ?></td>
      <?php } ?>
      
      
      <?php if ($retorno_almoco != ''){ ?>
      <td width=77%></td></tr>
      <tr bgcolor="#EFEFEF" align="left">
      <td align=left width=13% nowrap style="color:#0000FF;">Retorno do almoço</td>
      <td nowrap align=right width=10% style='padding-right:25px;'>      <?php echo $retorno_almoco ?></td>
      <td nowrap align=left width=15% style='padding-right:25px;color:#0000FF;'><?php echo $ip ?></td>
      <?php } ?>
      
      
      <?php if ($saida != ''){ ?>
      <td width=77%></td></tr>
      <tr bgcolor="#FBFBFB" align="left">
      <td align=left width=13% nowrap style="color:#FF0000;">Saída</td>
      <td nowrap align=right width=10% style='padding-right:25px;'>      <?php echo $saida ?></td>
      <td nowrap align=left width=15% style='padding-right:25px;color:#FF0000;'><?php echo $ip ?></td>
      <?php } ?>
      
      
      <td width=77%></td></tr>
	  </table></td></tr>
      <tr align="left"><td nowrap style='font-size:11px;color:#000000;border-style:solid;border-color:#888888;border-width:1px 0px 0px 0px;'><b>Total de Horas</b></td>
      <td nowrap style='font-size:11px;color:#000000;border-style:solid;border-color:#888888;border-width:1px 0px 0px 0px;padding-left:30px;'><b><?php echo $hora_total ?></b></td></tr>
      <tr><td height=40 colspan=2 style='border-style:solid;border-color:#888888;border-width:1px 0px 0px 0px;'> </td></tr>
      </table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agrupe sua query pelo nome do usuário: "group by usuario" pois você deve ter uma tabela para os usuários.

 

At+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu agrupar os usuários ele vai agrupar os dados tb, então vai aparecer os horários de um unico dia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo usa um assim:

 

while($x = mysql_fetch_array($result)){

$usuario = ""

if($usuario != $x[usuario]){

...imprime usuario .. e primeiro dia da semana ...

$usuario = $x[usuario];

}else{

imprime segundo dia da semana, terceiro dia, quarto dia etc ...

}

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fabio tentei aqui mais não consegui, rodei ficou do mesmo jeito, pode implementar no código que postei pra mim testar aqui, obg.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara eu to com um problema em um relatorio de pontos tambem :)

 

É o seguinte, eu tenho um index de funcionários que me mostra todo mundo que já bateu o ponto, e ao clicar no nome deles eu vejo o horário, só que eu não acho muito funcional pelo seguinte motivo o relatório me mostra neste esquema:

 

Nome

Amadeu Souza de brito Filho

Dia Hora Tipo Observação

01/03/2010 08:00:00 Entrada

01/03/2010 12:00:00 Saída Almoço

01/03/2010 14:00:00 Retorno

01/03/2010 18:00:00 Saída

 

 

Ele faz o que eu quero que é mostra o horario de cada funcinario a hora que entra sai etc só que hoje a empresa ja possui 19 funcionarios imagina eu clicando um por um para ver o horario :\

Eu queria fazer algo assim

 

Nome "hora entrada" "hora saída" "hora retorno" "hora saída"

Funcinoario "xxx" "xxx" "xxx" "xxx"

 

ou no lugar dos horarios coloco uma img que eu atribui a presença e a falta. o problema é como fazer essa query já que a tabela ponto esta desta maneira:id_ponto(int), funcionario(int), tipo(int), datahora(date), dponto(varchar) este ultimo eu coloquei para poder funcionar com um calendário de eventos que não vem ao caso.

 

o campo funcionario e ligado a tabela cad_func através do cad_func.id_func = pontos.funcionario, o campo tipo e ligado a tabela tipos através do tipos.tipo = pontos.tipo este tipo significa entrada saída retorno saída.

 

É nesse campo tipo que o problema acontece como fazer para aparecer na mesma linha os 4 tipos de ponto se eu usar o group by ele vai juntar tudo e so aparecer o primeiro valor gerado para aquele dia.

 

alguem tem um luz?

 

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui no meu sistema Valder tenho 98 usuários cadastrados e o meu relatório é gerado sem problema, o que quero fazer é só que apareça o nome de usuário uma vez aí abaixo segunda, terça, quarta e os horários de cada dia.após terminar os horários do primeiro user que aparece o segundo user.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui no meu sistema Valder tenho 98 usuários cadastrados e o meu relatório é gerado sem problema, o que quero fazer é só que apareça o nome de usuário uma vez aí abaixo segunda, terça, quarta e os horários de cada dia.após terminar os horários do primeiro user que aparece o segundo user.

 

cara eu tenho monte de relatório aqui que posso fazer, relatório de ponto por mês, por dia, relatório gerado em pdf e um calendário que me mostra os dias que os funcionários já trabalharam, não achei muito interessante fazer um relatório que puxa todos e mostra o resultado e sim apenas para cada usuário, mais pensando bem seria legal fazer um para passar somente um relatório geral para o RH.

 

Deixa eu ver o que acontece aqui.

 

este é o meu calendário de faltas.

 

calendário de faltas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse relatório que estou fazendo ele mostra user por user ou por setor ou tudo de uma vez, o unico problema que tenho é que repeti o nome em cima do dia da semana.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

   $nome_atual = '';
   $query1 = 'SELECT * FROM tabela ORDER BY nome';
   $resultado1 = mysql_query($query1, $conexao);
   while ($item1 = mysql_fetch_array($resultado1))
      {
      if ($nome_atual<>$item1['nome'])
         {
         echo $item1['nome'].'<br>';
         $nome_atual=$item1['nome'];
         }
      #Aqui você coloca o restante do seu código para imprimir os dias e os horários.
      }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Shrek-BH assim deu certo, só ficou um problema, o nome total de horas que é para aparecer no final aparece abaixo de cada dia, e se eu colocar a condição nessa parte não aparece em nenhum, o que pode ser. Veja como ficou o código...

 

<table width=100% align=center class=misc_items border=0 cellpadding=3 cellspacing=0>

<?php  if ($nome_atual != $dados['funcionario']) { ?>
<tr>
  <td width=100% colspan=2 style="font-size:11px;color:#000000;border-style:solid;border-color:#888888;border-width:0px 0px 1px 0px;"><b><?php echo $users; ?></b></td>
</tr>

<tr>
  <td width=75% nowrap align=left style='color:#27408b;'><b><u>Data</u></b></td>
  <td width=25% nowrap align=left style='color:#27408b;'><b><u>Horas Trabalhadas</u></b></td></tr>
  <?php $nome_atual = $dados['funcionario']; } ?>
  <tr bgcolor="#FBFBFB" align="left"><td style="color:#000000;border-style:solid;border-color:#888888;border-width:1px 0px 0px 0px;" nowrap><?php echo $dia ?>, <?php echo date('d/m/Y', strtotime($data)) ?></td>
  <td nowrap style='color:#000000;padding-left:31px;border-style:solid;border-color:#888888;border-width:1px 0px 0px 0px;'><?php echo $hora_dia ?></td>
</tr>

<tr>
  <td width=100% colspan=2>
  	  <table width=100% align=center class=misc_items border=0 cellpadding=0 cellspacing=0>
  	  <tr bgcolor="#EFEFEF" align="left">
	  
	  
      <td align=left width=13% nowrap style="color:#009900;">Entrada</td>
      <td nowrap align=right width=10% style='padding-right:25px;'>      <?php echo $entrada ?></td>
      <td nowrap align=left width=15% style='padding-right:25px;color:#009900;'><?php echo $ip ?></td>
      
      
      <?php if ($saida_almoco != ''){ ?>
      <td width=77%></td></tr>
      <tr bgcolor="#FBFBFB" align="left">
      <td align=left width=13% nowrap style="color:#FF9900;">Saída para almoço</td>
      <td nowrap align=right width=10% style='padding-right:25px;'>      <?php echo $saida_almoco ?></td>
      <td nowrap align=left width=15% style='padding-right:25px;color:#FF9900;'><?php echo $ip ?></td>
      <?php } ?>
      
      
      <?php if ($retorno_almoco != ''){ ?>
      <td width=77%></td></tr>
      <tr bgcolor="#EFEFEF" align="left">
      <td align=left width=13% nowrap style="color:#0000FF;">Retorno do almoço</td>
      <td nowrap align=right width=10% style='padding-right:25px;'>      <?php echo $retorno_almoco ?></td>
      <td nowrap align=left width=15% style='padding-right:25px;color:#0000FF;'><?php echo $ip ?></td>
      <?php } ?>
      
      
      <?php if ($saida != ''){ ?>
      <td width=77%></td></tr>
      <tr bgcolor="#FBFBFB" align="left">
      <td align=left width=13% nowrap style="color:#FF0000;">Saída</td>
      <td nowrap align=right width=10% style='padding-right:25px;'>      <?php echo $saida ?></td>
      <td nowrap align=left width=15% style='padding-right:25px;color:#FF0000;'><?php echo $ip ?></td>
      <?php } ?>
      
      
      <td width=77%></td></tr>
	  </table></td></tr>
	  <?php  if ($nome_atual != $dados['funcionario']) { ?>
	  
      <tr align="left"><td nowrap style='font-size:11px;color:#000000;border-style:solid;border-color:#888888;border-width:1px 0px 0px 0px;'><b>Total de Horas</b></td>
      <td nowrap style='font-size:11px;color:#000000;border-style:solid;border-color:#888888;border-width:1px 0px 0px 0px;padding-left:30px;'><b><?php echo $hora_total ?></b></td></tr>
      <tr><td height=40 colspan=2 style='border-style:solid;border-color:#888888;border-width:1px 0px 0px 0px;'> </td></tr>
	  <?php $nome_atual = $dados['funcionario']; } ?>
      </table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok! Então você fará assim:

   $nome_atual = '';
   $query1 = 'SELECT * FROM tabela ORDER BY nome';
   $resultado1 = mysql_query($query1, $conexao);
   while ($item1 = mysql_fetch_array($resultado1))
      {
      if ($nome_atual<>$item1['nome'])
         {
         if ($nome_atual<>'')
            echo 'Total de Horas do '.$nome_atual.': '.$total_horas.'<br><br>';
         echo $item1['nome'].'<br>';
         $nome_atual=$item1['nome'];
         }
      #Aqui você coloca o restante do seu código para imprimir os dias e os horários.
      }
   echo 'Total de Horas do '.$nome_atual.': '.$total_horas.'<br>';
Não esqueça desta última linha também. Senão o último nome ficará sem o total de horas.

 

Veja se agora ficará correto!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colquei como você postou, mais continua errado só aparece o total de horas no primeiro dia de cada user.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uai, tem alguma coisa de errada, pois o total era para aparecer somente no final de cada user e não no início.

Repare bem que a variável que eu mando imprimir é a $nome_atual e não o $item1['nome'] (echo 'Total de Horas do '.$nome_atual.': '.$total_horas.'<br><br>';) e tem que ficar naquela ordem que postei aí.

 

Dá uma olhada se você colocou que nem eu postei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já sei onde está o seu erro. Você terá que colocar assim:

<table width=100% align=center class=misc_items border=0 cellpadding=3 cellspacing=0>

<?php
   if ($nome_atual != $dados['funcionario'])
      {
      if ($nome_atual!='')
         {
?>
<tr align="left"><td nowrap style='font-size:11px;color:#000000;border-style:solid;border-color:#888888;border-width:1px 0px 0px 0px;'><b>Total de Horas</b></td>      <td nowrap style='font-size:11px;color:#000000;border-style:solid;border-color:#888888;border-width:1px 0px 0px 0px;padding-left:30px;'><b><?php echo $hora_total ?></b></td></tr>      <tr><td height=40 colspan=2 style='border-style:solid;border-color:#888888;border-width:1px 0px 0px 0px;'> </td></tr>
<?php
         }
?>
<tr>
  <td width=100% colspan=2 style="font-size:11px;color:#000000;border-style:solid;border-color:#888888;border-width:0px 0px 1px 0px;"><b><?php echo $users; ?></b></td>
</tr>

<tr>
  <td width=75% nowrap align=left style='color:#27408b;'><b><u>Data</u></b></td>
  <td width=25% nowrap align=left style='color:#27408b;'><b><u>Horas Trabalhadas</u></b></td></tr>
  <?php $nome_atual = $dados['funcionario']; } ?>

E pode retirar essas linhas abaixo:

<?php  if ($nome_atual != $dados['funcionario']) { ?>                <tr align="left"><td nowrap style='font-size:11px;color:#000000;border-style:solid;border-color:#888888;border-width:1px 0px 0px 0px;'><b>Total de Horas</b></td>      <td nowrap style='font-size:11px;color:#000000;border-style:solid;border-color:#888888;border-width:1px 0px 0px 0px;padding-left:30px;'><b><?php echo $hora_total ?></b></td></tr>      <tr><td height=40 colspan=2 style='border-style:solid;border-color:#888888;border-width:1px 0px 0px 0px;'> </td></tr>          <?php $nome_atual = $dados['funcionario']; } ?>

Veja se agora funcionará!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ótimo Shrek-BH deu certo, agora sim ficou como eu queria...

muito obg pela força, abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valder, abra um novo tópico. Assim, no futuro, outras pessoas poderão consultar sobre um problema parecido com o seu e também para não misturarmos as coisas. Esse do Adson já foi resolvido.

 

Bem, é o que eu acho melhor.

 

Criando o novo tópico é só me enviá-lo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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