Jump to content
fainformatica

atualizar e cadastrar usando FOR

Recommended Posts

Olá pessoal, estou precisando de uma ajudinha....

estou fazendo um script para importar produtos para o banco de dados a partir do xml...

só que.... alguns produtos já estão cadastrados. o que eu queria fazer era o seguinte... 

quando o usuario for cadastrar o xml e os produts que já estiverem cadastrado cm o mesmo código de barras

seja apenas atualizado! como faç isso já tentei de várias maneiras....

 

ajudem ai por favor! segue abaixo o código que recebe e faz as gravações!

Detalhe, grava perfeitamente, só não consegui colocar uma condição que fizesse essa lógica!

 

<?php
session_start();

require '../../includes/connect.php';

//$sql = "INSERT INTO produtos (cProd, nProd, un, estoque, vlVenda, ncm, vlCompra, pICMS, perc_ipi) VALUES ";
$grava = "INSERT INTO produtos (cProd, cBarras, nProd, un, estoque, vlVenda, ncm, vlCompra, pICMS, perc_ipi) VALUES ";
$verifica = "";
$atualiza = "";
for( $i=0; $i<count($_POST['item']); $i++ )
{
	$codigo = $_POST['codigo'][$i];
	$cBarras = $_POST['cEAN'][$i];
	$nProd = $_POST['xProd'][$i];
	$ncm = $_POST['NCM'][$i];
	$un = $_POST['uCom'][$i];
	$esto = $_POST['qCom'][$i];
	$estoque = str_replace(",", ".", $esto);
	$vlC = $_POST['vUnCom'][$i];
	$vlCompra = str_replace(",", ".", $vlC);
	$vlV = $_POST['vVenda'][$i];
	$vlVenda = str_replace(",", ".", $vlV);
	$pICMS = $_POST['pICMS'][$i];
	$perc_ipi = $_POST['perc_ipi'][$i];

	$verifica .= "SELECT * FROM `produtos` WHERE `cBarras` = '$cBarras'; ";

	$atualiza .= "UPDATE `produtos` SET `estoque` = `estoque` + '$estoque', `vlVenda` = '$vlVenda', `vlCompra` = '$vlCompra' WHERE `cBarras` = '$cBarras';";

	$grava .= "('$codigo', '$cBarras', '$nProd', '$un', '$estoque', '$vlVenda', '$ncm', '$vlCompra', '$pICMS', '$perc_ipi'),";

}


	//Remove a última vírgula da string SQL
	$grava = substr($grava, 0, -1);

   //echo $sql."<br/><br/>";

   // $execute = mysqli_query($LOCAL, $sql);

   // if ($execute !=0) {
   // 	echo "deu";
   // }else{
   // 	echo "não deu";
   // }


?>

 

Share this post


Link to post
Share on other sites

Para inserir ignorando os já existentes.

INSERT IGNORE INTO (..) VALUES (..);

 

Para inserir se não existir ou atualizar caso exista.

REPLACE INTO (..) VALUES (..);

 

Share this post


Link to post
Share on other sites

Obrigado ja havia achado outra forma de responder!

 

<?php
session_start();

require '../../includes/connect.php';

for( $i=0; $i<count($_POST['item']); $i++ ):
    $codigo = $_POST['codigo'][$i];
    $cBarras = $_POST['cEAN'][$i];
    $nProd = $_POST['xProd'][$i];
    $ncm = $_POST['NCM'][$i];
    $un = $_POST['uCom'][$i];
    $esto = $_POST['qCom'][$i];
    $estoque = str_replace(",", ".", $esto);
    $vlC = $_POST['vUnCom'][$i];
    $vlCompra = str_replace(",", ".", $vlC);
    $vlV = $_POST['vVenda'][$i];
    $vlVenda = str_replace(",", ".", $vlV);
    $pICMS = $_POST['pICMS'][$i];
    $perc_ipi = $_POST['perc_ipi'][$i];

    $sqlConsulta = "SELECT * FROM `produtos` WHERE `cBarras` = '$cBarras';";
	// $stm->prepare($LOCAL, $sqlConsulta);
	// $stm->execute();
	// $produto = $stm->fetch(PDO::FETCH_OBJ);
	$execute = mysqli_query($LOCAL, $sqlConsulta);
	//echo $sqlConsulta;
	$produtos = mysqli_fetch_object($execute);

	if (empty($produtos)) {

		$insert = "INSERT INTO `produtos` (cProd, cBarras, nProd, un, estoque, vlVenda, ncm, vlCompra, pICMS, perc_ipi) ";
		$insert .= "VALUES ('$codigo', '$cBarras', '$nProd', '$un', '$estoque', '$vlVenda', '$ncm', '$vlCompra', '$pICMS', '$perc_ipi');";
		//Remove a última vírgula da string SQL
		//$insert = substr($insert, 0, -1);
		$exeInsert = mysqli_query($LOCAL, $insert);

		if ($exeInsert != 0) {
			$msg = "Produtos importados com sucesso!<br><a href='javascript: fechar();'>Clique aqui para concluir!</a>";
		}else{
			$msg = "Não foi possivel importar os produtos!";
		}
		

	}else{
		$update = "UPDATE PRODUTOS SET estoque = (estoque + '$estoque'), vlVenda = '$vlVenda', vlCompra = '$vlCompra', `d_uCompra` = NOW() WHERE cBarras = '$cBarras';";

		$exeUpdate = mysqli_query($LOCAL, $update);

		if ($exeUpdate != 0) {
			$msg = "Produtos importados com sucesso!<br><a href='javascript: fechar();'>Clique aqui para concluir!</a>";
		}else{
			$msg = "Não foi possivel importar os produtos!";
		}
		
	}
	 
 endfor;

