Ir para conteúdo

POWERED BY:

Arquivado

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

Douglas Fabiano

[Resolvido] Somar campos

Recommended Posts

Olá pessoal estou tentando somar apenas um campo de uma tabela (consulta), veja se podem me ajudar:

 

O código - trecho:

$c = 2;
$cores = array("#CCCCCC","#FFFFFF");
$tabela = '<table width="100%" border="1" cellspacing="1" cellpadding="5">';
    $index = $c % 2;
    $c++;
    $cor = $cores[$index];
    $tabela .= '<tr bgcolor="'.$cor.'">';
    $tabela .= '<td width="10%">Viatura:<div align="left">'.$linha['vtr'].'</div></td>';
    $tabela .= '<td width="10%">Data Manut.:<div align="left">'.$linha['data_manutencao'].'</div></td>';
    $tabela .= '<td width="15%">Valor Serviço:<div align="left">'.$linha['vr_unitario_servico'].'</div></td>';
	$tabela .= '<td width="10%">Valor Peças:<div align="left">'.$linha['vr_total_pecas'].'</div></td>';
	$tabela .= '<td width="45%">Peças:<div align="left">'.$linha['pecas_utilizadas'].'</div></td>';
	$tabela .= '<td width="10%">Total:<div align="left">'.$linha['vr_total_manutencao'].'</div></td>';
    $tabela .= '</tr>';
$tabela .= '</table>';
echo $tabela;
	    }
echo ("Valor Total do Período:");
}

Preciso que aqui:

echo ("Valor Total do Período:");

Apareça o total da soma CAMPO TOTAL DA MANUTENÇÃO:

$tabela .= '<td width="10%">Total:<div align="left">'.$linha['vr_total_manutencao'].'</div></td>';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim! entendi mas até onde eu sei SUM() soma e já subtrai valores negativos em uma consulta e não a tabela inteira, sugiro que leia o manual.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei mas não deu certo:

 

	$tabela .= '<td width="10%">Total:<div align="left">'.$linha['vr_total_manutencao'].'</div></td>';
    $tabela .= '</tr>';
$tabela .= '</table>';
echo $tabela;
	    }
$valortotal = SUM('vr_total_manutencao');
echo ("Valor Total do Período:");
}

tentei fazer uma soma dos campos mas não deu certo não:

$valortotal = SUM('vr_total_manutencao');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei que você tinha entendido que sum era do mysql, pois postei

select sum(campo) from table
, mas como existe tanto no php quanto no mysql. vamos lá por passos.

 

Poste o código inteiro, principalmente o sql assim fica mais fácil, agora se quiser somar apenas a variveis é só usar operadores basicos como sinal de + - * / e por ae vai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja o meu código inteiro:

Andei pesquisando mas até agora nada.. se puder me ajudar agradeço.

<?php
include 'conexao_1_sysvtr.php';
// evitando Injection
$viatura = (int)$_POST['viatura'];
// transformando a data digitada DD/MM/AAAA em AAAA-MM-DD, para efetuar a consulta ao banco de dados
$dataInicio = (isset($_POST['dataInicio']))? implode('-',array_reverse(explode('/',addslashes($_POST['dataInicio'])))): '';
// transformando a data digitada DD/MM/AAAA em AAAA-MM-DD, para efetuar a consulta ao banco de dados
// além disto, verificamos se foi digitada alguma coisa. Se não foi, colocamos a data de hoje.
$dataFim = (isset($_POST['dataFim']) && !empty($_POST['dataFim'])) ? implode('-',array_reverse(explode('/',addslashes($_POST['dataFim'])))) : date('Y-m-d');

// montando a query
$sql = "SELECT * FROM tbl_principal JOIN tbl_viaturas USING (viaturaId) WHERE data_manutencao BETWEEN '$dataInicio' AND '$dataFim'";
if(!empty($viatura))
        $sql .= ' AND viaturaId = '.$viatura;
        
