Jump to content
Mauricio Molina

Função aritmetica

Recommended Posts

Ola pessoal, será que podem me dar uma força?

 

Preciso fazer um calculo de subtração de valores, onde o administrador seleciona o mes, pego pelo ID, método GET, para edição.

 

Como normalmente tem vários meses pagos, o script a seguir só esta funcionando no primeiro item da tabela.

 

Como posso fazer para funcionar em todos os itens da tabela?

 

Teria que dar um nome diferente no getValor (id no HTML) para cada um, mas como posso fazer isso?

 

 <!-- Calculo Devolucao-->
		<script type="text/javascript">
			function id(valor_campo)
			{
				return document.getElementById(valor_campo);
			}
			function getValor(valor_campo)
			{
				var valor = document.getElementById(valor_campo).value.replace(',', '.');
				/*document.write("Valor: " - valor);*/
				return parseFloat( valor ) * 1;
			}

			function sub()
			{
				var total = getValor('v_recebido') - (getValor('v_devolvido'));
				id('resultadoDev').value = (total * 1) .toFixed(2, ".");
			}
			
		</script>	
	<!-- Calculo Devolucao--> 	
<div class="toggle">																		
	<input name="v_devolvido" type="checkbox" id="foo<?php echo $rows_aluno['id']; ?>" value="<?php echo $rows_aluno['v_recebido']; ?>">
		<label for="foo<?php echo $rows_aluno['id']; ?>"></label>
</div>
<input type="text" id="v_recebido" value="<?php echo $rows_aluno['v_recebido']; ?><?php echo $rows_aluno['v_receb_parc']; ?>" onblur="sub()" >
<div class="form-row">
	<div class="form-group col-md-6">
		<label for="validationCustomUsername">Valor Parcial:</label>
			<div class="input-group">
				<div class="input-group-prepend">
					 <span class="input-group-text" id="inputGroupPrepend">R$</span>
</div>
<input name="v_dev_parc" type="text" class="form-control" id="v_devolvido" placeholder="Digite o Valor" aria-describedby="inputGroupPrepend" onblur="sub()">
</div>
</div>																
<input name="id_user" type="hidden" value="<?php echo $rows_aluno['id_user']; ?>">
<input name="id_prof" type="hidden" value="<?php echo $rows_aluno['id_prof']; ?>">
<input name="status" type="hidden" value="Devolvido">
<input name="mes" type="hidden" value="<?php echo $rows_aluno['mes']; ?>">
<input name="v_recebido" type="text" id="resultadoDev">																		
</div>

 

Share this post


Link to post
Share on other sites

Olá!
Não consegui entender.
De que tabela você está falando?
No exemplo demonstrado  não há tabelas.
Só um input com valor
outro como o valor a ser subtraído
e outro q apresenta o total.

Aparentemente, assim q ocorrer um blur(se os inputs tiverem valores válidos), vai funcionar

Share this post


Link to post
Share on other sites

Ola, obrigado pela resposta

 

É que peguei apenas ao que diz respeito a div dinâmica dentro da tabela.

 

Dentro da tabela (dinâmica) tem uma ação que abre um menu para clicar no botão, que abre um modal referente ao mes, vamos supor, que o aluno tenha, 3 meses pagos (janeiro, Fevereiro e Março) e o professor queira devolver o mes de Março, da forma que esta, só esta funcionando no mes de janeiro, que seria o primeiro mes a aparecer na tabela.imageproxy.php?img=&key=28afbb360db5c1b9

 

Perceba na imagem, que ao tentar a devolução do primeiro mes a aparecer na tabela, funciona corretamente o calculo, ja no segundo da tabela, o calculo não funciona.

 

Func.JPG.0480cf4944bcdab4c273f8fe203bd989.JPG

1849246838_Funcerro.JPG.065bf7b1ff57b12d57da64db5a00a766.JPG

 

Segue o código inteiro:

 

