FAZER UMA SOMA TOTAL DE VALORES DE UMA COLUNA EM UMA RESPECTIVA TABELA

20/11/2017

0

PHP

Boa tarde Amigos eu me chamo Nahor e estou com um problema talvez vocês da comunidade possam me ajudar

Estou montando um sistema de cadastro de receita e despesa e nessa tabela tem as seguintes informações


id
código
nome
data de entrada
descrição
preço
forma de pagamento
Número de parcelas
Valor de cada parcela
Telefone

Eu queria fazer uma soma total no campo preço porque e o campo onde está o preço total do item cadastrado
minha tabela no banco de dados chama-se receita eu queria que quando o administrador fizesse um registro
automaticamente seria feito a soma de todos os valores no campo preço. eu queria fazer isso direto no php
estou trabalhando com o mysqli. espero que vcs possam me ajudar estou a 3 dias tentando resolver isso ja revirei a internet e não consegui resolver o problema.
imagino que seria um select.

este foi o codigo que eu imaginei mas quando eu dou o echo ele mostra somente 0

<?php



$resultado = mysqli_query($conexao, "SELECT sum(preco) FROM receita");
$linhas = mysqli_num_rows($resultado);

while($linhas = mysqli_fetch_array($resultado)){
echo $linhas['sum(preco)'].'<br/>';

?>
<?php
}
?>
Nahor Silva

Nahor Silva

Responder

Post mais votado

20/11/2017

<?php


$resultado = mysqli_query($conexao, "SELECT sum(preco) as totalPreco FROM receita");
$linhas = mysqli_num_rows($resultado);
while($linhas = mysqli_fetch_array($resultado)){
echo $linhas['totalPreco'].'<br/>';

?>
<?php
}
?>

Alex William

Alex William
Responder

Mais Posts

20/11/2017

Nahor Silva

não funcionou aparece somente o zero

Eu queria esta soma fosse automatica conforme o administrador fosse inserido o registro tivesse uma soma total no final da tabela.

estou enviando o codigo

<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">

<title>Painel Geral Adminstrador</title>

<!--CSS-->

<link href="css/bootstrap.css" rel="stylesheet">
<link href="style.css" rel="stylesheet">

<!-- HTML5 shim e Respond.js para suporte no IE8 de elementos HTML5 e media queries -->
<!-- ALERTA: Respond.js não funciona se você visualizar uma página file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->

</head>

<?php include "config.php"; ?>

<body>

<div class="col-md-12 header">

<div class="col-md-11">

<h2>Painel Geral de Receita</h2>
<h4><span>Bem vindo Administrador - </span><?php echo $nome; ?></h4>

</div>

<div class="col-md-1 sair">

<a href="config.php?acao=quebra"><img src="img/icone_sair.png" alt=""></a>

</div><!--fim do icone sair-->

</div><!--fim do header-->

<!--VISUALIZAR OS DADOS DE RECEITA-->

<div class="container">
<div class="row">

<div class="col-md-12 box_geral">

<br><br>

<a class="btn btn-success" href="cadastro_receita.php?pg=cadastra">CADASTRO DE RECEITA</a>
<a class="btn btn-danger" href="cadastro_despesas.php?pg=cadastra">CADASTRO DE DESPESAS</a>
<a class="btn btn-primary" href="relatorio.php" target="_blank">IMPRIMIR RELATÓRIO</a>

<br><br>

<h2>CADASTRO DE RECEITA</h2>

<br><br>

<?php

