Ir para conteúdo

POWERED BY:

Arquivado

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

rica mourao

[Resolvido] Deletar registros duplicados antes de fazer upar de c

Recommended Posts

Olá boa tarde pessoal,

 

Bom tenho que fazer o envio de um arquivo csv para o mysql, estou conseguindo com o script abaixo.

O problema é que eu quero que o script só grave dentro do banco de dados mysql os registros (so) que não são duplicados.

 

Alguém sabe como faço isso? ou antes do upload? ou depois que é feito o INSERT na tabela?.

 

Script:

<?php	 
	// Pasta onde o arquivo vai ser salvo
	$_ENVIO['pasta'] = 'csv/';

	// Tamanho máximo do arquivo (em Bytes)
	$_ENVIO['tamanho'] = 1024 * 1024 * 4; // 2Mb

	// Array com as extensões permitidas
	$_ENVIO['extensoes'] = array('csv');

	// Array com os tipos de erros de envio do PHP
	$_ENVIO['erros'][0] = 'Não houve erro';
	$_ENVIO['erros'][1] = 'O arquivo no envio é maior do que o limite do PHP';
	$_ENVIO['erros'][2] = 'O arquivo ultrapassa o limite de tamanho especifiado no HTML';
	$_ENVIO['erros'][3] = 'O envio do arquivo foi feito parcialmente';
	$_ENVIO['erros'][4] = 'Não foi feito o envio do arquivo';


	// Verifica se houve algum erro com o envio. Se sim, exibe a mensagem do erro
	if ($_FILES['arquivo']['error'] != 0){
		die("Não foi possível fazer o envio, erro:<br />" . $_ENVIO['erros'][$_FILES['arquivo']['error']]);
		exit; // Para a execução do script
	}
	// Caso script chegue a esse ponto, não houve erro com o envio e o PHP pode continuar

	// Faz a verificação da extensão do arquivo
	$extensao = strtolower(end(explode('.', $_FILES['arquivo']['name'])));
	if (array_search($extensao, $_ENVIO['extensoes']) === false) {
		echo "Por favor, envie arquivo com a seguinte extensões: csv";
	}
	// Faz a verificação do tamanho do arquivo
	else if ($_ENVIO['tamanho'] < $_FILES['arquivo']['size']){
		echo "O arquivo enviado é muito grande, envie arquivos de até 4Mb.";
	}	 

	// O arquivo passou em todas as verificações, hora de tentar movê-lo para a pasta
	else {
			//Modifica o nome do arquivo adicionando data e colocando uma id Unica
			$_FILES['arquivo']['name'];
			$data=date("dmY");
			$resultNome = uniqid($_FILES['name']);
			$nome_final =$data."#".$resultNome.".csv";

			// Depois verifica se é possível mover o arquivo para a pasta escolhida
			if (move_envioed_file($_FILES['arquivo']['tmp_name'], $_ENVIO['pasta'] . $nome_final)){

				    //conecta ao banco de dados
					include('conectabanco.php');

					// nome do arquivo
					$arquivo = "csv/".$nome_final;

					// ponteiro para o arquivo
					$fp = fopen($arquivo, "r");

					//processa os dados do arquivo
					$contador = 0;

					while(($dados = fgetcsv($fp, 0, ";")) !== FALSE)
							{
							$quant_campos = count($dados);							 
							if($contador == 0)
							{                                
							}else{                                
									for($i = 0; $i < 1; $i++)
									{
											//echo "<td>".$dados[$i]."</td>";
											//Armazena cada linha em uma variavel                                                                            
											$so = $dados[0];
											$inputdate = $dados[1];
											$customer = $dados[2];
											$po = $dados[3];
											$price = $dados[4];
											$status = $dados[5];
											$issue = $dados[6];
											$responsible = $dados[7];
											$enddate = $dados[8];
											$obs = $dados[9];

											$query = mysql_query("INSERT into producao(so, inputdate, customer, po, price, status, issue, responsible, enddate, obs) values('".$so."','".$inputdate."','".$customer."','".$po."','".$price."','".$status."','".$issue."','".$responsible."','".$enddate."','".$obs."')");
											echo $query;
									}                                                      
									echo "</tr>"; 
							}
							$contador++;            
					}                          
					fclose($fp);
					mysql_close($con);
			} else {

			// Não foi possível fazer o envio, provavelmente a pasta está incorreta
			echo "Não foi possível enviar o arquivo, tente novamente";
			}
	}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algumas variaveis eu tive que mudar de nome quando estiver escrito envio na vdd é u p load ou U P. é que o proxy não deixa eu digitar algumas palavras "proibidas" rsrs

 

Não tinha visto o código não gremio10, faz pouco tempo que programo em php não tenho muita prática.

 

Mais preciso do caminho inverso do CSV para o Mysql (o script que postei ja faz isso), porém preciso que apenas registros que não seja iguais os existentes na tabela do banco de dados sejam gravados.

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.