Ir para conteúdo

POWERED BY:

Arquivado

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

Web.Developer

Mostrar o valor que eu pedir em uma tabela

Recommended Posts

eu tenho uma tabela assim

 

usuario        /      valor

 

pedro          /       0,50

joao            /       0,50

maria         /       50,00

carlos       /        300,00

marcos    /         200,00

paulo         /       49,00
 

 

eu quero que 100,00  então vai somar os valores em ORDEM CRESCENTE e vai me mostrar por exemplo:

 

pedro          /       0,50

joao            /       0,50

maria         /       50,00

paulo         /       49,00

 

total: 100,00

 

 


se poder ajudar agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não especificou o SGBD, então vou partir para a resolução do lado da aplicação.

 

O modo mais simples é a cada volta do laço somar o valor total já apresentado e caso passe do especificado dar um break no laço.

$sql = $con->prepare("SELECT * FROM tabela ORDER BY valor ASC");
$sql->execute();

$valor_final = 100;
$valor_atual = 0;

while($lista = $sql->fetch(PDO::FETCH_ASSOC)){

    $valor_atual += $lista['valor'];
    
    if($valor_atual >= $valor_final){
        break;
    }
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 horas atrás, ESerra disse:

Você não especificou o SGBD, então vou partir para a resolução do lado da aplicação.

 

O modo mais simples é a cada volta do laço somar o valor total já apresentado e caso passe do especificado dar um break no laço.


$sql = $con->prepare("SELECT * FROM tabela ORDER BY valor ASC");
$sql->execute();

$valor_final = 100;
$valor_atual = 0;

while($lista = $sql->fetch(PDO::FETCH_ASSOC)){

    $valor_atual += $lista['valor'];
    
    if($valor_atual >= $valor_final){
        break;
    }
}

 

Entendi, Beleza daqui pouco vou testar, eu fiz da mesma forma só não fiz o tal do laço

Compartilhar este post


Link para o post
Compartilhar em outros sites
20 horas atrás, ESerra disse:

Você não especificou o SGBD, então vou partir para a resolução do lado da aplicação.

 

O modo mais simples é a cada volta do laço somar o valor total já apresentado e caso passe do especificado dar um break no laço.


$sql = $con->prepare("SELECT * FROM tabela ORDER BY valor ASC");
$sql->execute();

$valor_final = 100;
$valor_atual = 0;

while($lista = $sql->fetch(PDO::FETCH_ASSOC)){

    $valor_atual += $lista['valor'];
    
    if($valor_atual >= $valor_final){
        break;
    }
}

 

Dessa forma esta me mostrando o pedro e o joao Valor: 0.50 porque será

Compartilhar este post


Link para o post
Compartilhar em outros sites
20 horas atrás, ESerra disse:

$sql = $con->prepare("SELECT * FROM tabela ORDER BY valor ASC");
$sql->execute();

$valor_final = 100;
$valor_atual = 0;

while($lista = $sql->fetch(PDO::FETCH_ASSOC)){

    $valor_atual += $lista['valor']; // aqui esta me mostrando 202
    
    if($valor_atual >= $valor_final){
echo $lista['id'].' '.$lista['usuario'].' '.$lista['valor'].'<br>'; 
    // aqui ele da break só ID 5 marcos: 200.00
        break;
    }
echo $lista['id'].' '.$lista['usuario'].' '.$lista['valor'].'<br>'; 
   // aqui ele me mostra ID 1 pedro  valor: 0.50  
   //e o ID 2 joao valor: 0.50
	
}

 

 

FICOU dessa forma porque será

Compartilhar este post


Link para o post
Compartilhar em outros sites
$sql = $con->prepare("SELECT * FROM fila ORDER BY valor ASC");
$sql->execute();

$valor_final = 100;

while($lista = $sql->fetch(PDO::FETCH_ASSOC)){
foreach ( array($lista['valor'].',') as $n ) {
    if ( $n > $valor_final ) {
        break;
    }
    echo $lista['usuario'].' '.$lista['valor'].'<br>';
 }
    
}

fiz dessa forma funcionou perfeitamente

 

pedro 0.50
joao 0.50
paulo 49.00
maria 50.00

 

só que se eu aumentar o valor da maria para 70.00 ainda continua aparecendo

tinha que sumir

Compartilhar este post


Link para o post
Compartilhar em outros sites

Erro de lógica, se você quer o somatório dos valores, você tem que somar e testar, você está apenas testando o valor de cada usuário em separado.

 

$sql = $con->prepare("SELECT * FROM fila ORDER BY valor ASC");
$sql->execute();

$valor_final = 100;
$valor_atual = 0;

while($lista = $sql->fetch(PDO::FETCH_ASSOC)){
foreach ( array($lista['valor'].',') as $n ) {

    $valor_atual += $n;
    
    
    if ( $valor_atual <= $valor_final ) {
        echo $lista['usuario'].' '.$lista['valor'].'<br>';
    }else{
        break;
    }
 }
    
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, ESerra disse:

Erro de lógica, se você quer o somatório dos valores, você tem que somar e testar, você está apenas testando o valor de cada usuário em separado.

 


$sql = $con->prepare("SELECT * FROM fila ORDER BY valor ASC");
$sql->execute();

$valor_final = 100;
$valor_atual = 0;

while($lista = $sql->fetch(PDO::FETCH_ASSOC)){
foreach ( array($lista['valor'].',') as $n ) {

    $valor_atual += $n;
    
    
    if ( $valor_atual <= $valor_final ) {
        echo $lista['usuario'].' '.$lista['valor'].'<br>';
    }else{
        break;
    }
 }
    
}

 

dessa forma continua me mostrando só

 

pedro 0.50
joao 0.50

Compartilhar este post


Link para o post
Compartilhar em outros sites
$sql = $con->prepare("SELECT * FROM fila ORDER BY valor ASC");
$sql->execute();

$valor_final = 100.00;
$valor_atual = 0.00;

while($lista = $sql->fetch(PDO::FETCH_ASSOC)){
foreach ( array($lista['valor'].',') as $n ) {
    if ( $n > $valor_final ) {
        break;
    }
    $valor_atual += $n;
    
    if($valor_atual <= $valor_final){
        echo $lista['usuario'].' '.$lista['valor'].'<br>';
    } else {
        break;
    }
    
 }
}

fiz dessa forma funcionou perfeitamente

 

pedro 0.50
joao 0.50
paulo 49.00
maria 50.00

 

se eu trocar o valor da maria 70,00 some agora

mais por exemplo:

 

pedro          /       0.50

joao            /       0.50

maria         /       50.00

carlos       /        300.00

marcos    /         200.00

paulo         /       49.00

 

seu eu troco o valor do carlos para 10.00

me mostra

 

pedro          /       0.50

joao            /       0.50

carlos       /        10.00

paulo         /       49.00

 

pula 50.00 que é a maria

 

no caso eu não posso ordenar os valores no select

 

tirei o order by valor asc

 

pedro 0.50
joao 0.50
maria 50.00
carlos 10.00

 

acho que agora ficou melhor, será que fica correto dessa forma esta  correta ou tem muita gambiarra kkk, agradeço pela ajuda esse negocio estava dando um nó na cabeça kk

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera, tudo certo?
       
      Seguinte: No servidor A estou tentando fazer uma consulta com o servidor B, mas está dando erro.
      Estou usando o mesmo código de conexão do servidor B que funciona perfeitamente, mas no servidor A, dá erro.
      Segue código:
       
      $host = 'servidor B';
      $user = 'user';
      $pass = '********';
      $db   = 'banco';
       
      // conexão e seleção do banco de dados
      $conexao = mysqlI_connect($host, $user, $pass, $db);
      mysqlI_set_charset($conexao,"utf8");
      //print "Conexão rodando e OK!"; 
      //mysqlI_close($conexao);
       
      Alguém pode me ajudar?
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.