Ir para conteúdo
Fórum Script Brasil
  • 0

Verificar registos para evitar duplicidade em arquivo txt com php


emmanuelsiqueira30

Pergunta

Pessoal por favor se alguém puder me ajudar neste problema eu fico muito agradecido.

Estou tentando verificar todo o arquivo txt em php para evitar cadastros com duplicidade, porém quando vou inserir cadastra sem verificar.

Vou postar o código:

insbl.php

<?php

	session_start();
	
	   	$cod_mun_bl = $_POST['cod_mun_bl'];
		$uso_proc_data_alt = date('Y-m-d');
		$bairro_bl = $_POST['bairro_bl'];
		$distrito_bl = $_POST['distrito_bl'];
		$setor_bl = $_POST['setor_bl'];
		$secao_bl = $_POST['secao_bl'];
		$cod_bl = $distrito_bl . $setor_bl . $secao_bl;
		$cep_bl = $_POST['cep_bl'];
		$cod_logra_bl = $_POST['cod_logra_bl'];
		$logra_bl = $_POST['logra_bl'];
		$num_de_bl = $_POST['num_de_bl'];
		$num_ate_bl = $_POST['num_ate_bl'];
		$data_bl = $_POST['data_bl'];
		$valor_bl = $_POST['valor_bl'];
		$coleta_lixo_bl = $_POST['coleta_lixo_bl'];
		$limp_pub_bl = $_POST['limp_pub_bl'];
		$ilum_pub_bl = $_POST['ilum_pub_bl'];
		$ener_eletr_bl = $_POST['ener_eletr_bl'];
		$rede_tel_bl = $_POST['rede_tel_bl'];
		$rede_agua_pot_bl = $_POST['rede_agua_pot_bl'];
		$rua_pav_bl = $_POST['rua_pav_bl'];
		$rede_esg_bl = $_POST['rede_esg_bl'];
		$rede_agua_pluv_bl = $_POST['rede_agua_pluv_bl'];
		$rua_placa_bl = $_POST['rua_placa_bl'];
		$quant_esquina_bl = $_POST['quant_esquina_bl'];
		$n_lei_bl = $_POST['n_lei_bl'];
		$data_cad_bl =  date('Y-m-d');
		$ass_bl = $_SESSION['usuario'];
		$obs_bl = $_POST['obs_bl'];
						
		//PREPARA O CONTEÚDO A SER GRAVADO
		$conteudo =	"
$cod_mun_bl,$uso_proc_data_alt,$bairro_bl,$distrito_bl,$setor_bl,$secao_bl,$cod_bl,$cep_bl,$cod_logra_bl,$logra_bl,$num_de_bl,$num_ate_bl,$data_bl,$valor_bl,$coleta_lixo_bl,$limp_pub_bl,$ilum_pub_bl,$ener_eletr_bl,$rede_tel_bl,$rede_agua_pot_bl,$rua_pav_bl,$rede_esg_bl,$rede_agua_pluv_bl,$rua_placa_bl,$quant_esquina_bl,$n_lei_bl,$data_cad_bl,$ass_bl,$obs_bl";

		
		
		//ARQUIVO TXT
		$arquivo = "regbl.txt";
		
		if (!$abrir = fopen($arquivo, "a")) {
			echo  "Erro ao abrir o arquivo ($arquivo)";
			exit;
		}
		else {
			if (strpos(file_get_contents($arquivo),$cod_bl)) {
				if (!fwrite($abrir, $conteudo)) {
					echo "<script>alert('Erro ao escrever no arquivo ($arquivo)'); location='cadbl.php';</script>";
					exit;
				}
				else {
					echo "<script>alert('Cadastro realizado com sucesso.'); location='cadbl.php';</script>";
				}
	 
				fclose($abrir);		
			}
			else {
				echo "<script>alert('Existe um registro duplicado no arquivo ($cod_bl)'); location='cadbl.php';</script>";
				exit;
			}
		}
?>

 

regbl.txt


