Ir para conteúdo

POWERED BY:

Arquivado

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

designfelipe

Importar TXT via PHP no MySQL

Recommended Posts

Opa, boa tarde a todos!

 

Bom meu problema é o seguinte:

Na empresa onde trabalho nós temos um programa que roda em plataforma windows e que exporta os dados em TXT, precisamos importar esses dados para MySQL via PHP, esses dados que vão ser importados atualizariam o valor e a quantidade através do código dos produtos que já se encontram no banco de dados MySQL. E se o código de produto que foi importado não for encontrado no banco MySQL, seriam exibidos em outra pagínasem serem incluídos no banco. Aparentemente é simples, mas estou encontrado dificuldades. Abaixo estou colocando os esquemas do TXT e da tabela MySQL.

 

Esquema que o TXT é importado do programa:

 

CodigoProdutoLoja|Valor|Quantidade

 

Esquema da tabela MySQL:

 

codprod, valor, qntd

 

Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá designfelipe,

 

Então procura direitinho no forum pq tem muitos scripts de exemplo sobre isso aqui.

 

Mas tipo quando faço importação com muitos dados gosto de usar a função "LOAD DATA LOCAL INFILE" do MySQL que e muito mais rápido.

 

No seu caso você pode abrir o arquivo e verificar cada registro se aquele produto "CodigoProdutoLoja" esta cadastrado se tiver você faz o update se não você faz o insert.

 

Espero q tenha entendido.

 

t++++

abracos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera eu consegui achar um script que resolve parte do problema, eu consgui inserir os dados, porém tentei modifica-lo para atualizar, mas dá um erro dizendo:

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'teste2=teste-k teste3=teste-l' at line 1

 

Vejam o código:

$tabela = "teste";
$arquivo = 'teste.txt';

$arq = fopen($arquivo,'r');

while(!feof($arq))
for($i=0; $i<1; $i++){
	if ($conteudo = fgets($arq)){
		$ll++;
		$linha = explode('|', $conteudo);
	}
	
	$sql = "UPDATE $tabela SET teste1=$linha[0] teste2=$linha[1] teste3=$linha[2]";
	//$sql = "INSERT INTO $tabela (teste1, teste2, teste3) VALUES ('$linha[0]', '$linha[1]', '$linha[2]')";
	$result = mysql_query($sql) or die(mysql_error());
	$linha = array();// linpa o array de $linha e volta para o for
}
echo "quantidade de linhas importadas = ".$ll;

Compartilhar este post


Link para o post
Compartilhar em outros sites

você ja tem esses dados no DB q você esta querendo fazer o UPDATE????

 

dentro do FOR coloca assim echo $sql pra você ver oq a query esta mandando para o DB.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom coloca aspas simples entre cada coluna e virgula. Testei aqui e funfou legal tanto insert como update só coloquei um campo a mais na tabela com codigo do cliente.

 

$sql = "UPDATE $tabela SET nome='".$linha[1]."', email='".$linha[2]."'
WHERE id = '".$linha[0]."'";

como lhe falei nesses casos e bom mandar mostra a query "echo $sql" pra você ver oq esta sendo enviado para o DB ai fica mais facil de achar o erro.

 

ha meu arquivo esta assim tambem:

 

1;nome1;email1;

2;nome2;email2;

3;nome3;email3;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou cara, eu tava errando nas aspas mesmo.

 

Aproveitando, neste mesmo script quero que ao importar o TXT e fazer o UPDATE, se o ID não existir no banco de dados, ele retorna mostrando somente os ID's que não existem no banco.

 

Tentei fazer um IF especificando isso, mas ele termina exibindo todos, até os que foram incluídos.

 

Tem jeito? hehehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom esta ai, se tiver os dados no DB ele faz UPDATE se não faz o INSERT.

 

$tabela = "teste";
	$arquivo = 'arquivo.txt';

	$arq = fopen($arquivo,'r');

	while(!feof($arq))
		for($i=0; $i<1; $i++){
			if ($conteudo = fgets($arq)){
				$ll++;
				$linha = explode(';', $conteudo);
			}

			$sql_cns = mysql_query("SELECT id FROM $tabela WHERE id = '".$linha[0]."'")
		or die (mysql_error());
			
			$row_cns = mysql_num_rows($sql_cns);
		if($row_cns == 0){
				mysql_query("INSERT INTO $tabela (id, nome, email) VALUES ('$linha[0]','$linha[1]', '$linha[2]')")
			or die (mysql_error());	
		}else{
				 mysql_query("UPDATE $tabela SET nome='".$linha[1]."', email='".$linha[2]."' WHERE id = '".$linha[0]."'")
			 or die (mysql_error());
			}		 
			
			$linha = array();// linpa o array de $linha e volta para o for
		  
		 }
		 echo "<script>
				   alert('-----IMPORTAÇÃO EFETUADA COM SUCESSO-----');
				   window.location = 'inicio.php?pg=principal';
			   </script>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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