Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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>Se eu agrupar os usuários ele vai agrupar os dados tb, então vai aparecer os horários de um unico dia.
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
Fabio tentei aqui mais não consegui, rodei ficou do mesmo jeito, pode implementar no código que postei pra mim testar aqui, obg.
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
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.
>
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.
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.
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.
}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>Alguem pode ajudar com o meu problema :(
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!
Colquei como você postou, mais continua errado só aparece o total de horas no primeiro dia de cada user.
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.
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á!
Ótimo Shrek-BH deu certo, agora sim ficou como eu queria...
muito obg pela força, abraço.
i eu :(
adson aquino, me diz como que ta a estrutura da tua tabela de pontos
Deixa eu chegar em casa que eu posto aqui, estou de saída do trabalho.
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.
Agrupe sua query pelo nome do usuário: "group by usuario" pois você deve ter uma tabela para os usuários.
At+