lojavirt 0 Denunciar post Postado Fevereiro 2, 2009 Preciso importar dados de um txt para um db Mysql. Estou usando o script php abaixo, executando o mesmo substitui os dados dos campos mencionados (id, preco, estoque) da tabela "produtos", acontece que a tabela possui mais campos que são afetados substituindo os valores por NULL. Precisava que somente os campos mencionados (id, preco, estoque) tivessem seus dados alterados, os demais por exemplo (nome, fabricante...) continuassem com seus respectivos valores. Script: ------------------------------------------------------------------------------------------------------------------ <?php $conexao = mysql_connect("localhost", "xxxx", "xxxx"); if($conexao) { mysql_select_db("xxxxx", $conexao) or die("O banco solicitado não pode ser utilizado : . mysql_error()"); } else{echo "não foi possivel estabelecer uma conexão";} //======================================== $tabela = "produtos"; //tabela do banco $arquivo = 'aqruivodetexto.txt';// aquivo a ver importado txt $arq = fopen($arquivo,'r');// le o arquivo txt while(!feof($arq)) for($i=0; $i<1; $i++){ if ($conteudo = fgets($arq)){//se extrair uma linha e não for false $ll++; // $ll recebe mais 1 ==== em quanto o existir linha sera somada aqui $linha = explode(';', $conteudo);// divide por coluna onde tiver ponto e virgula } $sql = "Replace into $tabela(id, preco, estoque) VALUES ('$linha[0]', '$linha[1]', '$linha[2]')"; $result = mysql_query($sql) or die(mysql_error()); $linha = array();// limpa o array de $linha e volta para o for } echo "quantidade de linhas importadas = ".$ll; ?>----------------------------------------------------------------------------------------------------------------------- Exemplo do arquivo txt: 1501;80,00;120 1502;120,00;50 ------------------------------------------------------------------------------------------------------------------------ Compartilhar este post Link para o post Compartilhar em outros sites
Vagner P. Santos 0 Denunciar post Postado Fevereiro 2, 2009 Utilize a função UPDATE ao invés de REPLACE. UPDATE produtos SET preco = '$linha[1]', estoque = '$linha[3]' WHERE id = '$linha[0]' Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Palucoski 1 Denunciar post Postado Fevereiro 2, 2009 Olhe meu script... http://forum.imasters.com.br/index.php?showtopic=327897 Compartilhar este post Link para o post Compartilhar em outros sites
lojavirt 0 Denunciar post Postado Fevereiro 3, 2009 UPDATE produtos SET preco = '$linha[1]', estoque = '$linha[3]' WHERE id = '$linha[0]' Vagner, funcionou, mas esta tabela contém além dos campos id, valor e estoque mais campos, quando atualizo os demais campos perdem seus valores atuais e são substituidos por valor NULL. Acredito que falte uma linha indicando para não atualizar os outros campos, como por exemplo nome, descricao... Note na imagem, as duas primeiras linhas foram atualizadas, os demais campos foram substituidos com valor Null a terceira linha não foi atualizada: Compartilhar este post Link para o post Compartilhar em outros sites