$sql = "SELECT * FROM receita WHERE nome !=''";
$result = mysqli_query($conexao,$sql);
if(mysqli_num_rows($result) == ''){

echo "No momento não existe nenhum registro cadastrado";

}else{

?>

<div class="table-responsive">
<table class="table">

<tr>
<th>Id</th>
<th>Código</th>
<th>Nome</th>
<th>Data</th>
<th>Descrição</th>
<th>Preço</th>
<th>Pagamento</th>
<th>N.de Parcelas</th>
<th>V. da Parcela</th>
<th>Telefone</th>
<th>Botões de Ação</th>
</tr>

<?php

while ($res_1 = mysqli_fetch_array($result)) {

$id = $res_1['id'];
$codigo = $res_1['codigo'];
$nome = $res_1['nome'];
$data = $res_1['data'];
$descricao = $res_1['descricao'];
$preco = $res_1['preco'];
$pagamento = $res_1['pagamento'];
$parcelas = $res_1['parcelas'];
$valor = $res_1['valor'];
$telefone = $res_1['telefone'];

?>


<tr>

<td><h3><?php echo $id; ?></h3></td>
<td><h3><?php echo $codigo; ?></h3></td>
<td><h3><?php echo $nome; ?></h3></td>
<td><h3><?php echo $data; ?></h3></td>
<td><h3><?php echo $descricao; ?></h3></td>
<td><h3><?php echo $preco; ?></h3></td>
<td><h3><?php echo $pagamento; ?></h3></td>
<td><h3><?php echo $parcelas; ?></h3></td>
<td><h3><?php echo $valor; ?></h3></td>
<td><h3><?php echo $telefone; ?></h3></td>


<td>
<a class="btn btn-danger" href="cadastro_receita.php?pg=todos&func=deleta&id=<?php echo $id; ?>">EXCLUIR</a>
<a class="btn btn-primary" href="cadastro_receita.php?pg=todos&func=edita&id=<?php echo $id; ?>">EDITAR</a>

</td>

</tr>

<?php } } ?>

</table>

</div>

</div><!--fim do box_geral-->

</div><!--fim do row-->
</div><!--fim do container-->

<!-- FINAL DO VISUALIZAR OS DADOS DE RECEITA-->

<div class="container">
<div class="row">
<div class="col-md-12 total">

<?php

$resultado = mysqli_query($conexao, "SELECT sum(preco) as totalPreco FROM receita");
$linhas = mysqli_num_rows($resultado);
while($linhas = mysqli_fetch_array($resultado)){
echo $linhas['totalPreco'].'<br/>';

?>

<?php

}

?>

</div>
</div>
</div>



<!-- CADASTRO DE RECEITA-->

<?php if(@$_GET['pg'] == 'cadastra') { ?>

<div class="container">
<div class="row">

<br><br><br><br>

<h1>Cadastrar novo Registro</h1>

<br><br>

<?php

if(isset($_POST['button'])){

$codigo = $_POST['codigo'];
$nome = $_POST['nome'];
$data = $_POST['data'];
$descricao = $_POST['descricao'];
$preco = $_POST['preco'];
$pagamento = $_POST['pagamento'];
$parcelas = $_POST['parcelas'];
$valor = $_POST['valor'];
$telefone = $_POST['telefone'];

$sql = "INSERT INTO receita (codigo, nome, data, descricao, preco, pagamento, parcelas, valor, telefone) VALUES ('$codigo', '$nome', '$data', '$descricao', '$preco', '$pagamento', '$parcelas', '$valor', '$telefone')";

$cadastra = mysqli_query($conexao,$sql);

if($cadastra == ''){

echo "<script language='javascript'>window.alert('Ocorreu um erro ao Cadastrar!');</script>";

}else{

echo "<script language='javascript'>window.alert('Cadastrado com Sucesso!');window.location='cadastro_receita.php';</script>";

}

}

?>
<div class="col-md-12 formulario">

<form class=" col-md-12 form-inline" method="post" action="">

<div class="form-group">
<input type="text" class="form-control" name="codigo" placeholder="Cod do Administrador">
</div>

<div class="form-group">
<input type="text" class="form-control" name="nome" placeholder="Nome do Administrador">
</div>

<div class="form-group">
<input type="text" class="form-control" name="data" placeholder="Data de entrada">
</div>

<div class="form-group">
<input type="text" class="form-control" name="descricao" placeholder="Descrição do Item">
</div>

<div class="form-group">
<input type="text" class="form-control" name="preco" placeholder="Preço">
</div>

<div class="form-group">
<input type="text" class="form-control" name="pagamento" placeholder="Forma de Pagamento">
</div>

<div class="form-group">
<input type="text" class="form-control" name="parcelas" placeholder="Número de Parcelas">
</div>

<div class="form-group">
<input type="text" class="form-control" name="valor" placeholder="Valor das parcelas">
</div>

<div class="form-group">
<input type="text" class="form-control" name="telefone" placeholder="Telefone">
</div>

<br>

<button type="submit" class="btn btn-success" name="button">Cadastrar novo Registro</button>

</form>

</div>

</div><!--fim do row-->
</div><!--fim do container-->

<?php } ?>

