Cabuloz0 0 Denunciar post Postado Agosto 23, 2011 Galera, desculpem se já existe algum tópico falando sobre isso, o problema é que eu não sei nem pesquisar sobre esse problema! Vou tentar explicar! Estou fazendo um mini sistema de controle de vendas e estou precisando colocar o relatório do mês inteiro e quanto cada funcionário vendeu por dia, labutei essa manhã inteira mas ainda não cheguei na onde queria fiz assim $sql = "SELECT * FROM caixa WHERE MONTH(data)='$mes' AND operacao='Venda' ORDER BY funcionario;"; $qry = mysql_query($sql); while($ft = mysql_fetch_array($qry)){ $cont++; if(($cont%2) == 0){ $cor = "#CCC"; } else { $cor = "#EEE"; } echo' <tr> <td class="bordaEsq" style="background:'.$cor.';">'.limitar(selectFuncionario($ft['funcionario']),40).'</td> <td class="bordaEsq" style="background:'.$cor.';">'.$ft['operacao'].'</td> <td class="bordaEsq" style="background:'.$cor.';">'.$ft['total'].'</td> <td class="bordaEsq" style="border-right:1px solid #999; background:'.$cor.';">'.$ft['data'].'</td> </tr>'; $func[$ft['funcionario']] = $func[$ft['funcionario']] + (float)$ft['total']; } mas ficou repetindo os dias, então tentei algo assim while($ft = mysql_fetch_array($qry)){ $cont++; $total[$ft['data']] = $total[$ft['data']] + (float)$ft['total']; if(($cont%2) == 0){ $cor = "#CCC"; } else { $cor = "#EEE"; } $tr1[] = ' <tr> <td class="bordaEsq" style="background:'.$cor.';">'.limitar(selectFuncionario($ft['funcionario']),40).'</td> <td class="bordaEsq" style="background:'.$cor.';">'.$ft['operacao'].'</td> <td class="bordaEsq" style="background:'.$cor.';">'; $d[] = $ft['data']; $tr2[] = '</td> <td class="bordaEsq" style="border-right:1px solid #999; background:'.$cor.';">'.$ft['data'].'</td> </tr>'; $func[$ft['funcionario']] = $func[$ft['funcionario']] + (float)$ft['total']; } for($i=0;$i<count($tr1);$i++){ echo $tr1[$i].$total[$d[$i]].$tr2[$i]; } ?> Mesmo assim não deu certo! DESCULPE AINDA SOU LEIGO EM PHP! Se puderem me ajudar a corrigir meu código e fazer ele funcionar! Se alguém não tiver entendido fala que eu tento explicar de novo! Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Agosto 23, 2011 sua dúvida não é php e sim sintaxe SQL no banco mysql SELECT `funcionario`, --seleciona o campo date_format(`DATA`, '%d/%m/%Y') as data_formatada, --seleciona data formatada sum( `valor` ) --soma o valor FROM `caixa` WHERE MONTH(`DATA`)='{$mes}' --pega somente um mês AND `operacao` = 'Venda' --pega somente Venda GROUP BY `funcionario`,--agrupa por funcionários `data_formatada` --agrupa por data ORDER BY `funcionario` --ordena por funcionário veja no manual mysql DATE_FORMAT SUM Compartilhar este post Link para o post Compartilhar em outros sites
Cabuloz0 0 Denunciar post Postado Agosto 23, 2011 Cara olhei o seu código e concordei com você porem não consegui fazer funcionar vou te dar os detalhes da minha aplicação Tabela: http://img193.imageshack.us/img193/1111/tabelasv.jpg fiz um arquivo de teste, vamos basear nele que por ele consigo arrumar lá! <?php $mes = date('m'); $data = date("Y-m-d"); $sql = "SELECT `funcionario`, DATE_FORMAT(`DATA`, '%Y-%m-%d') AS 'data', sum( `valor` ) FROM `caixa` WHERE MONTH(`DATA`)='{$mes} AND `operacao` = 'Venda' GROUP BY `funcionario`, `data` ORDER BY `funcionario`;"; $qry = mysql_query($sql); while($ft = mysql_fetch_array($qry)){ echo $ft['funcionario'].' - '.$ft['valor'].' - '.$ft['data'].'<br />'; } ?> eu tentei dessa forma, mas deu erro de parametro - Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Caixa\module\teste.php on line 10 Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Agosto 23, 2011 Você tem problema de aspas nessa sua SQL. Tente assim: $sql = "SELECT `funcionario`, DATE_FORMAT(`DATA`, '%Y-%m-%d') AS 'data', sum( `valor` ) FROM `caixa` WHERE MONTH(`DATA`)='{$mes}' AND `operacao` = 'Venda' GROUP BY `funcionario`, `data` ORDER BY `funcionario`;"; Sempre que tiver problemas com fetches, ou query não sendo executada, faça um debug no código, use um: or die ( mysql_error( ) ); Para ter informações mais específicas sobre o erro. Compartilhar este post Link para o post Compartilhar em outros sites
Cabuloz0 0 Denunciar post Postado Agosto 23, 2011 <?php $mes = date('m'); $data = date("Y-m-d"); $sql = "SELECT `funcionario`, DATE_FORMAT(`DATA`, '%Y-%m-%d') AS 'data', sum( `total` ) FROM `caixa` WHERE MONTH(`DATA`)='{$mes}' AND `operacao` = 'Venda' GROUP BY `funcionario`, `data` ORDER BY `funcionario`;"; $qry = mysql_query($sql) or die( mysql_error( ) ); while($ft = mysql_fetch_array($qry)){ echo $ft['funcionario'].' - '.$ft['total'].' - '.$ft['data'].'<br />'; } ?> Resultado 3 - - 2011-08-224 - - 2011-08-19 4 - - 2011-08-20 5 - - 2011-08-19 Como pego a soma ?? totalDaSoma?? 4 - totalDaSoma - 2011-08-19 Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Agosto 23, 2011 Faz assim no SQL. $sql = "SELECT `funcionario`, DATE_FORMAT(`DATA`, '%Y-%m-%d') AS 'data', sum( `total` ) as `soma` FROM `caixa` WHERE MONTH(`DATA`)='{$mes}' AND `operacao` = 'Venda' GROUP BY `funcionario`, `data` ORDER BY `funcionario`;"; E pega como índice 'soma', printf( 'Funcionário: %s - Total: %d - Data: %s - Soma: %s' , $ft[ 'funcionario' ] , $ft[ 'total' ] , $ft[ 'data' ] , $ft[ 'soma' ] ); Compartilhar este post Link para o post Compartilhar em outros sites
Cabuloz0 0 Denunciar post Postado Agosto 24, 2011 Beleza, agora deu certo! Código <?php $mes = date('m'); $data = date("Y-m-d"); $sql = "SELECT `funcionario`, DATE_FORMAT(`DATA`, '%Y-%m-%d') AS 'data', sum( `total` ) as `soma` FROM `caixa` WHERE MONTH(`DATA`)='{$mes}' AND `operacao` = 'Venda' GROUP BY `funcionario`, `data` ORDER BY `funcionario`;"; $qry = mysql_query($sql) or die( mysql_error( ) ); while($ft = mysql_fetch_array($qry)){ //echo $ft['funcionario'].' - '.$ft['total'].' - '.$ft['data'].'<br />'; printf( 'Funcionário: %s - Data: %s - Soma: %s <br />' , $ft[ 'funcionario' ] , $ft[ 'data' ] , $ft[ 'soma' ] ); //echo 'Funcionario ' . $ft[ 'funcionario' ] . ' total ' . $ft[ 'total' ] . ' data ' . $ft[ 'data' ] . ' soma ' . $ft[ 'soma' ] . '<br />'; } ?> Resultado Funcionário: 3 - Data: 2011-08-22 - Soma: 100.00Funcionário: 4 - Data: 2011-08-19 - Soma: 57.00 Funcionário: 4 - Data: 2011-08-20 - Soma: 245.00 Funcionário: 5 - Data: 2011-08-19 - Soma: 22.50 Agora vou implementa-lo no meio do código, mas agora acredito que está tudo Ok! Victor e Andrey, muito obrigado pela ajuda! ^^ Compartilhar este post Link para o post Compartilhar em outros sites