?>

 

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 Diego-SLP
      Boa tarde,
       
      Preciso atualizar um registro o qual já possui um valor na coluna QUANTIDADE, agora atualizarei a coluna VALOR UNITARIO e gostaria que fosse feita a multiplicação QUANTIDADE * VALOR UNITARIO.
       
      Como consigo fazer essa consulta do ID, pegar a QUANTIDADE e multiplicar pelo VALOR UNITARIO de cada linha ? vou atualizar lotes, e nao só um registro.
       
      Imagino que com o FOR, mas não consigo montar sua estrutura de repetição.
    • By Yuji Tako
      Meu professor passou uma lista de exercício para a turma e no meio disso tinha uma questão
      cujo o enunciado é o seguinte:
      eu pensei nas formas de conseguir fazer esse programa e pensei nessa forma
      valor = parseInt(prompt('Valor')); valorsafe = valor; while(valor != 1){ if(valor >= 100){ cem = valor / 100; valor -= (cem * 100); }else if(valor >= 50 && valor <=100){ cinquenta = valor/50; valor -= (cinquenta * 50); }else if(valor >= 10 && valor <= 50){ dez = valor/10; valor -= (dez * 10); }else if(valor >= 5 && valor <=10){ cinco = valor/5; valor -= (cinco * 5); }else if(valor < 5){ um = valor; valor = 1; } } document.write( valorsafe.toFixed(0) + '<br>' + 'cem: ' + cem.toFixed(0) + '<br>' + 'cinquenta: ' + cinquenta.toFixed(0) + '<br>' + 'dez: ' + dez.toFixed(0) + '<br>' + 'cinco: ' + cinco.toFixed(0) + '<br>' + 'um: ' + um.toFixed(0) + '<br>' ); so que ao rodar ele no mozila eu encontro o seguinte erro

      a linha 34 no caso é dentro do "document.write()".
      eu imagino que o navegador nao esta nem executando o meu "while" e por isso nao consegue atribuir um valor em "cinquenta", e por esse motivo buga.
    • By heenrique
      tenho um while onde a div se atualiza automaticamente a cada 10 segundos, e gostaria que quando tivesse uma alteração na quantidade de linhas tocasse um bip, o bip tudo bem, sei como executar ele, por ex: as 9:00 tinha 3 o.s para o técnico, ai apareceu um encaixe, e foi direcionada para esse técnico, então são 4 o.s, quando a div atualizar automaticamente e ver que o resultado de agora é maior que o anterior emitir um bip mas a parte para comparar com a quantidade anterior não consegui,    trecho do código onde pretendo colocar o bip: <?php $hoje = date("Y-m-d"); $mi = '08:00:00'; $mf = '13:00:00'; $ti = '13:00:01'; $tf = '18:00:00'; $result_os_tard = "SELECT * FROM sis_suporte WHERE tecnico = '$func' AND visita BETWEEN '$hoje $ti' AND '$hoje $tf' LIMIT 5"; $resultado_os_tard = mysqli_query($mysqli, $result_os_tard); while($dados = mysqli_fetch_assoc($resultado_os_tard)){ ?> <tr> <td><a href="os.php?os=<?php echo $dados['chamado']; ?>"> <?php if ($dados['status'] == 'aberto'){ echo '<span class="label label-danger">Aberto</button>'; } if ($dados['status'] == 'fechado'){ echo '<button class="label label-success">Fechado</button>'; } ?> </a></td> <td><a href="os.php?os=<?php echo $dados['chamado']; ?>"><?php echo mb_strimwidth(utf8_encode($dados['nome']), 0, 15, "..."); ?></a></td> <td><a href="os.php?os=<?php echo $dados['chamado']; ?>"><?php echo strtoupper(mb_strimwidth(utf8_encode($dados['assunto']), 0, 4)); ?></a></td> <td><a href="os.php?os=<?php echo $dados['chamado']; ?>"><?php echo mb_strimwidth(utf8_encode($dados['chamado']), 0, 15, "..."); ?></a></td> </tr> <?php } ?>
    • By martinsfm
      Boa Noite senhores(as), tenho uma missão na minha empresa e estou sem saída ainda no momento.
      A TI disponibilizou alguns endereços para criação no WordPress, bom com isso tenho que fazer que uma planilha que fica na rede apareça nessa pagina e se atualize a cada X seg/min bom até ai entendi, tudo certo. Porem a questão é como vou colocar uma planilha que está na rede interna dentro da pagina. Não consigo pensar em nada sem ter que ficar fazendo Upload, preciso de algo automático, o arquivo deve ser carregado constantemente.
      Qualquer dica será bem vinda!
      Desde de já agradeço a atenção de todos.
       
      att,
      Fabrício Martins

    • By Bombardi
      Olá pessoal, todos bem? espero que sim ... 
       
      Sou iniciante em JavaScript, e estou me preparando para iniciar um curso de Desenvolvimento Web Full Stack. 
       
      Acabei me daparando com algumas dificuldades com funções com o laço FOR, a minha dúvida foi em dois exercicios. Espero que possa contar com a ajuda de vocês na solução dos exercicios, e se possivel, até mesmo apontar onde eu estou errando, para que eu posso melhorar nesses pontos.
       
      Segue o primeiro Exercicio
       
       
      Segue o segundo exercicio: 

       
      Me desculpem qualquer coisa, e desde já, obrigado pela ajuda de todos! 
       
×

Important Information

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