15581851,2018-08-08,TIMBÍ,1541851,454752,72742,154185145475272742,51541-222,42742,Rua Tal,1500,2345,2018-01-08,5151,SIM,SIM,SIM,SIM,SIM,SIM,SIM,SIM,SIM,SIM,45,1.254/2018,2018-08-08,saulo,NENHUMA.
45,2018-08-08,TIMBÍ,2,3,4,234,55555-999,6,Rua Tal,7,8,2018-08-08,5151,SIM,SIM,SIM,SIM,SIM,SIM,SIM,SIM,SIM,SIM,45,1.254/2018,2018-08-08,saulo,NENHUMA.
45,2018-08-08,TIMBÍ,2,3,4,234,55555-999,6,Rua Tal,7,8,2018-08-08,5151,SIM,SIM,SIM,SIM,SIM,SIM,SIM,SIM,SIM,SIM,45,1.254/2018,2018-08-08,saulo,NENHUMA.

 

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Não entendi direito.
O sr. precisa verificar se no .txt já possui um determinado registro?
pra evitar que o .txt fique com registros duplicados?

Editado por wash
Link para o comentário
Compartilhar em outros sites

  • 0

E onde está o trecho que faz a verificação no .txt?

Você vai precisar abrir o .txt e verificar linha por linha, se há algum dado igual ao postado.

pode ser antes de:
 

//PREPARA O CONTEÚDO A SER GRAVADO
		$conteudo =	"
//ARQUIVO TXT
$arquivo = "regbl.txt";

// abrir o txt para averiguação de igualdade
$linhas = file($arquivo, FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);

$string_to_compare = implode(',', $_POST);

foreach ($linhas as $linha) {
  // se a linha do .txt for igual a linha com os dados postados
  if ($linha == $string_to_compare) {
    // não gravar os dados postados
    echo '<div class="alert alert-warning">Esses dados já se enctram cadastrados no .txt, chefe!</div>';
    
    // se a linha não for igual
  } else {
    // escreva aqui o procedimento para gravar os dados postados
    
  }
}
Editado por wash
Link para o comentário
Compartilhar em outros sites

  • 0
16 horas atrás, wash disse:

E onde está o trecho que faz a verificação no .txt?

Você vai precisar abrir o .txt e verificar linha por linha, se há algum dado igual ao postado.

pode ser antes de:
 


//PREPARA O CONTEÚDO A SER GRAVADO
		$conteudo =	"

//ARQUIVO TXT
$arquivo = "regbl.txt";

// abrir o txt para averiguação de igualdade
$linhas = file($arquivo, FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);

$string_to_compare = implode(',', $_POST);

foreach ($linhas as $linha) {
  // se a linha do .txt for igual a linha com os dados postados
  if ($linha == $string_to_compare) {
    // não gravar os dados postados
    echo '<div class="alert alert-warning">Esses dados já se enctram cadastrados no .txt, chefe!</div>';
    
    // se a linha não for igual
  } else {
    // escreva aqui o procedimento para gravar os dados postados
    
  }
}

wash coloquei a parte do procedimento de gravação, está gravando no txt porém não está fazendo a verificação está gravando direto:

//ARQUIVO TXT
		$arquivo = "regbl.txt";
		
		// abrir o txt para averiguação de igualdade
		$linhas = file($arquivo, FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);

		$string_to_compare = implode(',', $_POST);

		foreach ($linhas as $linha) {
		  // se a linha do .txt for igual a linha com os dados postados
		  if ($linha == $string_to_compare) {
			// não gravar os dados postados
			echo '<div class="alert alert-warning">Esses dados já se enctram cadastrados no .txt, chefe!</div>';
			
			// se a linha não for igual
		  } else {
			// escreva aqui o procedimento para gravar os dados postados
			$conteudo =	"
$cod_mun_bl,$uso_proc_data_alt,$bairro_bl,$distrito_bl,$setor_bl,$secao_bl,$cod_bl,$cep_bl,$cod_logra_bl,$logra_bl,$num_de_bl,$num_ate_bl,$data_bl,$valor_bl,$coleta_lixo_bl,$limp_pub_bl,$ilum_pub_bl,$ener_eletr_bl,$rede_tel_bl,$rede_agua_pot_bl,$rua_pav_bl,$rede_esg_bl,$rede_agua_pluv_bl,$rua_placa_bl,$quant_esquina_bl,$n_lei_bl,$data_cad_bl,$ass_bl,$obs_bl";
			fwrite($arquivo, $conteudo);
			echo "<script>alert('Cadastro realizado com sucesso.'); location='cadbl.php';</script>";
			fclose($abrir);	
		  }
		  		
		  }

 

Link para o comentário
Compartilhar em outros sites

  • 0

Precisamos averiguar se o conteúde de $linhas veio realmente em $linhas

depois de 
// abrir o txt para averiguação de igualdade
        $linhas = file($arquivo, FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
// debugar $linhas
echo '<pre>';
print_r($linhas);
echo '</pre>';
die();

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...