// mantenha esta linha somente durante o desenvolvimento
// $resultado = mysql_query($sql) or die('Erro. Consulta enviada '.$sql.'<br />Erro do MySQL '.mysql_error());
// quando finalizar, utilize esta segunda linha
// $resultado = mysql_query($sql) or die('Erro inesperado.');
// Se existirem registros, exibe-os abaixo
if (mysql_num_rows($resultado) > 0 )
{
        // aqui você faz a exibição dos dados da tabela
        while($linha = mysql_fetch_assoc($resultado))
        {
			    //echo $linha['vtr'];
                //echo "<br />".$linha['data_manutencao'];
                                //echo "<br />".$linha['vr_unitario_servico'];
                                //echo "<br />".$linha['vr_total_pecas'];
                                //echo "<br />".$linha['vr_total_manutencao'];
								//echo "<br />".$linha['pecas_utilizadas'];

      //Abaixo estou tentando fazer uma tabela dentro do php
$c = 2;
$cores = array("#CCCCCC","#FFFFFF");
$tabela = '<table width="100%" border="1" cellspacing="1" cellpadding="5">';
    $index = $c % 2;
    $c++;
    $cor = $cores[$index];
    $tabela .= '<tr bgcolor="'.$cor.'">';
    $tabela .= '<td width="10%">Viatura:<div align="left">'.$linha['vtr'].'</div></td>';
    $tabela .= '<td width="10%">Data Manut.:<div align="left">'.date('d/m/Y',strtotime($linha['data_manutencao'])).'</div></td>';
    $tabela .= '<td width="15%">Valor Serviço:<div align="left">'.$linha['vr_unitario_servico'].'</div></td>';
	$tabela .= '<td width="10%">Valor Peças:<div align="left">'.$linha['vr_total_pecas'].'</div></td>';
	$tabela .= '<td width="45%">Peças:<div align="left">'.$linha['pecas_utilizadas'].'</div></td>';
	$tabela .= '<td width="10%">Total:<div align="left">'.$linha['vr_total_manutencao'].'</div></td>';
    $tabela .= '</tr>';
$tabela .= '</table>';
echo $tabela;
}
echo ("Valor Total do Período:");
}

// senão, exibe a mensagem
else
        echo 'Não há registros';
?>

obrigado

 

Douglas Fabiano

 

onde eu preciso dar echo da soma é na linha:

echo ("Valor Total do Período:");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal tentei fazer assim, mas não deu certo ainda:

 


<?php

$total = 0;

while( ... )
{
	$total += $rowy ['vr_total_manutencao'];
}

echo $total;

?>

Mas não deu certo tb... se alguem puder me ajudar agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo como já te disse é só somar pelo SQL

exemplo:

SELECT *, SUM(vr_total_manutencao) AS total FROM tbl_principal JOIN ...

la no php

echo $rowy ['total']

como já disse estude o manual e veja o que a função SUM faz, agora não procurar saber fica dificil te ajudar.

 

vai lá segue um monte de exemplos Clique aqui

 

e seu código ta muito tosco procure melhorar também!!! parece até que deu um Ctrl+c +Ctrl+v em um tutorial

 

t++++++++++++

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou tentnado fazer... deu uma pesquisada,, porem agora apareceu o seguinte erro:

Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE or '$' in /home/viatura_receber_dados.php on line 73

O código que eu coloquei está assim (vou postar o código completo):

<?php
include 'conexao_1_sysvtr.php';
// evitando Injection
$viatura = (int)$_POST['viatura'];
// transformando a data digitada DD/MM/AAAA em AAAA-MM-DD, para efetuar a consulta ao banco de dados
$dataInicio = (isset($_POST['dataInicio']))? implode('-',array_reverse(explode('/',addslashes($_POST['dataInicio'])))): '';
// transformando a data digitada DD/MM/AAAA em AAAA-MM-DD, para efetuar a consulta ao banco de dados
// além disto, verificamos se foi digitada alguma coisa. Se não foi, colocamos a data de hoje.
$dataFim = (isset($_POST['dataFim']) && !empty($_POST['dataFim'])) ? implode('-',array_reverse(explode('/',addslashes($_POST['dataFim'])))) : date('Y-m-d');

