Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho o seguinte codigo:
$chamada = mysql_query("SELECT * FROM tb_cad_caixa ORDER BY id");
$cont= 0;
echo "
<form action =\"".$_SERVER['PHP_SELF']."\" method =\"post\" align=\"center\">
<table align=\"center\" style=\"font-size:11px; width:750px;\">
<tr style=\"background:#CCC\">
<td align=\"center\">Data</td>
<td align=\"center\">Histórico</td>
<td align=\"center\">Deb/Cred</td>
<td align=\"center\">Valor</td>
<td align=\"center\">Saldo acumulado</td>// esssa coluna nao tenho no banco quero que seja mostrada na consulta...
</tr>
";
// Exibe o resultado da nossa consulta
while($tb_caixa=mysql_fetch_array($chamada))
{ // Zebramos nossa linha da tabela onde pegamos o cont dividimos por 2
// se o resto for zero mostramos uma cor, se não for mostramos outra
if ($cont % 2 == 0)
{
$cor = "#EEEEEE";
}
else
{
$cor = "#CCCCCC";
}
echo "<tr bgcolor='".$cor."';>";
echo "<td>".date('d/m/Y', strtotime($tb_caixa['data']))."</td>";
echo "<td align=left>".$tb_caixa['historico']."</td>";
echo "<td align=center>".$tb_caixa['deb_cred']."</td>";
echo "<td align=right>".number_format($tb_caixa['valor'], 2, ',', '.')."</td>";
echo "<td align=center>". (AQUI ESTA O PROBLEMA QUERIA QUE APARECESSE O SALDO ACUMULADO) ."</td>";
echo "</tr>" ;
$cont = $cont + 1;
}
echo "
</table>
</form>
";ex.:
Bom o que eu quero que me retorne na consulta com um saldo acumulado:
Data |Historico | Deb/Cred| Valor |Saldo acum
31/01 | Credito emprestimo | C | 10,00 | 10,00
31/01 |Pgto de diversos | D | 30,00 |-20,00
31/01 |Credit de aplicaçao | C | 25,00 | 5,00
se alguem souber desde jah agradeço.
Obrigado hufersil, fiz como vc me passou mas mesmo assim está dando erro: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/rel_caixa_saldo2.php on line 58 --> esta linha é onde esta o while: while($tb_caixa=mysql_fetch_array($chamada))
acredito que esse erro é a consulta $chamada que está errado.
vou postar o codigo inteiro que estou tentando fazer :
$chamada = mysql_query("SET @saldo=0; SELECT historico, deb_cred, valor, @saldo = @saldo + IF(deb_cred='D',valor*-1,valor) as saldo
FROM tb_cad_caixa ORDER BY id");
$cont= 0;
echo "
<form action =\"".$_SERVER['PHP_SELF']."\" method =\"post\" align=\"center\">
<table align=\"center\" style=\"font-size:11px; width:750px;\">
<tr style=\"background:#CCC\">
<td align=\"left\";>Histórico</td>
<td align=\"center\";>Deb/Cred</td>
<td align=\"center\";>Valor</td>
<td align=\"center\";>Saldo</td>
</tr>" ;
// Exibe o resultado da nossa consulta
while($tb_caixa=mysql_fetch_array($chamada))
{
echo "<tr>";
echo "<td align=left>".$tb_caixa['historico']."</td>";
echo "<td align=center>".$tb_caixa['deb_cred']."</td>";
echo "<td align=right>".number_format($tb_caixa['valor'], 2, ',', '.')."</td>";
echo "<td align=left>"??????"</td>";
echo "</tr>" ;
$cont = $cont + 1;
}
echo "
</table>
</form>
";
Notem que na linha echo "<td align=left>"??????"</td>"; onde tem essa interrogação que não sei como colocar o codigo para que ele calcule o saldo a cada linha que o while passar.
Se alguem souber como fazer essa consulta e como fazer o echo desta consulta desde já agradeço...
Faça duas consultas:
// inicializando a variavel
mysql_query('SET @saldo=0');
// efetuando a consulta
$result = mysql_query("SELECT
data,
historico,
deb_cred,
valor,
@saldo := @saldo + IF(deb_cred='D',valor*-1,valor) as saldo@braços
Ok... mas agora como que uso um echo pra me mostrar o resultado dessa consulta?
Pessoal o q consegui o que queria ....
Vejam a o codigo:
<form action ="<?php echo $_SERVER['PHP_SELF'] ?>" method ="post" align="center">
<table align="center" style="font-size:11px; width:750px">
<tr style="background:#CCC">
<?php
/*
echo "<td align=\"left\";><a href =\"".$_SERVER['PHP_SELF']."?orderby=data\">Data</a></td>";
echo "<td align=\"left\";><a href =\"".$_SERVER['PHP_SELF']."?orderby=historico\">Histórico</a></td>";
echo "<td align=\"left\";><a href =\"".$_SERVER['PHP_SELF']."?orderby=deb_cred\">Credito</a></td>";
echo "<td align=\"left\";><a href =\"".$_SERVER['PHP_SELF']."?orderby=deb_cred\">Debito</a></td>";
echo "<td align=\"left\";><a href =\"\">Saldo</a></td>";*/
?>
<td align="center" style="font-size:12px; font-weight:bold;">Data</td>
<td align="center" style="font-size:12px; font-weight:bold;">Histórico</td>
<td align="center" style="font-size:12px; font-weight:bold;">Credito</td>
<td align="center" style="font-size:12px; font-weight:bold;">Debito</td>
<td align="center" style="font-size:12px; font-weight:bold;">Saldo</td>
</tr>
<?php
// Exibe o resultado da nossa consulta
while($linha1=mysql_fetch_array($chamada)) {
if ($cont % 2 == 0){
$cor = "#EEEEEE";
}
else{
$cor = "#CCCCCC";
}
?>
<tr bgcolor="<?php echo $cor; ?>">
<td><?php echo date('d/m/Y', strtotime($linha1['data']));?> </td>
<td><?php echo $linha1['historico'];?> </td>
<td>
<?php
if($linha1['deb_cred']==C){
$credito = $linha1['valor'];
echo $credito;
}elseif($linha1['deb_cred']==D){
echo "---";
$credito = 0;
}
?>
</td>
<td><?php
if($linha1['deb_cred']==D){
$debito = $linha1['valor'];
echo $debito;
}
elseif($linha1['deb_cred']==C){
echo "---";
$debito = 0;
}
?>
</td>
<td>
<?php
$saldo = $saldo + $credito-$debito;
echo $saldo;
?>
</td>
</tr>
<?php
$cont = $cont + 1;
}
?>
</table>
</form>
a saida fica assim:
Data........... Historico .... Credito .. Debito........ Saldo
12/02/12.... entrada....... 100,00..... ------ ........ 100,00
12/02/12.... tarifa ........... --------..... 5,00 .......... 95,00
12/02/12 .... outra tarifa .. ------ ..... 10,00 ........ 85,00
12/02/12 .... entrada....... 8,00 ..... ----- ........ 93,00
Lembrando que no banco não tem as colunas Debito e Credito mas apenas uma coluna com o nome de deb_cred onde está cadastrado C e D, que qer dizer credito e Debito.
Acredito que o codigo não esteja 100% como deve ser, pois fui juntando daqui e dali e fui montando então não sei se esse é o melhor caminho.... mas pelo menos está funcionando.
Vlw todos e obrigado pela colaboração.
att
Joel
>
Faça duas consultas:
// inicializando a variavel
mysql_query('SET @saldo=0');
// efetuando a consulta
$result = mysql_query("SELECT
data,
historico,
deb_cred,
valor,
@saldo := @saldo + IF(deb_cred='D',valor*-1,valor) as saldoBuenas de ue forma puedo detectar en la consulta ue el cliente cambia por otro para poner en cero @saldo y comenzar a incrementar nuevamente el mismo.Saludos
Você pode fazer isso direto na consulta:
FROM tb_cad_caixa ORDER BY id;Ps.: esta sintaxe é para MySQL.
@braços