Ir para conteúdo

Arquivado

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

Carcleo

Lendo txt em um diretório qualquer

Recommended Posts

Pessoal, boa tarde.

 

Como eu faço para ler um arquivo txt em um diretório qualquer.

 

Tipo, eu tenho o script abaixo que recebe um $_file via post do form. Mas, para isso, o arquivbo precisa ser movido do pc do usuario para o diretório do arquivo que contem esse código.

 

Sem fazer esse upload, seria possivel ler esse txt?

 

<?php
if ($_GET["acao"]=="atualisa")
{
 $arquivo  = $_FILES["arquivo"];
 $nome     = $arquivo["name"];
 $tipo     = $arquivo["type"];

 if($tipo == "text/plain")
{
	if($nome == "teste.txt")
	{
	  //Fizemos todos os testes e esta tudo certo.
	  $arq = fopen($nome,'r'); // abre arquivo
	  $soma = 0; // para somar as compras

	  //LÊ O ARQUIVO ATÉ CHEGAR AO FIM 
	  while (!feof ($arq)) 
	  {
		//LÊ UMA LINHA DO ARQUIVO
		$linha = fgets($arq, 4096);
		//IMPRIME NA TELA O RESULTADO
		echo $linha."<br>";
	  }//FECHA WHILE

	  //FECHA O PONTEIRO DO ARQUIVO
	  fclose ($arq);  
	}
   else
   {
	   echo "<table align=\"center\" width=\"600px\" height=\"600px\"><tr><td align=\"center\" valign=\"middle\">";
	   echo "O arquivo deve se chamar teste.txt.<br>Tente novamente!";
	   echo "<br /><br />";
	   echo "Redirecionando em 10 segundos...";
	   echo "</td></tr></table>";
	   header("refresh: 10; url=?acao=form"); 
   }
}
  else
  {
   echo "<table align=\"center\" width=\"600px\" height=\"600px\"><tr><td align=\"center\" valign=\"middle\">";
   echo "O arquivo deve ser de texto do tipo txt(bloco de notas).<br>Tente novamente!";
   echo "<br /><br />";
   echo "Redirecionando em 10 segundos...";
   echo "</td></tr></table>";
   header("refresh: 10; url=?acao=form"); 
  }
}
?>
<?php
if ($_GET["acao"]=="form")
{
?>
<form name="txt_arquvo" action="?acao=atualisa" method="post" enctype="multipart/form-data">
<input type="file" name="arquivo" />
<input type="submit"  value="Atualisar"/>
</form>
<?php	
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites
Sem fazer esse upload, seria possivel ler esse txt?

 

Não. Você terá que fazer o upload. O PHP é uma linguagem server-side, o que significa que ela não se comunica com o cliente, mas sim com o servidor. Uma solução rápida pra isso é você upar o arquivo, carregar o texto dinamicamente na tela e no mesmo instante deletar o arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok.

Consegui fazer da forma abaixo.

Agora, gostaria de saber se há uma forma de conseguir o mesmo resultado com menos linhas de código.

Ou seja, optimizar esse código.

Será que tem como melhorar ele?

<?php
if ($_GET["acao"]=="atualisa")
{
if(isset($_FILES["arquivo"]))
{
 $arquivo  = $_FILES["arquivo"];
 $nome     = $arquivo["name"];
 $tipo     = $arquivo["type"];

if($tipo == "text/plain")
  {
	  if($nome == "estoque.txt")
	  {
		//Fizemos todos os testes e esta tudo certo.
		$arq = fopen($nome,'r'); // abre arquivo
		$soma = 0; // para somar as compras

		$diretorio = "estoque/";
		if(move_uploaded_file($_FILES["arquivo"]["tmp_name"], $diretorio . $_FILES["arquivo"]["name"]))
		{			
		  //LÊ O ARQUIVO ATÉ CHEGAR AO FIM 
		  while($linha = fgets($arq))  // Lê linha por linha
		  {
			  $linha_cada = explode('|', $linha);
			  //BUSCA NA BASE A COMBINAÇÃO COM CADA CODIGO

			  $busca_string= "
				 select 
				  produtos.id_produtos,  
				  produtos.nome_produtos, 
				  produtos.referencia_produtos, 
				  tamanhos.nome_tamanhos
				 from 
				   produtos
				 inner join tamanhos on produtos.id_tamanhos_produtos = tamanhos.id_tamanhos
				 where 
				   produtos.referencia_produtos='$linha_cada[0]' and 
				   produtos.nome_produtos='$linha_cada[1]' and 
				   tamanhos.nome_tamanhos='$linha_cada[2]'
							 ";

			  $busca_query= $conexao->query($busca_string);

			  if ($busca_query->num_rows>0)
			  {
				  list(
						$id_produtos,  
						$nome_produtos, 
						$referencia_produtos,
						$nome_tamanhos
					  )=$busca_query->fetch_row();
				  $atualisa_estoque_string = "
						  update produtos set estoque_produtos=".$linha_cada[3]."
						  where id_produtos=".$id_produtos;

				  $atualisa_estoque_query = $conexao->query($atualisa_estoque_string);
			  }
		  } //FIM DO WHILE
		 echo "<table align=\"center\" width=\"600px\" height=\"600px\"><tr><td align=\"center\" valign=\"middle\">";
		 echo "Estoque atualizado na base de dados!";
		 echo "<br /><br />";
		 echo "Redirecionando em 10 segundos...";
		 echo "</td></tr></table>";
		 header("refresh: 10; url=?acao=form"); 		   
	  }
	 else
	 {
		 echo "<table align=\"center\" width=\"600px\" height=\"600px\"><tr><td align=\"center\" valign=\"middle\">";
		 echo "Aconteceu um erro impevisto.<br>Tente novamente!";
		 echo "<br /><br />";
		 echo "Redirecionando em 10 segundos...";
		 echo "</td></tr></table>";
		 header("refresh: 10; url=?acao=form"); 
	 }  

	  fclose ($arq);  
	  }
	  else
	  {
		 echo "<table align=\"center\" width=\"600px\" height=\"600px\"><tr><td align=\"center\" valign=\"middle\">";
		 echo "O arquivo deve se chamar teste.txt.<br>Tente novamente!";
		 echo "<br /><br />";
		 echo "Redirecionando em 10 segundos...";
		 echo "</td></tr></table>";
		 header("refresh: 10; url=?acao=form"); 
	  }
  }
 else
 {
	 echo "<table align=\"center\" width=\"600px\" height=\"600px\"><tr><td align=\"center\" valign=\"middle\">";
	 echo "O arquivo deve ser de texto do tipo txt(bloco de notas).<br>Tente novamente!";
	 echo "<br /><br />";
	 echo "Redirecionando em 10 segundos...";
	 echo "</td></tr></table>";
	 header("refresh: 10; url=?acao=form"); 
 }
}
else
{
 echo "<table align=\"center\" width=\"600px\" height=\"600px\"><tr><td align=\"center\" valign=\"middle\">";
 echo "Você não enviu arquivo algum.<br>Tente novamente!";
 echo "<br /><br />";
 echo "Redirecionando em 10 segundos...";
 echo "</td></tr></table>";
 header("refresh: 10; url=?acao=form"); 
}
}
?>
<?php
if ($_GET["acao"]=="form")
{
?>
<h1 style="text-align:center">Atualizar estoque do site</h1>
<h1><br /> </h1>
<h2 style="text-align:center">Abra a caixa abaixo escolha o arquivo teste.txt e clike em atualizar</h2>
<h1><br /> </h1>
<div style="display:block; text-align:center" id="form">
 <form name="txt_arquvo" action="?acao=atualisa" method="post" enctype="multipart/form-data">
  <input type="file" name="arquivo" class="botoes" /><br /><br />
  <input type="submit"  value="Atualisar" onclick="javascript: abre('enviando');" />
 </form>
</div>
<br />
<div style="display:none; text-align:center" id="enviando">
<img width='120px' src='figuras/enviando.gif' title='Atualizando, aguarde' alt='Atualizando, aguarde' style='align:center' />
</div>
<?php	
}
?>
<?php $conexao->close(); ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não.

 

Não conheço.

 

Mas acessei o site e não achei local para colocar o código lá.

 

O que seria este site? Uma especie de fórum de discuções igual ao Imasters?

 

Gosto muito do Imasters.

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.