Ir para conteúdo

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 ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
×

Informação importante

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