Ir para conteúdo

POWERED BY:

Arquivado

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

silasuni

Variável

Recommended Posts

Boa tarde a todos!!

 

Estou com o seguinte probleminha...

 

estou fazendo um WHILE para mostrar os dados do meu BD no form....

 <? while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
 	
		$soma  = $line['R$'];
		$soma  = $line['R$'] + $soma;
		
		
		
  ?>

Somei o campo R$ e joguei dentro de uma variável para ir somando todos os valores, conforme acima.

Até aí legal.

 

O meu problema é o seguinte.

Como que posso usar a variável SOMA fora do laço do While? Pois quero colocar o valor da variável em uma outra parte do form para apresentar o resultado da soma.

 

Agradeço a ajuda de TODOS!!!

 

Valeu!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi a dificuldade..

<?php
while ($line = mysql_fetch_assoc($result)) {
   $soma += $line['R$'];
}

echo $soma;
?>
Se você já criou a variável, apartir desse ponto, ela está disponível para ser manipulada, neste script.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ela só está disponível dentro do laço WHILE.

Eu quero pegar essa variável SOMA e mostrar ela fora do Laço....em um outro lugar do form...

 

Assim...

<td width="76" rowspan="2"><div align="center"><STRONG><font size="1" face="Tahoma" color="#000000"">Valor R$</font></STRONG><STRONG><font size="2" face="Tahoma" color="#000000"><strong>
           <?=$soma; ?>
         </strong></font></STRONG></div></td>
       </tr>
       <tr>
         <td width="76"><div align="center"><strong><font color="#000000" size="1" face="Tahoma"> Início </font></strong></div></td>
         <td width="82"><div align="center"><strong><font color="#000000" size="1" face="Tahoma"> Fim </font></strong></div></td>
       </tr>
     </table>
     <strong><font color="#000000" size="1" face="Tahoma">
     <? while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {

	$soma= $line['R$'];
	$soma = $line['R$'] + $soma;

 ?>

Ela so me mostra o conteúdo da variável dentro do laço While..

 

valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É como eu disse, ela vai estar disponível depois que você criar ela.

<?php
while ($line = mysql_fetch_assoc($result)) {
   $soma += $line['R$'];
}
?>
<td width="76" rowspan="2"><div align="center"><STRONG><font size="1" face="Tahoma" color="#000000"">Valor R$</font></STRONG><STRONG><font size="2" face="Tahoma" color="#000000"><strong>
<?php echo $soma; ?>
</strong></font></STRONG></div></td>
</tr>
<tr>
<td width="76"><div align="center"><strong><font color="#000000" size="1" face="Tahoma"> Início </font></strong></div></td>
<td width="82"><div align="center"><strong><font color="#000000" size="1" face="Tahoma"> Fim </font></strong></div></td>
</tr>
</table>
<strong><font color="#000000" size="1" face="Tahoma">
Entendeu ? ^_^

 

você não pode usar algo que ainda não existe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ela só está disponível dentro do laço WHILE.

Eu quero pegar essa variável SOMA e mostrar ela fora do Laço....em um outro lugar do form...

 

Assim...

 

<td width="76" rowspan="2"><div align="center"><STRONG><font size="1" face="Tahoma" color="#000000"">Valor R{:content:}lt;/font></STRONG><STRONG><font size="2" face="Tahoma" color="#000000"><strong>

<?=$soma; ?>

</strong></font></STRONG></div></td>

</tr>

<tr>

<td width="76"><div align="center"><strong><font color="#000000" size="1" face="Tahoma"> Início </font></strong></div></td>

<td width="82"><div align="center"><strong><font color="#000000" size="1" face="Tahoma"> Fim </font></strong></div></td>

</tr>

</table>

<strong><font color="#000000" size="1" face="Tahoma">

<? while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {

 

$soma= $line['R ];

$soma = $line['R ] + $soma;

 

?>

 

Ela so me mostra o conteúdo da variável dentro do laço While..

 

Sim, porque ela não está declarada do lado de fora, tenta modificar seu código para:

 

 <? 
  $soma = 0; //declaramos a variável $soma fora do laço
  while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
      $soma += $line['R ];
  }
  
  echo $soma; //agora conseguimos usar a variável do lado de fora
  ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz assim e nada ainda...

       <td width="76" rowspan="2"><div align="center"><STRONG><font size="1" face="Tahoma" color="#000000"">Valor R$</font></STRONG><STRONG><font size="2" face="Tahoma" color="#000000"><strong>
           <?=$soma; ?>
         </strong></font></STRONG></div></td>
       </tr>
       <tr>
         <td width="76"><div align="center"><strong><font color="#000000" size="1" face="Tahoma"> Início </font></strong></div></td>
         <td width="82"><div align="center"><strong><font color="#000000" size="1" face="Tahoma"> Fim </font></strong></div></td>
       </tr>
     </table>
     <strong><font color="#000000" size="1" face="Tahoma">

  <? 
  $soma = 0; //declaramos a variável $soma fora do laço
  while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
		$soma= $line['R$'];
	$soma = $line['R$'] + $soma;

 ?>

tava pensando em tipo, uma variável global.....

 

Pq assim nun funciona.....

 

valeu pela força de todos!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

você não pode usar algo que ainda não existe.

 

Coloque o laço ANTES de tentar dar echo na variável.

 

O que o João falou, é um 'problema de lógica', e não se aplica ao php dessa forma, php é uma linguagem 'fraca' com a maioria dos conceitos de programação básica(tipagem de variáveis, zerar oque foi inicializado..). Em outras linguagens de 'baixo nivel', e em outras mais 'parrudas', isso é verdade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou tentar te explicar o que o pessoal já falou...

 

$soma = 1 + 1;
echo $soma;//vai imprimir 2

Olha o que você está tentando fazer...

 

echo $soma;// não vai imprimir nada, porque a $soma ainda não tem valor nenhum.
$soma = 1 + 1;

O Willian colocou exatamente como deveria ser.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu consegui entender o problema e pq ela não está imprimindo....

é que não posso colocar na forma do Willian falou, pq o meu form é diagramado...tem os campos nos lugares e não posso alterar....

pois esse laço WHILE e ele vai preenchendo até satisfazer o WHERE que tenho no SELECT. Pode ter uma linha ou 50 linhas....

 

O que pensei que pudesse de uma forma (mágica se for :-) )declarar essa variável tipo GLOBAL ou algo do tipo.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu consegui entender o problema e pq ela não está imprimindo....

é que não posso colocar na forma do Willian falou, pq o meu form é diagramado...tem os campos nos lugares e não posso alterar....

pois esse laço WHILE e ele vai preenchendo até satisfazer o WHERE que tenho no SELECT. Pode ter uma linha ou 50 linhas....

 

Além da soma você está fazendo mais alguma coisa nesse laço ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou sim....estou trazendo todos os dados do BD que atendem o WHERE do SELECT....por isso é complicado mudar o Laço...

valeu!!!!

 

Certo, nesse caso você pode armazenar todas as linhas da sua tabela em uma matriz, ai quando o loop terminar você monta a tabela com os dados já prontos, ficaria mais ou menos assim:

 

  $linhas = array();
  $soma = 0;
  
  while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
      $soma += $line['R$'];
  
      $linhas[] = "<span>" . $line[ "valor" ] . "</span>";
  }

Quando o loop terminar, você terá uma matriz com todos os dados que você precisa do seu banco, ai é só jogar na tablea:

 

 <td width="76" rowspan="2"><div align="center"><STRONG><font size="1" face="Tahoma" color="#000000"">Valor R{:content:}lt;/font></STRONG><STRONG><font size="2" face="Tahoma" color="#000000"><strong>
              <?=$soma; ?>
            </strong></font></STRONG></div></td>
          </tr>
          <tr>
  <td width="76"><div align="center"><strong><font color="#000000" size="1" face="Tahoma"> Início </font></strong></div></td>
  <td width="82"><div align="center"><strong><font color="#000000" size="1" face="Tahoma"> Fim </font></strong></div></td>
          </tr>
        </table>
        <strong><font color="#000000" size="1" face="Tahoma">
 <?
  foreach ( $linhas as $linha ){
     echo $linha;
  }
?>

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.