Ir para conteúdo

POWERED BY:

Arquivado

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

rogarfil

[Resolvido] Capítulo 11 - Estudo de caso: Controle e Finanças

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem uma coisa em programação chamada debug, pelo que andei lendo não há um capitulo do livro que se dedique a uma coisa tão importante, pelo menos, foi o que vi no sumário.

 

Se você esta aprendendo e ainda não sabe debugar, sugiro, neste caso, que faça o "capitulo 12 - debugando minha aplicação, pq nem sempre as coisas saem como esperado".

 

Se não encontrar o capítulo 12, veja os links a seguir... :)

http://imasters.com.br/artigo/9446/php/xdebug_instalacao_configuracao_e_utilizacao_com_wamp_server/

http://cobaia.net/2009/01/debugando-php-com-xdebug/

http://www.criarweb.com/artigos/instalar-zend-debugger-para-php.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quero agradecer as orientações recebidas neste forúm, pois foram de muita ajuda. Segui os passos dados pelo MODERADOR e pude obter no capítulo 12 as respostas para minha dúvida. Pude descobrir que no XAMPP o php.ini tem uma linha com referência ao xdebug.

 

;zend_extension = "C:xamppphpextphp_xdebug.dll"

 

Bastando retirar o ; no início da linha (DEU PAU NO APACHE).

 

Mais não posso deixar de agradecer o Sr. Juliano Niederauer, que com sua paciência e disponibilizando de um tempo que ele não tem, pode me orientar na solução do meu problema. Mostrando apenas o erro que EU estava cometendo.

 

No mais, espero poder contar com todos novamente em uma nova DÚVIDA.

 

Abraços,

 

Rogarfil

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.