Ir para conteúdo
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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por freitaz
      Bom Quando tento alterar o formulário ele me trás a resposta "Atualizado com sucesso" mas não é atualizado no banco de dados se alguém poder me ajudar agradeço !
       
      código de cadastro
       
      <div class="card-body"> <?php $executivo = new Exe(); if ($_SERVER["REQUEST_METHOD"] == "GET") { //Using GET $id = $_GET['id']; $titulo = $_GET['titulo']; $categoria = $_GET['categoria']; $action = $_GET['action']; $file = $_GET['arquivo']; } if (isset($_POST["btnPublicar"])) { $id = $_POST['id']; $titulo = $_POST['titulo']; $categoria = $_POST['categoria']; $action = $_POST['action']; $file = $_POST['filetext']; if ($_SERVER["REQUEST_METHOD"] == "POST") { // Check if file was uploaded without errors $filename = $_FILES["file"]["name"]; $filetype = $_FILES["file"]["type"]; $filesize = $_FILES["file"]["size"]; // Verify file extension $ext = pathinfo($filename, PATHINFO_EXTENSION); // Verify file size - 5MB maximum $maxsize = 5 * 1024 * 1024; if ($filesize > $maxsize) { die("ERRO: Tamanho máximo de arquivo igual a 5MB."); } // Check whether file exists before uploading it if (file_exists("uploads/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " já existe na pasta."; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]); } } #fim do Arquivo print_r($fmsg); $executivo->setID($id); $executivo->setTitulo($titulo); $executivo->setCategoria($categoria); $executivo->setArquivo($filename); try { if ($action == "alterar") { if ($filename == "") { $executivo->setArquivo($file); } else { if (file_exists("uploads/" . $file)) { $path = 'uploads/' . $file; unlink($path); } } $executivo->update($executivo->getID(), $executivo->getTitulo(), $executivo->getCategoria(), $executivo->getArquivo()); $texto = "Atualizado com sucesso"; } else { $executivo->insert($executivo->getTitulo(), $executivo->getCategoria(), $executivo->getArquivo()); $texto = "Inserido com sucesso"; } } catch (PDOException $e) { echo 'ERRO: ' . $e->getMessage(); } } ?> <h4 class="header-title">Cadastro Downloads Executivos</h4> <form method="POST" enctype="multipart/form-data"> <div class="form-group"> <input type="text" id="action" name="action" hidden="true" value="<?php echo $action; ?>" > <label class="col-form-label">Título</label> <input class="form-control" type="text" name="titulo" value="<?php echo $titulo; ?>" > </div> <div class="form-group"> <label class="col-form-label">Categoria</label> <select class="form-control" name="categoria"> <option >Select</option> <option value="Executivo">Executivo</option> <option value="Legislativo">Legislativo</option> <option value="Judiciario">Judiciário</option> </select> </div> <div class="input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text">Arquivo</span> </div> <div class="custom-file"> <input type="file" name="file"/> <a href="<?php echo "uploads/" . $file; ?>"><?php echo $file; ?></a> <input type="text" id="filetext" name="filetext" hidden="true" value="<?php echo $file; ?>" > </div> </div> <button class="btnPublicar" name="btnPublicar"><span>Publicar </span></button> </form> <?php echo $texto; ?> </div>  
      Essa e a codigo da classe
       
      <?php require_once 'Crud.php'; class Exe extends Crud { protected $table = 'exe'; private $arquivo; private $categoria; private $id; private $titulo; public function setArquivo($arquivo) { $this->arquivo = $arquivo; } public function getArquivo() { return $this->arquivo; } public function setCategoria($categoria) { $this->categoria = $categoria; } public function getCategoria() { return $this->categoria; } public function setID($id) { $this->id = $id; } public function getID() { return $this->id; } public function setTitulo($titulo) { $this->titulo = $titulo; } public function getTitulo() { return $this->titulo; } public function insert($titulo, $categoria, $arquivo) { try { $sql = "INSERT INTO $this->table (titulo, categoria, arquivo) VALUES (:titulo, :categoria, :arquivo)"; $stmt = DB::prepare($sql); $stmt->execute(array('titulo' => $titulo, 'categoria' => $categoria, 'arquivo' => $arquivo)); } catch (PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } public function update($id, $categoria, $titulo, $arquivo) { try { $sql = "UPDATE $this->table SET categoria = :categoria, titulo = :titulo, arquivo= :arquivo WHERE id = :id"; $stmt = DB::prepare($sql); $stmt->execute(array('id' => $id, 'titulo' => $titulo, 'categoria' => $categoria, 'arquivo' => $arquivo)); } catch (PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } } ?>  
      Se alguem poder me orientar como ajustar agradeço!
    • Por rogarfil
      <div class="video-sec">
        <h4 class="heading-small">Mídias</h4>
        <div class="video-block">
        <ul class="nav nav-pills justify-content-center mb-4" id="pills-nav" role="tablist">      
        <?php
        // Atribui uma conexão PDO
        $conexao = Connection::getInstance();
        $controle_ativo = 2;
        //$controle_num_slide = 1;
        $sql = "SELECT * FROM db_post WHERE status=1 AND category='Mídia' ORDER BY created DESC LIMIT 3";
        $stm = $conexao->prepare($sql);
        $stm->execute();
        while($post = $stm->fetch(PDO::FETCH_OBJ)) {
          if($controle_ativo == 2) { ?>
            <li class="nav-item">
              <a class="nav-link active" id="nav-pills-01" data-toggle="pill" href="#<?=$post->post_id?>"><?=$post->title?></a>
            </li>
          <?php
            $controle_ativo = 1;
          } else {
          ?>
            <li class="nav-item">
              <a class="nav-link" id="nav-pills-02" data-toggle="pill" href="#<?=$post->post_id?>"><?=$post->title?></a>
            </li>
          <?php
            //$controle_num_slide++;
          }
        }
        ?>
      </ul>
      <div class="tab-content" id="nav-pills-content">      
        <?php
        // Atribui uma conexão PDO
        $conexao = Connection::getInstance();
        $controle_ativo = 2;
        $sql = "SELECT * FROM db_post WHERE status=1 AND category='Mídia' ORDER BY created DESC LIMIT 3";
        $stm = $conexao->prepare($sql);
        $stm->execute();
        while($post = $stm->fetch(PDO::FETCH_OBJ)) {
          if($controle_ativo == 2) { ?>
        <div class="tab-pane fade show active" id="<?=$post->post_id?>" role="tabpanel">
          <div class="row">
            <div class="col-sm-6">
              <div class="embed-responsive embed-responsive-16by9"> <!-- 21by9, 16by9, 4by3, 1by1 -->
                <iframe class="embed-responsive-item" src="<?=$post->url?>"></iframe>
              </div>
            </div>
            <div class="col-sm-6">
              <p class="display-5"><?=$post->content?></p>
              <p class="card-text">
                <small class="text-time">
                  <em>Publicado em <?=date('M,d',strtotime($post->created))?></em>
                </small>
              </p>
            </div>
          </div>
        </div>
          <?php
            $controle_ativo = 1;
          } else {
          ?>
        <div class="tab-pane fade" id="<?=$post->post_id?>a" role="tabpanel">
          <div class="row">
            <div class="col-sm-6">
              <div class="embed-responsive embed-responsive-16by9"> <!-- 21by9, 16by9, 4by3, 1by1 -->
                <iframe class="embed-responsive-item" src="<?=$post->url?>"></iframe>
              </div>
            </div>
            <div class="col-sm-6">
              <p class="display-5"><?=$post->content?></p>
              <p class="card-text">
                <small class="text-time">
                  <em>Publicado em <?=date('M,d',strtotime($post->created))?></em>
                </small>
              </p>
            </div>
          </div>
        </div>
          <?php
          }
        }
        ?>
      </div>
      Há aba ativa está perfeita quando clico na segunda ou terceira aba nada acontece (não abre), tenho que deixar dinâmico. Ainda pergunto existe uma maneira com javascript para ativar a aba e seu conteúdo.

    • Por kadu silva
      Boa Noite
       
      Estou Criando Um Site Para Um Cliente E Ele Deseja Colocar Um Sistema De Buscar.
      Já Criei Os Códigos Em Php E O Banco De Dados No Phpmyadmin. Porém, Agora Necessito De Ajuda Para Como Colocar Ele Dentro Do Site Funcionando.
      O Sistema De Pesquisa Durante A Fase De Teste, Estar Dando Tudo Certo, Faz A Pesquisa Certinho, Eu Só Não Sei Como Colocar Dentro Do Site Funcionando, Necessito De Muita Ajuda.
    • Por AllysonSouza
      Boa noite, to precisando de ajuda, eu to listando os dados direto do banco de dados em um tabela, so que ela faz isso linha por linha como é feito, eu queria que ele listasse duas tabelas na mesma pagina, só que dando continuidade da busca do banco de dados, exemplo. ele busca 50 resultados no banco, ai ele pega o maximo de linhas possivel em uma tabela, e do outro lado da tela ele lista o restante dos dados...enfim, eis meu codigo, exibindo tudo em uma tabela só
      <?php $categoria = $_GET['categoria']; $sql = "SELECT p.id AS idProd, p.nome AS produto, p.largura, p.comprimento, p.estilo, p.valor, p.valorCompra, p.estoque, p.imagem, c.id AS idCat, c.nome AS categoria, p.vendidos, p.tipo, p.detalhe FROM produtos p INNER JOIN categorias c ON p.categorias_id=c.id WHERE c.id=$categoria ORDER BY p.nome, p.largura ASC"; $res = mysqli_query($con, $sql); $dados = mysqli_fetch_array($res); ?> <div class="panel-footer"> <table class="table table-bordered table-hover text-center"> <thead > <tr ><td colspan="5" style="text-align: center;"> <?php echo $dados['categoria']?></td></tr> </thead> <thead > <tr > <th width="250" class="text-center" >Nome</th> <th width="10" class="text-center">Tamanho</th> <th width="100" class="text-center">Valor</th> </tr> </thead> <tbody> <?php while($linha = mysqli_fetch_array($res)){ ?> <tr > <td > <?php echo $linha['produto']; echo " "; echo $linha['largura'] ; echo " "; echo $linha['detalhe']; echo" "; if($linha['estilo']==0){ echo ''; }else if($linha['estilo']==1){ echo '(Bruta)'; }else if($linha['estilo']==2){ echo '(Plainada)';}?> <label class='label label-danger'><?php if($linha['tipo'] == 0 ){ echo 'ML';}; ?></label> <label class='label label-primary'><?php if($linha['tipo'] == 1 ){ echo 'M²';}; ?></label> <label class='label label-warning'><?php if($linha['tipo'] == 2 ){ echo 'Peça';}; ?></label> <label class='label label-info'><?php if($linha['tipo'] == 3 ){ echo 'Duzia';}; ?></label> <label class='label label-success'><?php if($linha['tipo'] == 4 ){ echo 'KG';}; ?></label> </td> <td><?php if($linha['comprimento']==0){ echo '1 M '; }else if($linha['comprimento']==1){ echo '3 M'; }else if($linha['comprimento']==2){ echo '4 M'; }else if($linha['comprimento']==3){ echo '5 M'; }else if($linha['comprimento']==4){ echo '6 M'; }else if($linha['comprimento']==5){ echo ''; } ?></td> <td> <?php echo Conversor::realBancoParaUsuario($linha['valor']); ?> </td> </tr> <?php } ?> </tbody> </table> </div>  
×

Informação importante

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