// montando a query
$sql = "SELECT * FROM tbl_principal JOIN tbl_viaturas USING (viaturaId) WHERE data_manutencao BETWEEN '$dataInicio' AND '$dataFim'";
if(!empty($viatura))
        $sql .= ' AND viaturaId = '.$viatura;
        
// Linha de erro - somente durante o desenvolvimento
$resultado = mysql_query($sql) or die('Erro. Consulta enviada '.$sql.'<br />Erro do MySQL '.mysql_error());
// quando finalizar, utilizar esta segunda linha
// $resultado = mysql_query($sql) or die('Erro inesperado.');
// Se existirem registros, exibe-os abaixo
if (mysql_num_rows($resultado) > 0 )
{
        // aqui você faz a exibição dos dados da tabela
        while($linha = mysql_fetch_assoc($resultado))
        {
      //Abaixo faço a tebaela para exibição - dentro do php
$c = 2;
$cores = array("#CCCCCC","#FFFFFF");
$tabela = '<table width="100%" border="1" cellspacing="1" cellpadding="5">';
    $index = $c % 2;
    $c++;
    $cor = $cores[$index];
    $tabela .= '<tr bgcolor="'.$cor.'">';
    $tabela .= '<td width="10%">Viatura:<div align="left">'.$linha['vtr'].'</div></td>';
    $tabela .= '<td width="10%">Data Manut.:<div align="left">'.date('d/m/Y',strtotime($linha['data_manutencao'])).'</div></td>';
    $tabela .= '<td width="15%">Valor Serviço:<div align="left">'.$linha['vr_unitario_servico'].'</div></td>';
	$tabela .= '<td width="10%">Valor Peças:<div align="left">'.$linha['vr_total_pecas'].'</div></td>';
	$tabela .= '<td width="45%">Peças:<div align="left">'.$linha['pecas_utilizadas'].'</div></td>';
	$tabela .= '<td width="10%">Total:<div align="left">'.$linha['vr_total_manutencao'].'</div></td>';
    $tabela .= '</tr>';
$tabela .= '</table>';
echo $tabela;
}
echo ("Valor Total do Período:");
//Abaixo função Somar os campos
$ query = "SELECT *, SUM (vr_total_manutencao) AS Total FROM tbl_principal"; 
$ resultado = mysql_query ($ query) or die (mysql_error ());
 // Imprima o resultado
 while ($ row = mysql_fetch_array ($ resultado)) (
	 echo "Total".  $ row [ 'total'].  "= $".  $ row [ 'SUM (vr_total_manutencao)'];
	 echo "<br />";
	 echo $rowy ['total']
 )
}
// senão, exibe a mensagem
else
        echo 'Não há registros';
?>

A parte que eu inseri foi essa debaixo (que ja está no código acima):

 

//Abaixo função Somar os campos
$ query = "SELECT *, SUM (vr_total_manutencao) AS Total FROM tbl_principal"; 
$ resultado = mysql_query ($ query) or die (mysql_error ());
 // Imprima o resultado
 while ($ row = mysql_fetch_array ($ resultado)) (
	 echo "Total".  $ row [ 'total'].  "= $".  $ row [ 'SUM (vr_total_manutencao)'];
	 echo "<br />";
	 echo $rowy ['total']
 )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei montar assim:, mas ainda não deu certo:

 

// montando a query
$sql = "SELECT *, SUM (vr_total_manutencao) AS Total JOIN tbl_viaturas USING (viaturaId) WHERE data_manutencao BETWEEN '$dataInicio' AND '$dataFim'";
if(!empty($viatura))

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom estou tentando mais nada até agora...

 

