• Nenhum resultado encontrado

ARQUIVOS PLANOS EM PHP

N/A
N/A
Protected

Academic year: 2021

Share "ARQUIVOS PLANOS EM PHP"

Copied!
5
0
0

Texto

(1)

ARQUIVOS PLANOS EM PHP

29 maio 2010 – Marcelo Pessôa

Os arquivos planos são aqueles utilizados para armazenamento de dados sem a necessidade de uso de banco de dados.

É útil para armazenamento de pequena quantidade de dados por ser mais simples e rápido do que o uso de um banco de dados.

Esta

dica de programação

mostra a criação de um arquivo texto contendo dados, uma rotina de leitura de dados do arquivo e sua apresentação em uma página HTML

Criação de dados em arquivos texto

Uma forma comum de armazenamento de dados é utilizar arquivos texto –que podem ser editados em qualquer editor- para armazenar dados. Nesses casos, delimitam-se os campos com ; e os strings com “ conforme abaixo:

“ bitola 15”;1,50;1,6500;10,4; “bitola 16”;1,34;1,3000;13,2; “bitola 17”;1,20;1,0400;16,6;

Bitola 15 é um string (caracteres) que mostra o conteúdo do primeiro campo. Os campos seguintes possuem os conteúdos 1,5 mm que corresponde ao diâmetro, 1,6500 mm2 e 10,4 Ω/km.

Essa forma é fácil de identificar os campos e recuperar os dados. Observar que não há espaços em branco entre os itens dentro do campo.

Como os registros são idênticos em número de informações, basta fazer uma malha de controle para extrair os dados.

No aplicativo que contém dados é importante acompanhar o formato dos dados. Por exemplo, o conjunto de caracteres e os formatos de data.

Nessa dica de programação, o arquivo com os dados é denominado NFios.txt e será utilizado para leitura dos dados.

Se o arquivo Nfios.txt for aberto com o Bloco de Notas o arquivo possui uma ínica linha. Se esse arquivo for aberto no Notepad++ observar que cada registro é apresentado em uma linha separada. Isso porque existe, no fim de cada registro um comando CR-carriage return para pular de linha. Como esse caracter não é interpretado no Bloco de Notas, fica tudo em somente uma linha. A rotina que vai ser construída mantém esse caracter no string lido pois ele não atrapalha. Se na programação for necessário eliminar esse caracter, pode-se construir uma rotina para isso.

(2)

Rotina de leitura do arquivo

A leitura do arquivo texto é feita por um loop que está representado na Figura 1. Essa figura representa um diagrma denominado Diagrama de Nassi-Schneiderman que é usado para representar algoritmos complexos.

O programa em PHP impelmenta esse diagrama.

A idéia do programa é ler o arquivo e armazenar os dados em uma matriz para poder ser trabalhada mais tarde. A matriz é montada com as duas malhas For com as variáveis $linha e $coluna.

As malha while é usada para concatenar os dados lidos. Assim, o arquivo é lido caracter a caracter e, não sendo aspas (“) nem ponto e vírgula (;) –que são os delimitadores- os dados são concatenados para recuperar o conteúdo.

Figura 1-Diagrama de Nassi Schneiderman – lógica de leitura

A variável $bit_inicio identifica quem está sendo lido. O valor 0 significa que está em fase de início de leitura do dado. O valor N significa que o dado lido é numérico e o delimitador é apenas o ponto e vírgula. O valor C sognifica que estão sendo lidos caracteres e portanto delimitados por aspas que precisam ser descartadas. Na programação implementada, o tratamento dos tipos de dados numérico e caracter é idêntico.

(3)

Código implementado

O código seguir implementa a rotina acima descrita na Figura 1. Para facilitar seu uso, está implementada na forma de uma função. Os parâmetros são nome do arquivo ($arquivo), número máximo de linhas ($maxL) e número máximo de colunas ($maxC). O resultado está apresentado no array $matriz que poderá ser usado externamente. Para isso, nessa rotina o comando return $matriz torna essa variável acessível pelo programa que chamou a função.

function le_arquivo ($arquivo,$maxL,$maxC) {

$file=fopen("$arquivo","r") or exit("Arquivo não encontrado");

$concatena=""; $bit_inicio=0; // Loop de linhas for ($linha=0;$linha<$maxL;$linha++) // loop de colunas { for ($coluna=0;$coluna<$maxC;$coluna++) { $fim_string=0; while ($fim_string==0) { $carac=fgetc($file); if ($carac==chr(34)) {// sim é aspas

// nesse ramo o dado é string if ($bit_inicio==0) { $bit_inicio="C";

$fim_string=0; }

