Ir para conteúdo

POWERED BY:

Arquivado

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

AnthonyKamers

Multiplicar valores de uma Array e inserir SQL com PHP

Recommended Posts

Preciso cadastrar múltiplas linhas no banco de dados e preciso q um dos campos some automaticamente. Tenho o quantidadePaletes[ ] e o valorPorPalete[ ].

no total[ ], preciso q multiplique o quantidadePaletes * valorPorPalete e grave no SQL.

<form method="post">
				<h3>Novo Relatorio</h3>
				<table id="tabla">
					<tr>
						<td><input required name="codigoRelatorio[]" placeholder="Codigo"/></td>
						
						<td><input required name="clientePrincipal[]" placeholder="Cliente da MSK"/></td>
						
						<td><input required name="clienteRelatorio[]" placeholder="Cliente"/></td>
						<td><input required name="nf[]" placeholder="Notas Fiscais"/></td>
						<td><input required name="quantidadePaletes[]" placeholder="Quantidade de Paletes"/></td>
						<td><input required name="valorPorPalete[]" placeholder="Valor Por Palete"/></td>
						<td><input required name="total[]" placeholder="Total"/></td>
						<td class="eliminar"><input type="button"   value="Menos -"/></td>
					</tr>
				</table>

				<div>
					<input type="submit" name="insertar" value="Inserir Dados"/>
					<button id="adicional" name="adicional" type="button"> Mais + </button>

				</div>
			</form>


	<?php

				//////////////////////// PRESSIONAR O BOTÃO //////////////////////////
				if(isset($_POST['insertar']))

				{


				$items1 = ($_POST['codigoRelatorio']);
				$items2 = ($_POST['clienteRelatorio']);
				$items3 = ($_POST['nf']);
				$items4 = ($_POST['quantidadePaletes']);
				$items5 = ($_POST['valorPorPalete']);
				$items6 = ($_POST['total']); 
				$items7 = ($_POST['clientePrincipal']);
				 
				///////////// SEPARAR VALORES DE ARRAYS, NESTE CASO SÃO 6 ARRAYS UM POR CADA INPUT (CODIGO, CLIENTE, NF, QUANTIDADE, PORPALETE, TOTAL)  ////////////////////)
				while(true) {

				    //// RECUPERAR VALORES E JUNTÁ-LOS ////////
				    $item1 = current($items1);
				    $item2 = current($items2);
				    $item3 = current($items3);
				    $item4 = current($items4);
					$item5 = current($items5);
					$item6 = current($items6);
					$item7 = current($items7);
				    
				    ////// CONCATENAR PARA RESPECTIVAS VARIÁVEIS ///////////////////
				    $codigo=(( $item1 !== false) ? $item1 : ",  ");
				    $cliente=(( $item2 !== false) ? $item2 : ",  ");
				    $nf=(( $item3 !== false) ? $item3 : ",  ");
				    $qntd=(( $item4 !== false) ? $item4 : ",  ");
					
					$porPalete=(( $item5 !== false) ? $item5 : ",  ");
					$total=(( $item6 !== false) ? $item6 : ",  ");
					$principal=(( $item7 !== false) ? $item7 : ",  ");

				    //// CONCATENAR VALORES PARA FUTURA INSERÇÃO ////////
				    $valores='('.$codigo.',"'.$cliente.'","'.$nf.'","'.$qntd.'","'.$porPalete.'","'.$total.'","'.$principal.'"),';

				    ////////  COMA É TERMINADO COM CADA LINHA, SUBTRAI COM FUNCÇÃO SUBSTR NA ÚLTIMA FILA /////////////////////
				    $valoresQ= substr($valores, 0, -1);
				    
				    ///////// QUERY DE INSERÇÃO ////////////////////////////
				    $sql = "INSERT INTO relatorio (codigoRelatorio, clienteRelatorio, nf, quantidadePaletes, valorPorPalete, total, clientePrincipal) 
					VALUES $valoresQ";
						
					
					
					
					
					$sqlRes=$connection->query($sql) or mysql_error();
					
					
					$idUltimo = mysqli_insert_id($connection);
				    
				    // Up! Next Value
				    $item1 = next( $items1 );
				    $item2 = next( $items2 );
				    $item3 = next( $items3 );
				    $item4 = next( $items4 );
					
					$item5 = next( $items5 );
					$item6 = next( $items6 );
					$item7 = next( $items7 );
				    
				    // Check terminator
				    if($item1 === false && $item2 === false && $item3 === false && $item4 === false && $item5 === false && $item6 === false && $item7 === false) break;
					
					
					
    
				}
					
					
					
					if($sql){
						echo "
			<script>window.open('verRelatorio.php?id=$idUltimo')</script>
			<meta http-equiv='refresh' content='0; url=relatorio.php' />
			<script type='text/javascript'>alert ('Dados foram Inseridos com Sucesso!!')</script>
		";
					} else {
						echo "
			<meta http-equiv='refresh' content='0; url=relatorio.php' />
			<script type='text/javascript'>alert ('Dados não foram Inseridos com Sucesso!!')</script>
		";
					}
					
				}

			?>

No momento, estou tendo que digitar o total manualmente, porém preciso que isso seja pego automaticamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow recentemente fiz um negocio/exemplo desses pra o pessoal de JS.

Sera que te ajuda em algo?

