Ir para conteúdo

Arquivado

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

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";
   // }


?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para inserir ignorando os já existentes.

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

 

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

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

 

Compartilhar este post


Link para o post
Compartilhar em outros 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;

?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por marsolim
      Olá a todos. Venho com um probleminha para o qual não encontrei resposta. Talvez, eu não tenha sabido os termos certos para pesquisar. É o seguinte... estou tentando incluir, em uma lista array, índices com valores montados em uma variável a partir de outra array e não estou a conseguir. Atualmente, meu código é o seguinte...
      var ids = {     "joby": "track 01",     "dobby": "track 02",     "medz": "track 03",     "decks": "track 04,     "tecks": "track 05",     "assud": "track 06",     "mand": "track 07",     "daly": "track 08", }; var lstIds = []; for(i in ids){         lstIds[i] =  {         dock: ids[i],         adb: 0,         mdc: 0,         bah: 0,         tek: 0,         dep: 0,         tos: 0     }; }  
      Até aqui ok. É o que tenho no momento. O que estou querendo fazer é colocar, no lugar das linhas de adb: 0 até dep: 0, outra array que criei com esses índices, porque pode ser que eu precise adicionar mais valores e eu quero fazer isso na array nova porque vou usar ela em vários lugares e eu teria que alterar em todos se não fizer essa modificação. Fazendo ela, eu alteraria apenas nela mesmo. Então, agora, com a array nova, seria algo assim:
      var ids = {     "joby": "track 01",     "dobby": "track 01",     "medz": "track 01",     "decks": "track 01",     "tecks": "track 01",     "assud": "track 01",     "mand": "track 01",     "daly": "track 01", }; var juds = ["adb", "mdc", "bah", "tek", "dep"]; //lista nova com os valores var lstIds = []; for(i in ids){         lstIds[i] =  {         dock: ids[i],         adb: 0,         mdc: 0,         bah: 0,         tek: 0,         dep: 0,         tos: 0     }; }  
      O que eu preciso é incluir os valores de juds em lstIds. Da forma que está, não consigo fazer um for dentro do outro for para pegar esses dados e não consigo, também, criar ele fora e inserir com variável, tipo:
      var fJuds = ""; for(i in juds){     fJuds += juds[i] + ": 0,"; } for(i in ids){         lstIds[i] =  {         dock: ids[i],         fJuds // Aqui eu incluiria a variável no lugar das linhas...         tos: 0     }; }  
      Bem, o que eu queria saber mesmo é como eu poderia inserir uma variável no meio duma lista desse tipo... se é possível.
       
      Agradeço pela atenção...
    • Por Kefatif
      Prezados, boa tarde!
       
      Estou tentando fazer com que meu sistema grave num campo chamado "ULTIMO_ACESSO" a data após o login do usuário.
       
      Para isso estou tentando com o seguinte código:
      $sqlultimoacesso = "UPDATE USUARIOS set ULTIMO_ACESSO = curdate() WHERE ID_USUARIO = ".$row["ID_USUARIO"]; Mas não estou conseguindo, alguém poderia me auxiliar?
       
      Agradeço desde já pela ajuda!
    • Por marcossantana10
      Faço uma consulta no banco para buscar uma lista de horários, depois preciso comparar esse resultado com um array só de horários que eu possuo. Utilizei o código abaixo pra isso:
       
      //dados do array $h_indisponiveis separados por _ (ilustrativo) 13:20:00_13:40:00_14:00:00_14:20:00_18:40:00_19:00:00_21:20:00 $sql = "MINHA CONSULTA"; $sql=$pdo->query($sql); if ($sql->rowCount() > 0) { $result = array('error'=>false, 'data' => array()); foreach ($sql as $row) { $horario['id'] = $row['id']; $horario['hora'] = $row['hora']; $horario['tempo'] = $row['tempo']; for($i=0; $i<$sizeArray; $i++){ if ($h_indisponiveis[$i] == $row['hora']){ $horario['disponivel'] = 'n'; } else { $horario['disponivel'] = 's'; } } array_push($result['data'], $horario); } echo json_encode($result); }  
      O problema é que ele não está retornando todas as correspondências entre o objeto da consulta e o array, apenas a última. Ao invés de marcar 6 resultados como "disponivel = n", ele só marca um. Como posso corrigir
       

    • Por 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.
    • Por 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.
×

Informação importante

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