silasuni 0 Denunciar post Postado Agosto 18, 2009 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
William Bruno 1501 Denunciar post Postado Agosto 18, 2009 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
silasuni 0 Denunciar post Postado Agosto 18, 2009 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
William Bruno 1501 Denunciar post Postado Agosto 18, 2009 É 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
João Batista Neto 448 Denunciar post Postado Agosto 18, 2009 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
silasuni 0 Denunciar post Postado Agosto 18, 2009 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
William Bruno 1501 Denunciar post Postado Agosto 18, 2009 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
Matias Rezende 50 Denunciar post Postado Agosto 18, 2009 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
silasuni 0 Denunciar post Postado Agosto 18, 2009 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
João Batista Neto 448 Denunciar post Postado Agosto 18, 2009 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
silasuni 0 Denunciar post Postado Agosto 18, 2009 estou sim....estou trazendo todos os dados do BD que atendem o WHERE do SELECT....por isso é complicado mudar o Laço... valeu!!!! Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Agosto 18, 2009 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