Ir para conteúdo

Arquivado

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

emmanuelsiqueira30

Inserir registros de todas as linhas do arquivo txt no banco de dados mysql

Recommended Posts

Bom dia pessoal, estou com um problema que é o seguinte tenho 3 arquivos php, 1 para receber os dados via post o insbl.php pelo arquivo cadbl.php e o exportabl.php que serve para enviar os arquivos do arquivo txt para o banco de dados, porém ao executar o arquivo expórtarbl.php somente é salvo no banco de dados a primeira linha e não são salvas as outras linhas dentro do arquivo txt, se alguém puder me ajudar desde já fico muito agradecido.

 

insbl.php

<?php

	session_start();
	
	   	$cod_mun_bl = $_POST['cod_mun_bl'];
		$uso_proc_data_alt = date('Y-m-d');
		$bairro_id_bl = $_POST['bairro_id_bl'];
		$distrito_bl = $_POST['distrito_bl'];
		$setor_bl = $_POST['setor_bl'];
		$secao_bl = $_POST['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_id_bl,$distrito_bl,$setor_bl,$secao_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\r \n";

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

		//TENTA ABRIR O ARQUIVO TXT
		if (!$abrir = fopen($arquivo, "a+",0)) {
				echo  "Erro abrindo arquivo local ($arquivo)";
				exit;
		   }

		//ESCREVE NO ARQUIVO TXT
		if (!fwrite($abrir, $conteudo, strlen($conteudo))) {
			echo "<script>alert('Erro ao cadastrar - ($arquivo)'); location='cadbl.php';</script>";
			exit;
		   }
		else {
			echo "<script>alert('Cadastro realizado com sucesso.'); location='cadbl.php';</script>";
		}

		//FECHA O ARQUIVO 
		fclose($abrir);
?>

 

cadbl.php

<!DOCTYPE html>
<html>
<head>

<?php
include("sessao.php");
?>

	<title>Boletim de Logradouros - BL</title>
	
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
</head>
<body>

<?php
   include("menu.php");
?>

	<div class="container-fluid">
		
		<div class="form-row">
			
			<div class="panel panel-default form-group col-xs-12">
				<form action="insbl.php" method="post" enctype="multipart/form-data">

					<p><h2>Boletim de Logradouros - BL</h2></p>
			    
			     	<br/>
					
					<fieldset>
						<legend>PARA USO DO PROCESSAMENTO</legend>
							<div class="form-group form-inline">
								<label for="cod_mun_bl">Código do munícipio: </label>
								<input type="text" class="form-control " name="cod_mun_bl" placeholder="Código do munícipio" required>
								
							</div>
					</fieldset>
					
					<fieldset>
						<legend>INFORMAÇÕES GERAIS</legend>		      	  
							<div class="form-group">
								
								<input type="text" class="form-control" name="textbox" id="textbox" placeholder="Digite o bairro">					
								<label for="bairro_id_bl">Bairro: </label>
								<select class="form-control" name="bairro_id_bl" id="select">
									<?php
										include ("conexao.php");
										$query = "SELECT * FROM bairros";
										$consulta = mysqli_query($con,$query); 

										while ($dados = mysqli_fetch_assoc($consulta)) { ?>
											<option value="<?php echo $dados['id_bairros']; ?>"><?php echo $dados['nome_bairros']; ?></option> <?php 
										}
									?>
								</select>
								
								<div class="form-inline">
									<label for="distrito_bl">Distrito: </label>
									<input type="text" class="form-control" name="distrito_bl" placeholder="Distrito" required>
									
									<label for="setor_bl">Setor: </label>
									<input type="text" class="form-control" name="setor_bl" placeholder="Setor" required>
									
									<label for="secao_bl">Seção: </label>
									<input type="text" class="form-control" name="secao_bl" placeholder="Seção" required>
									
									<label for="cep_bl">CEP: </label>
									<input type="text" class="form-control" name="cep_bl" placeholder="Código de logradouro" required>
									
									<label for="cod_logra_bl">Código de logradouro: </label>
									<input type="text" class="form-control" name="cod_logra_bl" placeholder="Código de logradouro" required>
									
									<label for="logra_bl">Logradouro: </label>
									<input type="text" class="form-control" name="logra_bl" placeholder="Logradouro" required>
									
									<div class="form-inline">
										de <input type="text" class="form-control" name="num_de_bl" required> até <input type="text" class="form-control" name="num_ate_bl" required>
									</div>
									
								</div>
							</div>
					</fieldset>
						  
					<div class="form-group form-inline">
						<label for="data_bl">Data: </label>
						<input type="date" class="form-control" name="data_bl" placeholder="Data" required>
								
						<label for="valor_bl">Valor: </label>
						<input type="text" class="form-control" name="valor_bl" placeholder="Setor anterior" required>
								
						<label for="coleta_lixo_bl">Coleta de lixo</label>
						<select class="form-control" name="coleta_lixo_bl">
							<option value=" "> </option>
							<option value="Sim">Sim</option>
							<option value="Não">Não</option>
						</select>
						
						<label for="limp_pub_bl">Limpeza pública</label>
						<select class="form-control" name="limp_pub_bl">
							<option value=" "> </option>
							<option value="Sim">Sim</option>
							<option value="Não">Não</option>
						</select>
						
						<label for="ilum_pub_bl">Iluminação pública</label>
						<select class="form-control" name="ilum_pub_bl">
							<option value=" "> </option>
							<option value="Sim">Sim</option>
							<option value="Não">Não</option>
						</select>
						
						<label for="ener_eletr_bl">Energia Elétrica</label>
						<select class="form-control" name="ener_eletr_bl">
							<option value=" "> </option>
							<option value="Sim">Sim</option>
							<option value="Não">Não</option>
						</select>
						
						<label for="rede_tel_bl">Rede de telefone</label>
						<select class="form-control" name="rede_tel_bl">
							<option value=" "> </option>
							<option value="Sim">Sim</option>
							<option value="Não">Não</option>
						</select>
						
						<label for="rede_agua_pot_bl">Rede de água potável</label>
						<select class="form-control" name="rede_agua_pot_bl">
							<option value=" "> </option>
							<option value="Sim">Sim</option>
							<option value="Não">Não</option>
						</select>
						
						<label for="rua_pav_bl">Rua pavimentada</label>
						<select class="form-control" name="rua_pav_bl">
							<option value=" "> </option>
							<option value="Sim">Sim</option>
							<option value="Não">Não</option>
						</select>
						
						<label for="rede_esg_bl">Rede de esgoto</label>
						<select class="form-control" name="rede_esg_bl">
							<option value=" "> </option>
							<option value="Sim">Sim</option>
							<option value="Não">Não</option>
						</select>
						
						<label for="rede_agua_pluv_bl">Rede de esgoto</label>
						<select class="form-control" name="rede_agua_pluv_bl">
							<option value=" "> </option>
							<option value="Sim">Sim</option>
							<option value="Não">Não</option>
						</select>
						
						<label for="rua_placa_bl">Rua com placa</label>
						<select class="form-control" name="rua_placa_bl">
							<option value=" "> </option>
							<option value="Sim">Sim</option>
							<option value="Não">Não</option>
						</select>
						
						<label for="quant_esquina_bl">Quantidade de esquinas: </label>
						<input type="text" class="form-control" name="quant_esquina_bl" placeholder="Quantidade de esquinas" required>
						
						<label for="n_lei_bl">Número da Lei/Denominação: </label>
						<input type="text" class="form-control" name="n_lei_bl" placeholder="Número da Lei/Denominação" required>
						
					</div>
								
						<label for="obs_bl">Observações: </label>
						<input type="areatext" class="form-control" name="obs_bl">
					</div>
					<button type="submit" name="cadastrar" id="cadastrar" class="btn btn-primary">Cadastrar</button>
	  					
				
			</form>
			</div>
		</div>
		
	</div>

<script>
jQuery.fn.filterByText = function(textbox, selectSingleMatch) {
        return this.each(function() {
            var select = this;
            var options = [];
            $(select).find('option').each(function() {
                options.push({value: $(this).val(), text: $(this).text()});
            });
            $(select).data('options', options);
            $(textbox).bind('change keyup', function() {
                var options = $(select).empty().data('options');
                var search = $(this).val().trim();
                var regex = new RegExp(search,"gi");
              
                $.each(options, function(i) {
                    var option = options[i];
                    if(option.text.match(regex) !== null) {
                        $(select).append(
                           $('<option>').text(option.text).val(option.value)
                        );
                    }
                });
                if (selectSingleMatch === true && $(select).children().length === 1) {
                    $(select).children().get(0).selected = true;
                }
            });            
        });
    };

    $(function() {
        $('#select').filterByText($('#textbox'), false);
      $("select option").click(function(){
        alert(1);
      });
    });
</script>

</body>
</html>

 

exportabl.php

<?php

	include("conexao.php");
	
	$arquivo = fopen("regbl.txt","r");

		//Remove quebra de linha que vem no fgets
$linhas = fgets($arquivo);

//Divide em um array
$colunas = explode(',', $linhas);

//Passa os valores como 
foreach ($colunas as &$coluna) {
     //Escapa o valor de cada coluna, como é referencia vai aplicar diretamente a array
     $coluna = mysqli_real_escape_string($con, $coluna);
	 
	 //Junta os valores da array de volta em um string e aplica as aspas simples
$linhas = '\'' . implode('\', \'', $colunas) . '\'';

$sql = "INSERT INTO bl (cod_mun_bl,uso_proc_data_alt,bairro_id_bl,distrito_bl,setor_bl,secao_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) 
VALUES ($linhas)";

}

$result = mysqli_query($con, $sql);

			
			if ($result) {
					echo "<script>alert('Cadastro realizado com sucesso.'); location='./cadbl.php';</script>";
				} else {
					echo "<script>alert('Erro ao cadastrar.'); </script>";
				}
				
				$erro = mysqli_error($con);
				echo $erro;
				
				echo $sql;
			
			$con->close();	
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!
Por quê precisa gravar no .txt primeiro?
Por quê não usa o mesmo arquivo que gera o .txt a partir dos dados postados, para também efetuar a inserção no banco de dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 04/08/2018 at 11:26, tetsuo disse:

Olá!
Por quê precisa gravar no .txt primeiro?
Por quê não usa o mesmo arquivo que gera o .txt a partir dos dados postados, para também efetuar a inserção no banco de dados?

 

Porque o cenário é o seguinte, nos locais onde vão ser efetuados os cadastros não possuem internet nem chega sinal de celular ai quero gravar em um arquivo txt para depois voltar a base conectar a internet e enviar os dados do txt para o banco de dados online.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
    • Por First
      Olá a todos!
       
      Quando eu tento fazer o login me mostra esse erro "Could not log you in."; Alguém sabe me ajudar a resolver esse problema no meu código?
      <?php require_once("core/init.php"); if (Input::exists()) { if (Token::check(Input::get("token"))) { $validate = new Validate(); $validation = $validate->check($_POST, array( "username" => array("required" => true), "password" => array("required" => true) )); if ($validation->passed()) { $user = new User(); $remember = (Input::get("remember")) === "on" ? true : false; $login = $user->login(Input::get("username"), Input::get("password"), $remember); if ($login) { Session::flash("home", "Welcome back!"); Redirect::to("index.php"); } else { echo "Could not log you in."; } } else { foreach ($validation->errors() as $error) { echo $error."<BR>"; } } } } ?> <form action="" method="POST"> <div class="field"> <label for="username">Username</label> <input type="text" name="username" id="username"> </div> <div class="field"> <label for="password">Password</label> <input type="password" name="password" id="password"> </div> <div class="field"> <label for="remember"> <input type="checkbox" name="remember" id="remember"> Remember me </label> </div> <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> <input type="submit" value="Log in"> </form>  
       
      Desde já obrigado.
    • Por ckcesar
      Eu tenho uma aplicação no zend com a versão 5.6 e com o postgresql 9.6. Agora eu precisei mudar a versão do meu postgresql para o 16.1, a parte de conexão do bd e consultas sqls funciona perfeitamente, o meu problema está para acessar os meus controllers. Eles não são encontrados em nenhuma rota, quero ver se alguém já passou por esse problema para me ajudar. Obrigado.
    • Por ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
×

Informação importante

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