else // $bit_inicio não é nulo: armazena { $matriz[$linha][$coluna]=$concatena;

$concatena=""; $fim_string=1; $bit_inicio=0; } }

else // não é aspas

// nesse ramo o dado é numérico { if ($carac==chr(59))

{ // sim é ponto e vírgula

$matriz[$linha][$coluna]=$concatena;

$concatena=""; $fim_string=1; $bit_inicio="N"; } else

{ // não é ponto e vírgula if ($carac==chr(44)) { // sim, é vírgula $carac=chr(46);} //transforma em ponto $concatena=$concatena.$carac; } }

(4)

} }

} fclose($file); return $matriz;

// o comando return indica que essa função retorna o recurso $matriz }

?>

Progama que chama a função

O programa que chama a função pode ser implementado da seguinte forma:

<!-- organização do arquivo: Bitola , Diâmetro, Área e Resitência--> <!-- prepara página HTML para mostrar conteúdo do arquivo -->

<!-- OK! -->

<!-- transformar o arquivo em função -->

<html> <head>

<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">

<title>Fios de Trafo</title> </head>

<body>

<h1>

<img src="estilo_arquivos/antares_logo.gif" align="left" widht="250" height="68"/> Tabela de Fios de Trafos

<img src="estilo_arquivos/cao_detetive.jpg" align="right" widht="68" height="68"/>

<hr/> </h1>

<table border="1" align="center" width="30%">

<tr> <th>Bitola</th> <th>Diâmetro</th> <th>Área</th> <th>Resistência</th> </tr> <tr> <th>AWG</th> <th>mm</th> <th>mm2</th> <th>Ohms/km</th> </tr> <?php require ("Funcao_Le_Arquivos.php");

(5)

$maxL=26; $maxC=4;

$nucleo = le_arquivo ( "fios.txt",$maxL,$maxC); for ($linha=0;$linha<$maxL;$linha++) // loop de colunas { echo("<tr>"); for ($coluna=0;$coluna<$maxC;$coluna++) { $fim_string=0; echo("<td>"."<center>".$nucleo[$linha][$coluna]."</center>"."</td>"); } echo("</tr>"); } ?> </table> </body> </html>

Observar que o arquivo do programa possui a extensão .php mas toda parte inicial está em HTML. O trecho que possui programação para a leitura da matriz está em PHP. O comando require (Funcao_Le_Arquivos.php”) é colocado para incluir o arquivo que contém a função de leitura do arquivo.

Como usar

Abrir a pasta de

truques e dicas

e copiar a pasta zipada. Nesta pasta estão os programas fonte referenciados neste documento e o arquivo com os dados da tabela de fio.

Instalar os arquivos nos respectivos lugares. Fazer as adaptações necessárias com relação aos endereços de onde estão localizados os arquivos. Executar o programa a partir do navegador.

Referências

Documentos relacionados

Also due to the political relevance of the problem of repressing misguided employment relationships, during the centre-left Prodi Government (2006-2008) and the

Mineração de conhecimento interativa em níveis diferentes de abstração: Como é  difícil  prever  o  que  exatamente  pode  ser  descoberto  de  um  banco 

Em relação aos conhecimentos de saúde oral constatou-se que pais/encarregados de educação e crianças estão informados sobre a presença, ou não, de dentes cariados, bem como,

Como objetivos específicos pretendeu-se iden- tificar os taxa existentes nesta gruta, determinar a riqueza de es- pécies de sua comunidade; verificar a influência de fatores

A baixa taxa de desconto ao longo dos anos de produção do campo, para o cálculo da função objetivo, aliada a baixa produção de água que a locação de

Brahman a Campo Gir (dupla aptidão) Gir Leiteiro Pré-classificação Nelore Sindi 03.05 (Quinta-feira) Brahman Guzerá Nelore Sindi Tabapuã Campeonato Modelo Frigorífico

The SUnSET bovine spermatozoa results demand the use of other translation elongation inhibitors, namely emetine, in place of cycloheximide, a competitive inhibitor of the

Outro aspecto a ser observado é que, apesar da maioria das enfermeiras referirem ter aprendido e executado as fases do processo na graduação, as dificuldades na prática