emmanuelsiqueira30 Postado Agosto 8, 2018 Denunciar Share Postado Agosto 8, 2018 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wash Postado Agosto 8, 2018 Denunciar Share Postado Agosto 8, 2018 (editado) 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 Agosto 8, 2018 por wash Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 emmanuelsiqueira30 Postado Agosto 8, 2018 Autor Denunciar Share Postado Agosto 8, 2018 1 minuto atrás, wash disse: 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? Sim exatamente isso. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wash Postado Agosto 8, 2018 Denunciar Share Postado Agosto 8, 2018 (editado) 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 Agosto 8, 2018 por wash Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 emmanuelsiqueira30 Postado Agosto 9, 2018 Autor Denunciar Share Postado Agosto 9, 2018 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); } } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wash Postado Agosto 9, 2018 Denunciar Share Postado Agosto 9, 2018 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(); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 emmanuelsiqueira30 Postado Agosto 9, 2018 Autor Denunciar Share Postado Agosto 9, 2018 Ta dando esse erro quando adiciono esse trecho Parse error: syntax error, unexpected '$string_to_compare' (T_VARIABLE) in C:\xampp\htdocs\bciv2\insbl2.php on line 48 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
emmanuelsiqueira30
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
regbl.txt
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
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.