Agora o código está correto pois não aparece erro, porem não aparece a soma.. vejam como está meu código:

 

//Abaixo função Somar os campos
$_query = "SELECT SUM(vr_total_manutencao)  AS total FROM tbl_principal WHERE data_manutencao BETWEEN '$dataInicio' AND '$dataFim'";
$_resultado = mysql_query ($_query) or die (mysql_error ());
 // Imprima o resultado
	 while ($_row = mysql_fetch_array ($_resultado)) {
	echo "Total: ".  $_row ['vr_total_manutencao'];
}
}
// senão, exibe a mensagem
else {
        echo 'Não há registros';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho uma duvida

você tem duas tabelas ?

tbl_principal e tbl_viaturas ?

se for você fará o codigo assim......

//Abaixo função Somar os campos
$_query = "SELECT SUM(vr_total_manutencao)  AS total FROM tbl_principal JOIN
tbl_viaturas USING (viaturaId) WHERE data_manutencao BETWEEN '$dataInicio' AND '$dataFim'";
$_resultado = mysql_query ($_query) or die (mysql_error ());
// Imprima o resultado
         while ($_row = mysql_fetch_array ($_resultado)) {
        echo "Total: ".  $_row ['vr_total_manutencao'];
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá... Faça o seguinte:

$_query = "SELECT SUM(vr_total_manutencao) AS total FROM tbl_principal JOIN
tbl_viaturas USING (viaturaId) WHERE data_manutencao BETWEEN '$dataInicio' AND '$dataFim'";
$_resultado = mysql_query ($_query) or die (mysql_error ());
// Imprima o resultado
echo '<pre>';
while ($_row = mysql_fetch_array ($_resultado)) 
{
      print_r($row);
      exit;
}
Poste aqui o que aparecer.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alterei, conforme indicado, não apresentou erro não. Mas o resultado ficou em branco, veja o resultado na tela:

 

Imagem Postada

 

Veja o trecho do código:

 

echo ("Valor Total do Período:");
//Abaixo função Somar os campos
$_query = "SELECT SUM(vr_total_manutencao) AS total FROM tbl_principal JOIN
tbl_viaturas USING (viaturaId) WHERE data_manutencao BETWEEN '$dataInicio' AND '$dataFim'";
$_resultado = mysql_query ($_query) or die (mysql_error ());
// Imprima o resultado
echo '<pre>';
while ($_row = mysql_fetch_array ($_resultado)) 
{
      print_r($row);
      exit;
}
}
// senão, exibe a mensagem
else {
        echo 'Não há registros';
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo. Vejamos se retornou alguma coisa da consulta. Imprima a query antes de executar e execute diretamente no banco de dados. Veja se retorna alguma coisa. Se não retornar nada, o problema está na query e então moveremos para o fórum de MySQL, onde o pessoal poderá te ajudar melhor. Se diretamente no banco retornar, aí o problema é outro.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom veja o resultado da query:

Imagem Postada

 

Veja a estrutura da Tabela:

 

  `codigo` tinyint(30) unsigned NOT NULL AUTO_INCREMENT,
  `vtr` varchar(50) DEFAULT NULL,
  `placa` varchar(10) DEFAULT NULL,
  `marca` varchar(20) DEFAULT NULL,
  `tipo_manutencao` varchar(20) DEFAULT NULL,
  `servico_realizado` varchar(100) DEFAULT NULL,
  `pecas_utilizadas` varchar(300) DEFAULT NULL,
  `qtd_de_pecas` varchar(10) DEFAULT NULL,
  `vr_unitario_servico` varchar(10) DEFAULT NULL,
  `vr_unitario_pecas` varchar(10) DEFAULT NULL,
  `vr_total_pecas` varchar(10) DEFAULT NULL,
  `vr_total_manutencao` varchar(10) DEFAULT NULL,
  `data_manutencao` date DEFAULT NULL,
  `qtd_abastecimento_litros` tinyint(5) unsigned DEFAULT NULL,
  `viaturaId` tinyint(50) unsigned DEFAULT NULL,
  `usuario` varchar(50) DEFAULT NULL,
  `data_cadastro` date DEFAULT NULL,
  `observacao` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`codigo`)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, não precisa criar duas consultas ao banco de dados. Vamos fazer direto no PHP mesmo.

 

// antes de iniciar o while, você inicia a variável que vai conter a soma.
$soma = 0;
$c = 2;
$cores = array("#CCCCCC","#FFFFFF");
// aqui você faz a exibição dos dados da tabela
while($linha = mysql_fetch_assoc($resultado))
{
	//Abaixo faço a tabela para exibição - dentro do php
	$index = $c++ % 2;
	$cor = $cores[$index];
	$tabela = '<table width="100%" border="1" cellspacing="1" cellpadding="5">';
	$tabela .= '<tr bgcolor="'.$cor.'">';
	$tabela .= '<td width="10%">Viatura:<div align="left">'.$linha['vtr'].'</div></td>';
	$tabela .= '<td width="10%">Data Manut.:<div align="left">'.date('d/m/Y',strtotime($linha['data_manutencao'])).'</div></td>';
	$tabela .= '<td width="15%">Valor Serviço:<div align="left">'.$linha['vr_unitario_servico'].'</div></td>';
	$tabela .= '<td width="10%">Valor Peças:<div align="left">'.$linha['vr_total_pecas'].'</div></td>';
	$tabela .= '<td width="45%">Peças:<div align="left">'.$linha['pecas_utilizadas'].'</div></td>';
	$tabela .= '<td width="10%">Total:<div align="left">'.$linha['vr_total_manutencao'].'</div></td>';
	$tabela .= '</tr>';
	$tabela .= '</table>';
	echo $tabela;
	// aqui a gente faz a soma em cada iteração do while.
	$soma += $linha['vr_total_manutencao'];
}
// aqui a gente só imprime o valor
echo 'Valor Total do Período: R$ ',$soma;

Veja se funciona.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

O valor ficou zerado "R$0"

 

Agora veja meu código com ficou:

 

// Se existirem registros, exibe-os abaixo
if (mysql_num_rows($resultado) > 0 )
{
// variavel onde irá armazenar a soma das manutenções
$soma = 0; 
        // aqui faz a exibição dos dados da tabela
        while($linha = mysql_fetch_assoc($resultado))
        {
$c = 2;
$cores = array("#CCCCCC","#FFFFFF");
$tabela = '<table width="100%" border="1" cellspacing="1" cellpadding="5">';
    //Exibe as informações em uma tabela
	$index = $c % 2;
    $c++;
    $cor = $cores[$index];
    $tabela .= '<tr bgcolor="'.$cor.'">';
    $tabela .= '<td width="10%">Viatura:<div align="left">'.$linha['vtr'].'</div></td>';
    $tabela .= '<td width="10%">Data Manut.:<div align="left">'.date('d/m/Y',strtotime($linha['data_manutencao'])).'</div></td>';
    $tabela .= '<td width="15%">Valor Serviço:<div align="left">'.$linha['vr_unitario_servico'].'</div></td>';
	$tabela .= '<td width="10%">Valor Peças:<div align="left">'.$linha['vr_total_pecas'].'</div></td>';
	$tabela .= '<td width="45%">Peças:<div align="left">'.$linha['pecas_utilizadas'].'</div></td>';
	$tabela .= '<td width="10%">Total:<div align="left">'.$linha['vr_total_manutencao'].'</div></td>';
    $tabela .= '</tr>';
$tabela .= '</table>';
echo $tabela;
// aqui a gente faz a soma em cada iteração do while.
        $soma += $linha['vr_total_manutencao'];
}
// aqui a gente só imprime o valor
echo 'Valor Total do Período: R$ ',$soma;
}
// senão, exibe a mensagem
else {
        echo 'Não há registros';
}
?>

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.