Jump to content
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

Share this post


Link to post
Share on other 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/

Share this post


Link to post
Share on other 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
 

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 wandoh
      Boa Tarde! estou com um dificuldades de puxar os dados do usuário logado no site. Atualmente estou conseguindo puxar somente o NOME, quando tento puxar o restante da erro! Abaixo segue o Código.
       
      session_start(); //inicializa variaveis $id = "accountid"; $name = ""; $email = ""; $errors = array(); //conexão db $db = mysqli_connect('localhost', 'root', 'senha', 'db') or die("could not connect to database"); //Registrar usuário if (isset($_POST['reg_user'])) { // receives all input values from the form $name = mysqli_real_escape_string($db, $_POST['name']); $email = mysqli_real_escape_string($db, $_POST['email']); $password = mysqli_real_escape_string($db, $_POST['password']); $password2 = mysqli_real_escape_string($db, $_POST['password2']); //form validação: ensure that the form is correctly filled ... // by adding (array_push)) corresponding error unto $errors array if(empty($name)) { array_push($errors, " "); } if(empty($email)) { array_push($errors, " "); } if(empty($pwd)) { array_push($errors, " "); } if($pwd != $pw2) { array_push($errors, " "); } // To protect MySQL injection (more detail about MySQL injection) $name = stripslashes($name); $password = stripslashes($password); // first check the databese to make sure // verifica na db se a usuário existente com o mesmo nome de usuário e email $user_check_query = "SELECT * FROM t_account WHERE name='$name' or email='$email' LIMIT 1"; $result = mysqli_query($db, $user_check_query); $user = mysqli_fetch_assoc($result); if($user) { // if user existente if ($user['name'] === $name) { array_push($errors, " "); } if ($user['email'] === $email) { array_push($errors, " "); } } // Registra o usuário se não haver erros if (count($errors) == 0 ) { $pwd = md5($pwd); print $pwd; $query = "INSERT INTO t_account (name, email, pwd, pw2) VALUES ('$name', '$email', '$password', '$password2')"; mysqli_query($db, $query); $_SESSION['accountid'] = $id;// $_SESSION['name'] = $name; $_SESSION['success'] = 'Você está logado em'; echo " "; //header('location: index.php'); } } //LOGIN USER if (isset($_POST['login_user'])) { $name = mysqli_real_escape_string($db, $_POST['name']); $password = mysqli_real_escape_string($db, $_POST['password']); if (empty($name)) { array_push($errors, " "); } if (empty($password)) { array_push($errors, " "); } if (count($errors) == 0 ) { $pwd = md5($pwd); $query = "SELECT 'email' FROM t_account WHERE name='$name' AND password='$password'"; $results = mysqli_query($db, $query); if (mysqli_num_rows($results)) { $_SESSION['accountid'] = $id;// $_SESSION['name'] = $name; $_SESSION['success'] = 'Você está logado em'; echo " "; //header('location: index.php'); }else{ array_push($errors, " "); } } } Com a variável abaixo, é exibido o nome de quem esta logado.
      $_SESSION["name"] Já com os demais, não e exibido o resultado é apresentado uma msg de erro.
      $_SESSION["email"] Notice: Undefined index: email in Passei em todos os post que tem sobre o assunto, mas infelizmente em meu código não deu certo.
       Sou novo em PHP!
      Preciso puxar todos os dados cadastrado do usuário.
    • By Mucio Willamys
      olá, gostaria da ajuda de vcs :
      este código traz as informações do banco de dados e as coloca dentro de um select html
      é parte de um projeto de um sistema de uma clínica médica, onde ao cadastrar os médicos posso escolher a especialidade do mesmo.
      <select name="especialidade" required="">                 <option value="" >--Escolha uma especialidade--</option>          <?php              $result_especialidade = "select * from especialidade";              $result_especialidade = mysqli_query($bd, $result_especialidade);              while ($row_especialidade = mysqli_fetch_assoc($result_especialidade)){ ?>                    <option value="<?php echo $row_especialidade['id']; ?>"><?php echo  $row_especialidade['nome']; ?> </option> public function editar($id){ include "Bd.class.php"; $nome = $this->nome; $cpf = $this->cpf; $crm = $this->crm; $especialidade = $this->especialidade; $query = "update medico set nome = '$nome', cpf = '$cpf', crm = '$crm', especialidade_id = '$especialidade' where id = $id"; $status = $bd->query($query); return $status; } Acima ^ está a função editar...
       
       
       
      abaixo está o form com as informações do médico.
      <form method="POST" action="../controller/Controller-medico.php?op=e"> <input type="hidden" name="id" size="5" value="<?php echo $id; ?>" > <div class="campo"> <label for="nome">Nome: </label> <input type="nome" name="nome" size="30" value="<?php echo $m->getNome() ?>"> </div> <div class="campo"> <label for="cpf">CPF: </label> <input type="text" name="cpf" size="30" value="<?php echo $m->getCpf() ?>"> </div> <div class="campo"> <label for="rg">CRM: </label> <input type="text" name="crm" size="30" value="<?php echo $m->getCrm() ?>"> </div> <div class="campo"> <label for="especialidade"> Especialidade: </label> </div> <div class="campo"> <input type="submit" value="Atualizar"> </div> </form> Gostaria de saber como faço pra setar um input ou um select no caso para a alteração do dado(especialidade)?
    • By Filipe556
      alguém tem ideia de algum método de bloquear usuário por ip
    • By vini_seven
      Segue aqui meu código abaixo, o que ocorre é o seguinte, quando o usuário logar ele vai para a página de chat, quando ele vai para essa página é feito um update no banco de dados para status = 1 esse status igual a 1 é a minha condição para exibição na página usuários para então que o técnico da T.I escolha quem atender, todas que estão com status = 1 vão estar visíveis lá. Porém ao usuário clicar no botão sair na página de chat, quero que faça o update no banco de dados com status = 0 novamente, para então na página de usuários a ser atendido ele vai sair, vou colocar um refresh a cada 60s nessa página para ela atualizá-la. ----CÓDIGO DO TRECHO DA PÁGINA CHAT ONDE TEM O BOTÃO SAIR---
      <> <body> <div class="contact1"> <div class="fundo_chat"> <div class="janela_chat"> </div> <form action="chat.php" method="post" class="form-chat"> <input type="text" name="mensagem" id="mensagem" placeholder="Mensagem"> <tr> <button class="btn btn-primary" type="submit" id="botao-enviar">Enviar</button> <a class="btn btn-primary" href="logout.php" role="button" id="botao-sair">Sair</a> </form> </div> </div> </body> </html> <> --CÓDIGO ONDE É FEITO A VALIDAÇÃO DE LOGIN, REDIRECIONA PARA A PÁGINA DE USUÁRIOS QUEM É DA T.I, OS RESTANTES DE OUTROS SETORES VÃO DIRETO PARA A CHAT ONDE AGUARDA ATENDIMENTO E AO SER REDIRECIONADO MUDA STATUS PARA =1, ESTÁ MUDANDO PARA 1 PERFEITAMENTE.-- <> <?php session_start(); header('Content-Type: text/html; charset=utf-8'); include("conexao.php"); if(empty($_POST['nome']) || empty($_POST['senha'])){ header('location:index.html'); exit(); } $nome = mysqli_real_escape_string($conn, $_POST['nome']); $senha = mysqli_real_escape_string($conn, $_POST['senha']); $query = "select * from usuarios where nome = '$nome' and senha = '$senha'"; $setor = "SELECT setor FROM usuarios"; $result = mysqli_query($conn, $query); $row = mysqli_num_rows($result); if($row == 1){ $_SESSION['nome'] = $nome && $_SESSION['senha'] = $senha; while ($verifica_setor = mysqli_fetch_array($result)) { $setor = $verifica_setor['setor']; if ($setor == "Tecnologia da Informação") { header('location: usuarios.php'); }else{ mysqli_query($conn, "UPDATE usuarios set status = '1' WHERE nome = '$nome'"); header('location: chat.php'); } } } else { echo "<script>alert('USUÁRIO NÃO CADASTRADO OU DADOS INVÁLIDOS!');</script>"; echo "<script>window.location='index.html';</script>"; exit(); } ?> <> --AQUI É O MEU LOGOUT, ONDE EU INICIO A PARAMETRO SESSION PARA PEGAR O VALOR GLOBAL DELA QUE TINHA QUE SER O NOME PARA BUSCAR NA TABELA, FIZ UM OR DIE PARA TESTAR O QUERY E UM ECHO PARA VER O QUE ESTAVA SENDO EXIBIDO, E O QUE EXIBE NO ECHO É O VALOR = 1, POR ISSO A QUERY NAO FUNCIONA DO JEITO CERTO-- <> <?php include("conexao.php"); session_start(); echo $_SESSION['nome']; mysqli_query($conn, "UPDATE usuarios SET status = '0' WHERE nome = '$nome'") or die ("PARAMETROS NAO ALTERADO"); /* session_destroy(); header('location:index.html'); exit();*/ ?> <>  
    • By Sapinn
      Salve! Estou desenvolvendo um sistema de mensagens para o meu site no qual o ADM envia a mensagem para todos os usuarios ou ele pode digitar o email de um usuaio e será enviado apenas para este usuario especifico, além disso, o usuario recebe um tipo de notificação que informa que tem uma nova mensagem. O problema está sendo justamente nesta segunda parte não consigo pensar em uma logica para que a mensagem destinada a apenas um usuario so seja notificado ele.
      Alguém pode me ajudar
      vejam meu codigo
       
      <?php //conexao com o banco de dados include '../php/conexao.php'; //pega a tabela mensagem $query = mysql_query("select * from mensagem")or die(mysql_error //ver todos os dados que tem nela while($mensagem = mysql_fetch_assoc($query)){ //verifica na tabela ler se o codigo do aluno é igual ao codigo do usuario logado se tem alguma mensagem na tabela e se o email do destinatario é igual //ao do usuario logado $ver = mysql_query("SELECT * FROM ler where codigo_aluno='".$row['id']."' and codigo_mensagem= '".$mensagem['id']."' and destinatario ='".$row['email']."'")or die(mysql_error); } //se for igual ao 0 ou seja não tiver tudo ok significa que ele não leu a mensagem então mostra a notificação if(mysql_num_rows($ver) == 0){ ?> <span class="app-menu__label">Mensagens</span> <i><img src="../img/icone/menu/sino_mensagem.png" width="26px" height="26px"></i></a> </li> <?php //se não ele não mostro porque ela já foi lida }else{ ?> <span class="app-menu__label">Menssagem</span></a> </li> <?php } ?> Preciso de ajuda acho que o erro é na minha logica 
×

Important Information

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