Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde estou com esse problema. Não sou iniciante no PHP, mas também não sou um usuário avançado então se tiver muita besteira no código desculpem.
Eu preciso exibir um relatório onde ele consulta 2 tabelas (Vendas e Despesas_Siscof) e exibir os resultados da seguinte forma:
MÊS ENTRADA SAIDA DIFERENÇA
05/2010 R$10 R$5 R$5
Ele exibe o mês atual da consulta e os 11 mês anteriores e 11 meses posteriores, porém nas tabelas os resultados estão armazenados por dia então eu tenho que somar todos eles, fechar o mês e exibir o resultado. Meu código está assim:
<?
//Recebe Consultas Mes Atual--------
//Dados de Entrada: Mês Atual
$m_atual=date('m/Y');
$sql2="SELECT sum(caixa.cai_valor)FROM venda inner join item on item.ven_id = venda.ven_id inner join caixa on caixa.ite_id = item.ite_id
where $sede venda.ven_sta='2' and caixa.cai_ref='$m_atual'";
$exec=mysql_query($sql2) or die(atual);$sai_atual=date('Y-m-01');
$s_atual=date('Y-m-31');
$sql3="SELECT sum(des_vTotal)FROM despesas_siscof where $se des_data between '$sai_atual' and '$s_atual'";
$query=mysql_query($sql3) or die(atual);
//Recebe Consultas Demais Meses------
for($z=1;$z<12;$z++){
//Preenche vetor com meses Anteriores
$anterior[$z]=date("m/Y",mktime(0,0,0,$mes-$z,1,date("Y")));
$a_saida[$z]=date("Y-m-01",mktime(0,0,0,$mes-$z,1,date("Y")));
$a_sai[$z]=date("Y-m-31",mktime(0,0,0,$mes-$z,1,date("Y")));$sql[$z]['entrada']="SELECT sum(caixa.cai_valor)FROM venda inner join item on item.ven_id = venda.ven_id inner join caixa on caixa.ite_id = item.ite_id
where $sede venda.ven_sta='2' and caixa.cai_ref='$anterior[$z]'";
$exe[$z]['entrada']=mysql_query($sql[$z]['entrada']) or die(anterior);$sql[$z]['saida']="SELECT sum(des_vTotal)FROM despesas_siscof where $se des_data between '$a_saida[$z]' and '$a_sai[$z]'";
$exe[$z]['saida']=mysql_query($sql[$z]['saida']) or die(anterior);
//Preenche vetor com meses Posteriores
$posterior[$z]=date("m/Y",mktime(0,0,0,$mes+$z,1,date("Y")));
$p_saida[$z]=date("Y-m-01",mktime(0,0,0,$mes+$z,1,date("Y")));
$p_sai[$z]=date("Y-m-31",mktime(0,0,0,$mes+$z,1,date("Y")));$consultar[$z]['entrada']="SELECT sum(caixa.cai_valor)FROM venda inner join item on item.ven_id = venda.ven_id inner join caixa on caixa.ite_id = item.ite_id
where $sede venda.ven_sta='2' and caixa.cai_ref='$posterior[$z]'";
$executar[$z]['entrada']=mysql_query($consultar[$z]['entrada']) or die(posterior);$consultar[$z]['saida']="SELECT sum(des_vTotal)FROM despesas_siscof where $se des_data between '$p_saida[$z]' and '$p_sai[$z]'";
$executar[$z]['saida']=mysql_query($consultar[$z]['saida']) or die(anterior);
}
//Imprime Resultados-------
for($y=11;$y>0;$y--){
echo "<tr bgcolor='$a_cor[$y]'>";
echo "<td>$anterior[$y]</td>";
$linha=mysql_fetch_row($exe[$y]['entrada']);$val= $linha[0];
$linha2=mysql_fetch_row($exe[$y]['saida']);$val2= $linha2[0];
echo "<td>R$ ".number_format($val, 2, ',', '.')."</td>";
echo "<td>R$ ".number_format($val2, 2, ',', '.')."</td>";
$v_total=$val-$val2;
echo "<td>R$ ".number_format($v_total, 2, ',', '.')."</td>";
echo "</tr>";
}
echo "<tr bgcolor='#FF9D9D'>";
echo "<td><strong>$m_atual</strong></td>";
$linha=mysql_fetch_row($exec);$val= $linha[0];
$linha2=mysql_fetch_row($query);$val= $linha[0];
echo "<td><strong>R$".number_format($val, 2, ',', '.')."</strong></td>";
echo "<td><strong>R$ ".number_format($val2, 2, ',', '.')."</strong></td>";
$v_total=$val-$val2;
echo "<td><strong>R$ ".number_format($v_total, 2, ',', '.')."</strong></td>";
echo "</tr>";
for($m=1;$m<12;$m++){
echo "<tr bgcolor='$a_cor[$m]'>";
echo "<td>$posterior[$m]</td>";
$linha=mysql_fetch_row($executar[$m]['entrada']);$val= $linha[0];
$linha2=mysql_fetch_row($executar[$m]['saida']);$val2= $linha2[0];
echo "<td>R$ ".number_format($val, 2, ',', '.')."</td>";
echo "<td>R$ ".number_format($val2, 2, ',', '.')."</td>";
$v_total=$val-$val2;
echo "<td>R$ ".number_format($v_total, 2, ',', '.')."</td>";
echo "</tr>";
Só que esse código demora 9 s para ser executado, então gostaria de saber onde estou errando e como posso melhorar esse código. Não sei se consegui ser claro, mas se não fui só falarem que eu explico melhor.
Carregando comentários...