<?php
	session_start();
	include_once("seguranca.php");
	include_once("../conexao/conexao.php");	
	$id_user = filter_input(INPUT_GET, 'id_user', FILTER_VALIDATE_INT);	
	$result_aluno = "Select * FROM valores_recebidos WHERE id_prof = $_SESSION[usuarioId] AND id_user = '$id_user' ";
	$resultado_aluno = mysqli_query($conn, $result_aluno);
	$result_pag_aluno = "Select * FROM valores_recebidos WHERE id_prof = $_SESSION[usuarioId]";
	$resultado_pag_aluno = mysqli_query($conn, $result_pag_aluno);
	$result_usuarios_menu = "Select * FROM usuarios WHERE id = $_SESSION[usuarioId]";
	$resultado_usuarios_menu = mysqli_query($conn, $result_usuarios_menu);
	$result_empresa = "Select nome_empresa, nome, descricao FROM empresa";
	$resultado_empresa = mysqli_query($conn, $result_empresa);
	seguranca_adm();
?>
<style>
.toggle {
    margin-bottom: 40px;
}

.toggle > input {
    display: none;
}

.toggle > label {
    position: relative;
    display: block;
    height: 20px;
    width: 44px;
    background: #898989;
    border-radius: 100px;
    cursor: pointer;
    transition: all 0.3s ease;
}
.toggle > label:after {
    position: absolute;
    left: -2px;
    top: -3px;
    display: block;
    width: 26px;
    height: 26px;
    border-radius: 100px;
    background: #fff;
    box-shadow: 0px 3px 3px rgba(0,0,0,0.05);
    content: '';
    transition: all 0.3s ease;
}
.toggle > label:active:after {
    transform: scale(1.15, 0.85);
}
.toggle > input:checked ~ label {
    background: #6fbeb5;
}
.toggle > input:checked ~ label:after {
    left: 20px;
    background: #179588;
}
.toggle > input:disabled ~ label {
    background: #d5d5d5;
    pointer-events: none;
}
.toggle > input:disabled ~ label:after {
    background: #bcbdbc;
}

</style>

<!DOCTYPE html>
<html lang="pt-br">

<head> 
<?php while($rows_empresa = mysqli_fetch_assoc($resultado_empresa)){ ?>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
	<meta name="description" content="Valores a Devolver - <?php echo $rows_empresa['descricao']; ?>">
	<meta name="author" content="<?php echo $rows_empresa['nome_empresa']; ?>">
	<link rel="icon" href="../favicon/favicon.png">
	
    <title>Valores a Devolver | <?php echo $rows_empresa['nome']; ?></title>
<?php } ?>
	
	<!-- CSS Principal" -->	
	 <?php require_once 'css/css.html'; ?>	 
	<!-- JS Principal" -->	
	 <?php require_once 'js/js.html'; ?>
	 
	 <!-- Calculo Devolucao-->
		<script type="text/javascript">
			function id(valor_campo)
			{
				return document.getElementById(valor_campo);
			}
			function getValor(valor_campo)
			{
				var valor = document.getElementById(valor_campo).value.replace(',', '.');
				/*document.write("Valor: " + valor);*/
				return parseFloat( valor ) * 1;
			}

			function sub()
			{
				var total = getValor('v_recebido') - (getValor('v_devolvido'));
				id('resultadoDev').value = (total * 1) .toFixed(2, ".");
			}
			
		</script>	
		 <!-- Calculo Devolucao--> 	 

</head>
<body>
<div class="page-wrapper chiller-theme toggled">
  <a id="show-sidebar" class="btn btn-sm btn-dark" href="#">
    <i class="fas fa-bars"></i>
  </a>
 <!-- Menu --> 
 <?php require_once 'menu/menu.php'; ?>
 <!-- Menu --> 
