Ir para conteúdo

POWERED BY:

Arquivado

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

marcelo380

Subtrair valor de tabelas

Recommended Posts

Bom dia pessoal,

 

Estou desenvolvendo um sistema de pontos e preciso subtrair pontos de varias linhas exemplo.

 

 

Nome Pontos Item

Teste 2 Teste

Teste 3 Outro

Teste 5 HASUDHASU

 

 

Bom eu pego os pontos totais assim

 

function getPontos(){
include_once('config/config_mysql.php');
$pesquisa = mysql_query("select SUM(ValorRs) as total_resgate FROM pontos where pac_codigo='10064156'");
$marcelo1 = mysql_fetch_array($pesquisa);
return $marcelo1['total_resgate']; 
}

Agora preciso por exemplo tenho um regate de 6 pontos a fazer o total que o nome teste tem é 10 posso resgatar.
mas preciso diminuir 6 das linhas até dar o valor exemplo.

 

-2 da linha 1

-3 da linha 2

-1 da linha 3 e deixa 4 na linha 3.

 

E estou com dificuldade para montar esse código.

 

 

Agradeço a atenção ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

confesso que não entendi nada :P

exemplifique o que precisa se possível

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem que manter todas as linhas?

Não pode por exemplo excluir a última, que representa 5 e depois retirar o restante da penúltima (2 ficaria 1 para o item OUTRO).?

 

Porque o que acontecerá quando cada item tiver 1 ou 0 pontos? Faz diferença de onde você vai tirar esses pontos?

 

Em fim, para ajudar, não podemos gastar "lógica" tentando adivinhar o que você realmente precisa. Detalhe melhor o problema, ai quem sabe possamos dar uma força. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos la vou tentar explicar melhor, eu tenho vários produtos que são vendidos funciona assim.

 

 

 

ID|Cliente |Produto | Valor | Vencimento | Pontos |

1|Marcelo| radio | 200 | 01/03/2016 | 400 |

2|Marcelo| pc | 800 | 01/04/2016| 1600 |

 

 

Eu não quero excluir a linha pois mais tarde quero extrato disso, apenas quero retinar o gasto da menor data para maior pois se ela vencer ali em vencimento o cliente não pode mais resgatar.

Por isso eu pensei assim vamos lá.

Tenho um resgate de 1200 pontos o cliente Marcelo no exemplo acima tem o total de 2000 mas em tabelas separadas. então quero que meu codigo faça o seguinte a primeira tabela a mais antiga é a do produto radio ID 1 ele pega 1200 que é o resgate vai la e remove os 400 pontos deixa 0, apos isso vai para próxima linha e remove oque falta que é 800 ficando guardado na id 2 o valor de 800 (1600-800=800).

Mais tarde se o cliente vier resgatar 300 pontos ele faz o 800-300=500 e guarda la e assim por diante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com PHP, traga o registro que você quer, e faça uma subtração ué. Depois, pega o valor subtraído e altera na coluna do banco.

 

Um update do MySQL basta.

 

Até aonde você fez?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com PHP, traga o registro que você quer, e faça uma subtração ué. Depois, pega o valor subtraído e altera na coluna do banco.

 

Um update do MySQL basta.

 

Até aonde você fez?

Não é um registro são vários para ser exatos todos os registros da pessoa.

 

por exemplo listo todos os dados dos valores.

$busca = mysql_query("SELECT * FROM pontos WHERE pac_codigo='151282'")  or die(mysql_error());  
while($row = mysql_fetch_array($busca)){	 
	$resultado = $row['valorRS']."<br>";
}

Bom assim eu trago todos os valores do mysql de cada linha.

ele vai me trazer um resultado que é:

3.98

3.98

3.98

3.98

9.5

 

Eu quero resgatar 15 pontos ele vai somar tudo com um SUM.

que é 25,42 dae eu verifico se ele pode resgatar 15 com if(15<=25,42)

e quero executar uma ação que é remover 15 pontos por ordem das linhas no caso preciso remover 15 pontos

eu quero fazer 1 while para isso que va retirando até ele diminuir 15 exemplo.

 

15 - 3.98 = 11,02

11,02 - 3.98 = 7,04

7,04 - 3.98 = 3,06

3,06 - 3.98 = 0,92 (sobrou ele faz update da sobra)

9.5

 

 

assim quando eu listar novamente a tabela vai estar assim pois ele fez update nos valores.

 

0.00

0.00

0.00

0.92

9.5

 

acho que deu para entender melhor desculpe se estou explicando mal, mas realmente está dificil =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq não deixa a pontuação em apenas 1 registro?

$resgate = 15;
$totalPontos = 25.42;

while ()
{
  if($resgate>0)
  {
    if($LinhaAtual=$resgate)
    {
        $totalPontos = 0;
        $resgate = 0;
        exit("pontos resgatados, saldo zerado");
    }
    else if($linhaAtual > $resgate)
    {
        $linhaAtual = $linhaAtual - $resgate;
        $resgate = 0;
        exit("pontos resgatados, saldo zerado");
    }
    else if($linhaAtual < $resgate)
    {
        $resgate = $resgate - $linhaAtual;
        $linhaAtual = 0;
    }
  }
};

pode fazer assim, percorrendo cada linha de pontuação; (se não houver saldo negativo rsrs)

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq não deixa a pontuação em apenas 1 registro?

$resgate = 15;
$totalPontos = 25.42;

while ()
{
  if($resgate>0)
  {
    if($LinhaAtual=$resgate)
    {
        $totalPontos = 0;
        $resgate = 0;
        exit("pontos resgatados, saldo zerado");
    }
    else if($linhaAtual > $resgate)
    {
        $linhaAtual = $linhaAtual - $resgate;
        $resgate = 0;
        exit("pontos resgatados, saldo zerado");
    }
    else if($linhaAtual < $resgate)
    {
        $resgate = $resgate - $linhaAtual;
        $linhaAtual = 0;
    }
  }
};

pode fazer assim, percorrendo cada linha de pontuação; (se não houver saldo negativo rsrs)

 

Não posso deixar em apenas uma linha pelo fato que no caso desse sistema o cliente ganha pontos diariamente por items cada items é um linha e ele tem vencimento =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho valido vc dividir essa tabela, deixa uma tabela clientes, uma tabela produtos e uma clientProd (relacionamento).

 

fica mais ou menos assim:

 

cliente:

id

nome

pontos

-----------------------

produto:

id

descricao

pontosDoProduto

-----------------------

 

clienteProduto

idCliente

idProduto

vencimentoPonto

_________________________________

 

Deste modo, a pontuação de cada cliente fica em um só lugar e a pontuação do produto não precisaria ser digitada toda vez.

 

Assim, cada vez que um cliente adquirisse um produto, vc cadastraria o relacionamento na tabela clienteProduto, indicaria qual o vencimento dos pontos e adicionaria o saldo dele na tabela cliente. Quando o cliente fizesse um resgate, vc descontaria esses pontos na tabela cliente, sem se preocupar com o vencimento dos pontos de cada produto.

Para retirar pontos decorrentes da validade, basta verificar no relacionamento qual pontuação está vencida, e subtrair da pontuação do cliente caso esta seja igual ou maior do que a pontuação vencida.

 

É uma ideia ;) (não sei se deu pra compreender bem meu raciocinio).

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.