[Resolvido] Capítulo 11 - Estudo de caso: Controle e Finanças
Estudando e fazendo o código infra, não está sendo possível a Soma Total de Receita Fixa + Receita Variável e a Soma Total de Despesa Fixa + Despesas Variável. Saibam que já tentei me comunicar com o Juliano Niederauer, mas não tenho resposta, então venho buscar aqui no forúm a ajuda necessária.
O SCRIPT (as modificações feitas não alteram a lógica do programa):
<?php
$meses = array ("Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez");
// obtém os valores digitados
$mes = $_POST["mes"];
$ano = $_POST["ano"];
$mes2 = $_POST["mes2"];
$ano2 = $_POST["ano2"];
// colocar datas no formato AAAA-MM-DD para consulta
$data = "$ano-$mes-01";
$data2 = "$ano2-$mes2-01";
$array_datas = $RF = $RV = $DF = $DV = array();
// acessa o banco de dados e obtém os registros do perído
include "config.php";
$comandoSQL = "SELECT referencia,tipo,data,valor FROM rec_desp ";
$comandoSQL .= "WHERE data>='$data' and data<='$data2' order by data,referencia";
$res = mysql_query($comandoSQL);
$linhas = @MYSQL_NUM_ROWS($res);
if($linhas==0)
{
echo "<div align='center'><b>Não há receitas e despesas no período escolhido!</b></div>";
exit;
}
else // coloca os dados em arrays
{
for($i=0; $i<$linhas; $i++)
{
$referencia = MYSQL_RESULT($res,$i,"referencia");
$tipo = MYSQL_RESULT($res,$i,"tipo");
$data = MYSQL_RESULT($res,$i,"data");
$valor = MYSQL_RESULT($res,$i,"valor");
list($ano, $mes, $dia) = split("-", $data);
$numero_mes = $mes-1;
$data = $meses[$numero_mes] . "-" . $ano;
if (!in_array($data, $array_datas))
$array_datas[] = $data;
if($tipo=="RF") // receita fixa
{
if (!in_array($referencia, $RF))
$RF[]=$referencia;
$receitas_fixas[$referencia][$data]= $valor;
if(isset($total_receitas[$data]))
$total_receitas[$data] += $valor;
else
$total_receitas[$data] = $valor;
}
elseif($tipo=="RV") // receita variável
{
if (!in_array($referencia, $RV))
$RV[]=$referencia;
$receitas_variaveis[$referencia][$data]= $valor;
if(isset($total_receitas[$data]))
$total_receitas[$data] += $valor;
else
$total_receitas[$data] = $valor;
}
elseif($tipo=="DF") // despesa fixa
{
if (!in_array($referencia, $DF))
$DF[]=$referencia;
$despesas_fixas[$referencia][$data]= $valor;
if(isset($total_despesas[$data]))
$total_despesas[$data] += $valor;
else
$total_despesas[$data] = $valor;
}
elseif($tipo=="DV") // despesa variável
{
if (!in_array($referencia, $DV))
$DV[]=$referencia;
$despesas_variaveis[$referencia][$data]= $valor;
if(isset($total_despesas[$data]))
$total_despesas[$data] += $valor;
else
$total_despesas[$data] = $valor;
}
}
}
mysql_close();
$numero_colunas = sizeof($array_datas);
$colunas_html = $numero_colunas+1;
?>
<html>
<head>
<title>Controle de gastos mensais</title>
</head>
<body>
<h2 align="center">Controle de gastos mensais</h2>
<div align="center">
<center>
<table border="1" cellspacing="0">
<tr>
<td width="142"></td>
<?php
// ----- exibe as datas -----
foreach($array_datas as $data)
echo "<td align=\"center\" width=\"100\"><b><font color=\"#000080\">$data</font></b></td>";
?>
</tr>
<tr>
<td colspan="<?php echo $colunas_html; ?>" bgcolor="#F5F5F5"><b>RECEITAS FIXAS</b></td>
</tr>
<?php
// ----- exibe as receitas fixas -----
for($i=0; $i<sizeof($RF); $i++)
{
$referencia = $RF[$i];
echo "<tr><td width=\"142\">$referencia</td>";
for($j=0; $j<$numero_colunas; $j++)
{
$data = $array_datas[$j];
if(isset($receitas_fixas[$referencia][$data]))
{
$valor = $receitas_fixas[$referencia][$data];
echo "<td align=\"center\" width=\"100\">$valor</td>";
}
else
echo "<td align=\"center\" width=\"100\"> </td>";
}
echo "</tr>";
}
?>
<tr>
<td colspan="<?php echo $colunas_html; ?>" bgcolor="#F5F5F5"><b>RECEITAS VARIÁVEIS</b></td>
</tr>
<?php
// ----- exibe as receitas variáveis -----
for($i=0; $i<sizeof($RV); $i++)
{
$referencia = $RV[$i];
echo "<tr><td width=\"142\">$referencia</td>";
for($j=0; $j<$numero_colunas; $j++)
{
$data = $array_datas[$j];
if(isset($receitas_variaveis[$referencia][$data]))
{
$valor = $receitas_variaveis[$referencia][$data];
echo "<td align=\"center\" width=\"100\">$valor</td>";
}
else
echo "<td align=\"center\" width=\"100\"> </td>";
}
echo "</tr>";
}
?>
<tr>
<td width="142" bgcolor="#D7FFFF"><b>Total Receitas:</b></td>
<?php
// ----- exibe o total de receitas -----
foreach($array_datas as $data)
{
if(isset($total_receitas[$data]))
$total = $total_receitas[$data];
else
$total = 0;
$total=number_format($total,2,',','.');
echo "<td align=\"center\" bgcolor=\"#D7FFFF\" width=\"100\"><b>$total</b></td>";
}
?>
</tr>
<tr>
<td colspan="<?php echo $colunas_html; ?>" bgcolor="#F5F5F5"><b>DESPESAS FIXAS</b></td>
</tr>
<?php
// ----- exibe as despesas fixas -----
for($i=0; $i<sizeof($DF); $i++)
{
$referencia = $DF[$i];
echo "<tr><td width=\"142\">$referencia</td>";
for($j=0; $j<$numero_colunas; $j++)
{
$data = $array_datas[$j];
if(isset($despesas_fixas[$referencia][$data]))
{
$valor = $despesas_fixas[$referencia][$data];
echo "<td align=\"center\" width=\"100\">$valor</td>";
}
else
echo "<td align=\"center\" width=\"100\"> </td>";
}
echo "</tr>";
}
?>
<tr>
<td colspan="<?php echo $colunas_html; ?>" bgcolor="#F5F5F5"><b>DESPESAS VARIÁVEIS</b></td>
</tr>
<?php
// ----- exibe as despesas variáveis -----
for($i=0; $i<sizeof($DV); $i++)
{
$referencia = $DV[$i];
echo "<tr><td width=\"142\">$referencia</td>";
for($j=0; $j<$numero_colunas; $j++)
{
$data = $array_datas[$j];
if(isset($despesas_variaveis[$referencia][$data]))
{
$valor = $despesas_variaveis[$referencia][$data];
echo "<td align=\"center\" width=\"100\">$valor</td>";
}
else
echo "<td align=\"center\" width=\"100\"> </td>";
}
echo "</tr>";
}
?>
<tr>
<td width="142" bgcolor="#FFE1E1"><b>Total Despesas:</b></td>
<?php
// ----- exibe o total de despesas -----
foreach($array_datas as $data)
{
if(isset($total_despesas[$data]))
$total = $total_despesas[$data];
else
$total = 0;
$total=number_format($total,2,',','.');
echo "<td align=\"center\" bgcolor=\"#FFE1E1\" width=\"100\"><b>$total</b></td>";
}
?>
</tr>
<tr>
<td width="142" bgcolor="#CCFFCC"><b>SALDO</b></td>
<?php
// --- exibe o saldo (AZUL positivo, VERMELHO negativo) ---
foreach($array_datas as $data)
{
$saldo=0;
if(isset($total_receitas[$data]))
$saldo += $total_receitas[$data];
if(isset($total_despesas[$data]))
$saldo -= $total_despesas[$data];
if($saldo<0)
$cor = "#FF0000"; // vermelho
else
$cor = "#0000FF"; // azul
$saldo=number_format($saldo,2,',','.');
echo "<td align=\"center\" bgcolor=\"#CCFFCC\" width=\"100\"><font color=\"$cor\"><b>$saldo</b></font></td>";
}
?>
</tr>
</table>
</center>
</div>
<p align="center"><a href="conteudo.php?pg=periodo_rec_desp.php">Voltar</a></p>
</body>
</html>
Agradeço desdejá a atenção dispensada,
Rogarfil
Discussão (4)
Carregando comentários...