<!DOCTYPE HTML>
<html lang="en-US">
<head>
	<meta charset="UTF-8">
	<title></title>
</head>
<body>

<table>
	<tbody id="body-table">
		<tr>
			<td>QTD</td>
			<td>VALOR UNITARIO</td>
			<td>SUB TOTAL</td>
		</tr>
		<tr>
			<td><input type="text" class="updateFields qtd" name="qtd[]"/></td>
			<td><input type="text" class="updateFields valorunitario" name="valorunitario[]" /></td>
			<td><input type="text" class="updateFields valorsubtotal" name="valorsubtotal[]" /></td>
		</tr>
		<tr>
			<td><input type="text" class="updateFields qtd" name="qtd[]"/></td>
			<td><input type="text" class="updateFields valorunitario" name="valorunitario[]" /></td>
			<td><input type="text" class="updateFields valorsubtotal" name="valorsubtotal[]" /></td>
		</tr>
	</tbody>
	<tfoot>
		<tr>
			<td colspan="2" style="text-align:center">Total:</td>
			<td><input type="text" id="total" name="total" /></td>
		</tr>
	</tfoot>
</table>
<br />
<br />
<br />
<button id="btn-addCell">Adicionar Cell</button>


<hr />
<br />
<button id="btn-acao">Atualizar</button>

<script type="text/javascript">
	document.getElementById("btn-addCell").addEventListener('click', function() {
        var inputQtd = document.createElement('input');
		inputQtd.setAttribute('type', 'text');
		inputQtd.className = 'updateFields qtd';		
		inputQtd.setAttribute('name', 'qtd[]');
		
		var tdQtd = document.createElement('td');
		tdQtd.appendChild(inputQtd);
		
		var inpuUnit = document.createElement('input');
		inpuUnit.setAttribute('type', 'text');
		inpuUnit.className = 'updateFields valorunitario';		
		inpuUnit.setAttribute('name', 'valorunitario[]');
		
		var tdUnit = document.createElement('td');
		tdUnit.appendChild(inpuUnit);
		
		var inpuSubTotal = document.createElement('input');
		inpuSubTotal.setAttribute('type', 'text');
		inpuSubTotal.className = 'updateFields valorsubtotal';		
		inpuSubTotal.setAttribute('name', 'valorsubtotal[]');
		
		var tdSubTotal = document.createElement('td');
		tdSubTotal.appendChild(inpuSubTotal);
		
		
		
		var tr = document.createElement('tr');
		tr.appendChild(tdQtd);
		tr.appendChild(tdUnit);
		tr.appendChild(tdSubTotal);
		
		document.getElementById("body-table").appendChild(tr);
		updateFields();
	});	
	
	
	function getFieldNameByClass(classes){
		classesArr = classes.split(" ");
		for(x in classesArr){
			if(classesArr[x] == 'qtd') return 'qtd';				
			if(classesArr[x] == 'valorunitario') return 'valorunitario';				
			if(classesArr[x] == 'valorsubtotal') return 'valorsubtotal';				
		}
	}	
	
	//Encapsulamos para poder chamar em outro contexto
	var updateFields = function(){
		var fields = document.getElementsByClassName("updateFields");
		for (var i = 0; i < fields.length; i++) {
			fields[i].addEventListener('keyup',  function() {
				var thisTr = this.parentElement.parentElement;
				var tdChilds = thisTr.childNodes;
				
				var subTotalLinha = {};
				for(var y = 0;y < tdChilds.length; y++){
					
					//Pega apenas os Node reais
					if(tdChilds[y].nodeType == tdChilds[y].ELEMENT_NODE){
						//Dentro do Node (td) navega até o input td->input
						var input = tdChilds[y].childNodes[0];
											
						var inputName = getFieldNameByClass(input.className);
						subTotalLinha[inputName] = input.value;
						//Deixa a referencia ao node, para atualizar após a conta
						if(inputName == 'valorsubtotal'){
							subTotalLinha['nodeRef'] = input;
						}
					}
				}
				
				//is Defined or null?
				if(subTotalLinha['qtd'] == null || subTotalLinha['qtd'] == '') return false;
				if(subTotalLinha['valorunitario'] == null || subTotalLinha['valorunitario'] == '') return false;
				
				var qtd = parseInt(subTotalLinha['qtd']);
				var valorunitario = parseInt(subTotalLinha['valorunitario']);			
				
				var subTotal = qtd * valorunitario;			
				subTotalLinha['nodeRef'].value = subTotal;		
				
				
				//Vamos somar todos os campos a classe valorsubtotal
				var subtotalFields = document.getElementsByClassName("valorsubtotal");
				var total = 0;
				for(var i = 0; i < subtotalFields.length; i++){
					if(subtotalFields[i].value != ''){
						total += parseInt(subtotalFields[i].value);
					}
				}
				//Agora atualiza o campo 'Total'
				document.getElementById("total").value = total;
			}, false);
		}
	}
	
	
	updateFields();
		
	
	
</script>
</body>
</html>

Live:

https://fiddle.jshell.net/73m7crLf/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só copiar e colar.
Vai funcionar normalmente
 

Em 20/04/2018 at 15:28, Gilberto Nogueira de Almeida disse:

sou novato em javascript

 

Recomendo fortemente:
https://github.com/gabrieldarezzo/helpjs-ravi#40---exercicios-em-javascript-js
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • 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
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
×

Informação importante

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