<main class="page-content">
 <!-- Menu Superior-->
			<?php require_once 'menu/nav_superior.php'; ?>
		<!-- Menu Superior-->
    <div class="container-fluid">
     <h2 class="font-weight-600 text-uppercase">Valores a Devolver</h2>
      <hr>
			<?php			  
				if(isset($_SESSION['msg_receb'])){
				echo $_SESSION['msg_receb'];
				unset($_SESSION['msg_receb']);
				}				
			?>
			<?php			  
				if(isset($_SESSION['msg_devolver'])){
				echo $_SESSION['msg_devolver'];
				unset($_SESSION['msg_devolver']);
				}				
			?>
	  <p class="text-justify">Faça seu controle de Recebíveis e Devoluções.</p>	
							<div class="card bg-gradient-light shadow mb-4">
							<div class="card-header py-3">
							  <h6 class="m-0 font-weight-bold text-primary">Lista de Valores</h6>
							</div>
							<div class="card-body">
							  <div class="table-responsive">
								<table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
								  <thead>
									<tr>
									  <th>RECEBIDO</th>
									  <th>DEVOLVIDO</th>
									  <th>MES</th>
									  <th>ANO</th>
									  <th>STATUS</th>							  
									  <th>AÇÂO</th>
									</tr>
								  </thead>
								  <tfoot>
									<tr>
									   <th>RECEBIDO</th>
									  <th>DEVOLVIDO</th>
									  <th>MES</th>
									  <th>ANO</th>
									  <th>STATUS</th>							  
									  <th>AÇÂO</th>
									</tr>
								  </tfoot>
								  <tbody>
									<?php while($rows_aluno = mysqli_fetch_assoc($resultado_aluno)){ ?>	
										<tr>
											<td><?php
													$pag = $rows_aluno['v_receb_parc'];
													if($pag == null){
														echo " ";
													}else{
														echo "<p class='text-success font-weight-600'>R$ $pag</p>";
													}
												?>
												<?php
													$pag = $rows_aluno['v_recebido'];
													if($pag == null){
														echo " ";
													}else{
														echo "<p class='text-success font-weight-600'>R$ $pag</p>";
													}
												?>
											</td>
											<td><?php
													$pag = $rows_aluno['v_devolvido'];
													if($pag == null){
														echo " ";
													}else{
														echo "<p class='text-danger font-weight-600'>R$ $pag</p>";
													}
												?>
												<?php
													$pag = $rows_aluno['v_dev_parc'];
													if($pag == null){
														echo " ";
													}else{
														echo "<p class='text-danger font-weight-600'>R$ $pag</p>";
													}
												?>
											</td>	
											<td><?php echo $rows_aluno['mes']; ?></td>
											<td><?php echo date('Y', strtotime($rows_aluno['cadastro'])); ?></td>
											<td>
												<?php
													$status = $rows_aluno['status'];;
													if($status == Recebido){
														echo "<p class='text-success font-weight-bold'>$status</p>";
													}else{
														echo "<p class='text-danger font-weight-bold'>$status</p>";
													}
												?>
											</td>
											<td>
												<ul class="navbar-nav ml-auto"> 
													<!-- Nav Item - User Information -->
													<li class="nav-item dropdown no-arrow">
													  <a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
														<i class="fas fa-cog text-success"></i>													
													  </a>
													  <!-- Dropdown - User Information -->
													  <div class="dropdown-menu shadow " aria-labelledby="userDropdown">
														  <?php
																$pag = $rows_aluno['status'];
																if($pag == Devolvido){
																	echo "<a class='dropdown-item text-danger'><span class='font-weight-bold'>Valor devolvido</span></a>";
																}else{
																	echo " ";
																}
															?>	
														<a class="dropdown-item text-danger" href=" " data-toggle="modal" data-target="#ModalEditDevolve<?php echo $rows_aluno['id']; ?>">
															<?php
																$pag = $rows_aluno['status'];
																if($pag == Devolvido){
																	echo " ";
																}else{
																	echo "<i class='fas fa-dollar-sign fa-sm fa-fw mr-2 text-gray-400'></i>Devolver";
																}
															?>	
														</a>														
													  </div>
													</li>
												</ul>
											</td>
										</tr>
												<!-- Modal Editar Devolver-->
												<div class="modal fade" id="ModalEditDevolve<?php echo $rows_aluno['id']; ?>" tabindex="-1" role="dialog" aria-labelledby="TituloModalCentralizado" aria-hidden="true">
													<div class="modal-dialog modal-dialog-centered" role="document">
														<div class="modal-content">
														   <div class="modal-header bg-primary">
															<h5 class="modal-title text-white text-uppercase font-weight-bold" id="TituloModalCentralizado">Devolver</h5>
															<button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
															  <span aria-hidden="true">×</span>
															</button>
														  </div>															
															<div class="modal-body">
															<P class="text-gray-700">Você pretende devolver o valor total ou parcial?</p>
															<?php
																$pag = $rows_aluno['v_recebido'];
																if($pag == null){
																	echo " ";
																}else{
																	echo "<span class='font-weight-bold'>Recebido: <strong class='text-success'>R$ $pag</strong></span>";
																}
															?>															
																<form method="post" action="proc_edit_receb_devolv.php?id=<?php echo $rows_aluno['id']; ?>">																	
																	<P class="font-weight-bold text-success">Valor Total:</p>
																
																		<div class="toggle">																		
																			<input name="v_devolvido" type="checkbox" id="foo<?php echo $rows_aluno['id']; ?>" value="<?php echo $rows_aluno['v_recebido']; ?>">
																			<label for="foo<?php echo $rows_aluno['id']; ?>"></label>
																		</div>
																		<input type="text" id="v_recebido" value="<?php echo $rows_aluno['v_recebido']; ?><?php echo $rows_aluno['v_receb_parc']; ?>" onblur="sub()" >
																	<div class="form-row">
																		<div class="form-group col-md-6">
																		  <label for="validationCustomUsername">Valor Parcial:</label>
																			<div class="input-group">
																				<div class="input-group-prepend">
																				  <span class="input-group-text" id="inputGroupPrepend">R$</span>
																				</div>
																				<input name="v_dev_parc" type="text" class="form-control" id="v_devolvido" placeholder="Digite o Valor" aria-describedby="inputGroupPrepend" onblur="sub()">
																			</div>
																		</div>																
																		<input name="id_user" type="hidden" value="<?php echo $rows_aluno['id_user']; ?>">
																		<input name="id_prof" type="hidden" value="<?php echo $rows_aluno['id_prof']; ?>">
																		<input name="status" type="hidden" value="Devolvido">
																		<input name="mes" type="hidden" value="<?php echo $rows_aluno['mes']; ?>">
																		<input name="v_recebido" type="text" id="resultadoDev">																		
																	</div>															
															</div>															
																  <div class="modal-footer">
																	<button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">Fechar</button>
																	<button type="submit" class="btn btn-sm btn-success">Devolver</button>
																  </div>															
																</form>															
														</div>
													</div>
												</div>
												  <!-- Modal Editar Devolver-->													  
									<?php } ?><!-- Listar Aluno -->
															
									</tbody>
								</table>
							  </div>
							</div>
						  </div>
	<div class="mt-4">
		<?php require_once 'footer.php'; ?> 
	</div>
  </main>
  <!-- page-content" -->
</div>
<!-- JS Colocado no Final para Desenpenho -->
     <?php require_once 'js/jsfinal.html'; ?> 
<!-- Botao Togle Valor Total -->
 <script>
var estado = document.getElementById('estado');
$('#onoff1').on('change', function() {
    var el = this;
    estado.innerHTML = el.checked ? 'ligado' : 'desligado';

    // aqui podes juntar a lógica do ajax
    $.ajax({
        url: "some.php",
        data: {
            estado: this.checked
        }
    }).done(function(msg) {
        if (msg == 'failed') return el.checked = !el.checked; // caso o servidor retorne "failed" mudar o estado do botão
        else alert("Info gravada: " + msg);
    });
});
</script>
<!-- Botao Togle Valor Total -->
</body>

</html>
  
  

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By mateus.andriollo
      Boa tarde,
      Tenho alguns campos numéricos q ao fazer uma select gostaria q retornasse uma legenda
       
      exemplo:
      Status: 0=Inativo / 1=Ativo Condição: 1=Funcionando / 2=Em manutenção / 3=Manutenção Interna   
      Seria algo assim, tenho varias tabelas com estes campos... mas tenho q ficar usando replace.
      Existe uma forma de criar uma função para isso? Nem q na função eu tenha que setar nome do campo, ficando assim:
      Legenda('Status',cadastro.status) 
    • By joagostini
      Olá, sou iniciante, e estou fazendo, como exercício, o jogo da velha. 'Desenvolvi' uma rotina de escolha de nível do jogo (serão 3 níveis) que deve aguardar a escolha do usuário para o programa prosseguir. Mas acho que não entendi direito como o javascript funciona, pois o que fiz não funciona e não encontrei uma solução (talvez não saíba como pesquisar corretamente o assunto na web).

      O começo do HTML (que é pouco) onde está um select para escolha do nível é este:
      <body>     <div id="dvmenu">         <button onclick="iniciar()">Iniciar Jogo</button>         <p><br></p>         <div id="dvQuemComeca">             <label for="nivel">Escolha o nivel:</label>             <select id="nivel" onChange='atualiza()'>                 <option value=0 selected>Escolha um nível</option>                 <option value=1>Nível 1 - Brincadeira</option>                 <option value=2>Nivel 2 - Surpresa</option>                 <option value=3>Nível 3 - Desafio</option>             </select>         </div>         <div id="jogador" class="jogador"></div>         <div id="vencedor" class="jogador"></div>     </div>  
      O código JS é este:
      //INÍCIO VEM DE LOAD function iniciar() {     casela = document.querySelectorAll('div[id^="p"]');     for (let cas of casela) {         cas.innerHTML = '';     }     for (let i = 0; i < 9; i++){        tab = tab;     }     console.log(tab);     nivel = 0;      msg = '';     qtosLancesJog = 0;     sorteiaJogador();     //até aqui funcionou direito } //-------------------------------------------------------------------- //ESCOLHA DO NÍVEL DO JOGO function atualiza(){     let selecao = document.querySelector('#nivel');     let opcao = selecao.options[selecao.selectedIndex];     return opcao.value;    }   //--------------------------------------------------------------------   //SORTEIA QUEM VAI COMEÇAR JOGANDO //função para definir o jogador que inicia o tab function sorteiaJogador() {//funcionou direito     let quemComeca = parseInt(Math.floor(Math.random() * 2));     if (quemComeca == 0) {         msg = 'Computador';         //setTimeout(lanceCpu, 2000);//dá um intervalo antes do computador realizar o 1 lance         lanceCpu();     } else msg = 'Humano';//neste caso a rotina espera que o jogador clique no tabuleiro, qdo roda a função lancetab(pos)         lanceHumano();     document.querySelector('#jogador').innerHTML = `<br>O ${msg} começa!`; } //--------------------------------------------------------------------   //ESCOLHA RANDÔMICA, NIVEL = 1, Da POSIÇÃO DO LANCE DA CPU NO tabULEIRO function jogouCpu(){//funcionou direito //nível 1 modo randômico pos = Math.floor(Math.random() * 9); return pos; }   //função humana function lanceHumano(){     console.log('Estou na função humana');     do {         nivel = atualiza();         console.log(nivel);     } while (nivel === 0);     console.log(nivel + ' passei direto'); }  
      O problema está nesse do...while da function lanceHumano(). Segundo entendi, ele prosseguiria apenas quando nivel!== 0, caso contrário, ficaria 'preso' até o momento que o usuário escolhesse uma das opções. Pelo HTML percebesse que setei o select para value=0. Mas ele nem se dá ao trabalho de esperar um miléssimo de segundo, segue em frente com o valor que tiver, no caso 0. O while  não tem efeito. Essa minha perspectiva está errada? Se sim, o que fazer? (paradigma funcional, await?) Obrigado.
      P.S.. No código tem uns conole.logs que servem watch-dogs para ajudar a entender por onde vão as rotinas.
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
    • By Kellison Ruan
      Acho que não fui tão claro no título, portanto irei esmiuçar melhor aqui...
       
      É o seguinte, quero saber se há algum jeito de pegar as linhas de uma coluna q está em VARCHAR com informações do tipo "4 PONTOS DE ILUMINAÇÃO", dessa informação pretendo retirar somente o número que em questão é o "4" e colocá-lo em outra coluna INTEGER. Há essa possibilidade? Detalhe, as vezes as informações não está seguindo um padrão de vim somente como "4 PONTOS DE ILUMINAÇÃO" às vezes vêm dados com mais informações númericas que precisa distinguir, por exemplo, a mim só interessa pegar números que vem antecedendo as palavras "PONTOS", "PTOS", "PTS", têm algum jeito de distinguir isso?
    • By slaoxx
      Não conseguir obter êxito, minha sintaxe foi a seguinte:
       
      CREATE FUNCTION precomed ()
      RETURNS decimal
      SELECT AVG(preco_cd);
       
      SELECT precomed ();
       
    • By g.dmatos
      Preciso desenvolver um algoritmo no Visualg, da função y=3x+8, onde, a partir da informação de um valor para a variável independente x, o sistema automaticamente informe o valor da variável dependente y.
       
      porém quando vou executar da erro no código:
      var x, y: real inicio escreval("Digite o valor do coeficiente x") leia(x) Escreval ("O valor da conta é igual a:" + y) Leia (y) y=(3.x)+8 fimdoalgoritmo  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.