<br><br>

<!--FINAL DO CADASTRO DE RECEITA-->


<!--EXCLUIR DADOS DE RECEITA-->

<?php

if(@$_GET['func'] == 'deleta'){

$id = $_GET['id'];

$sql = "DELETE FROM receita WHERE id = '$id'";
mysqli_query($conexao,$sql);

echo "<script language='javascript'>;window.location='cadastro_receita.php';</script>";

}

?>

<!--FINAL DO EXCLUIR OS DADOS DE RECEITA-->


<!--EDITAR DADOS DE RECEITA-->

<?php if(@$_GET['func'] == 'edita') { ?>

<div class="container">
<div class="row">

<br><br><br><br>

<h1>Editar Registro</h1>

<br><br>

<?php $id = $_GET['id'];

$sql = "SELECT * FROM receita WHERE id = '$id'";

$consulta = mysqli_query($conexao, $sql);

while($res_1 = mysqli_fetch_array($consulta)) { ?>

<?php

if(isset($_POST['button'])){

$codigo = $_POST['codigo'];
$nome = $_POST['nome'];
$data = $_POST['data'];
$descricao = $_POST['descricao'];
$preco = $_POST['preco'];
$pagamento = $_POST['pagamento'];
$parcelas = $_POST['parcelas'];
$valor = $_POST['valor'];
$telefone = $_POST['telefone'];

$sql = "UPDATE receita SET codigo = '$codigo', nome = '$nome', data = '$data', descricao = '$descricao', preco = '$preco', pagamento = '$pagamento', parcelas = '$parcelas', valor = '$valor', telefone = '$telefone' WHERE id = '$id' ";

$result = mysqli_query($conexao, $sql);

if($result == ''){

echo "<script language='javascript'>window.alert('Erro ao Editar');window.location='cadastro_receita.php';</script>";
} else{

echo "<script language='javascript'>window.alert('Editado com Sucesso');window.location='cadastro_receita.php';</script>";

}

}

?>

<div class="col-md-12 formulario">

<form class=" col-md-12 form-inline" method="post" action="">

<div class="form-group">
<input type="text" class="form-control" name="codigo" value="<?php echo $res_1['codigo']; ?>" placeholder="Cod do Administrador">
</div>

<div class="form-group">
<input type="text" class="form-control" name="nome" value="<?php echo $res_1['nome']; ?>" pl
Responder

20/11/2017

Nahor Silva

Eu fiz alguns testes e quando eu mudei o select

<?php

$resultado = mysqli_query($conexao, "SELECT sum(valor + parcelas) as total FROM receita");
$linhas = mysqli_num_rows($resultado);
while($linhas = mysqli_fetch_array($resultado)){
echo $linhas[''total''].''<br/>'';

?>

ele fez a conta só que de forma errada pois no campo valor esta o valor de cada parcela e no parcelas o numero de vezes que foi divido o valor total da compra no campo preço, um detalhe que eu percebi e que no banco de dados o campo preço esta como varchar e não decimal isso influencia.
Responder

21/11/2017

Alex William

um detalhe que eu percebi e que no banco de dados o campo preço esta como varchar e não decimal isso influencia.


Você consegue somar texto com texto? Eu digo somar, não concatenar.

Então, mude o tipo do campo para FLOAT ou DOUBLE com 12 digitos e 2 decimais e tente efetuar o teste da query de soma denovo vê se funciona.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar