- -Stand!Membro XI
- Idade : 26
Posts : 2679
Créditos : 0
Respeito : -16
Entenda sobre PHP parte 11
Qui 25 Jun 2009, 12:15
Ficheiros
NOTA:
Relembro que APÓS se faz um submit, o PHP cria uma
variável com o nome da caixa de texto (neste caso $produto) com o
conteúdo introduzido pelo utilizador. Para verificares se essa variável
existe ou não, deves utilizar a função "isset()" q devolve VERDADEIRO,
caso a variável tenha sido declarada, ou FALSO, caso não tenha.
Resumo:
Podemos
utilizar ficheiros para guardar pequenas informações, sempre que não
possamos ter acesso a uma base de dados. Trabalhamos nos ficheiros
através de ponteiros, que vão indicando a posição do ficheiro onde nos
encontramos.
E temos diversas funções que nos permitem trabalhar com estes.
Creditos:
Postagem : BaD-DrEaM
Fonte: Truques e Dicas
- Código:
Os ficheiros permitem-nos armazenar facilmente pequenos pedaços de
informação. O método de utilização é idêntico ao utilizado em C, o que
é bastante simples. Vou apenas fazer uma abordagem aos ficheiros, visto
que é muito mais simples utilizar uma base de dados (como o MySQL) para
armazenar informação do que com os ficheiros. Em todo o caso, para os
que não tem disponível uma base de dados para trabalhar, ou pretendem
apenas armazenar pouca informação, a utilização de ficheiros pode ser o
suficiente.
Criar um ficheiro, implica guardar informação no
servidor. Logo, para que tal aconteça, a directoria onde vamos guardar
o ficheiro, deve ter permissões de leitura e escrita (muito
importante!). Em Linux, por default, quando criamos uma directoria, ela
fica apenas com permissão de escrita para o utilizador. Frequentemente
existem problemas de permissões, porque os scripts PHP (com o user id
do webserver) não estão autorizados a escrever nesses locais. Uma
maneira simples de resolver o problema é dar modo de leitura/escrita
para todos: chmod a+wr directoria (para uma solução mais
personalizada, consultar o manual do chmod).
Supondo que o problema das permissões está resolvido, vamos ver como podemos armazenar informação num ficheiro:
[color=#800080]<?
$str="Isto é um teste";
$ficheiro=fopen("teste.txt","w");
fputs($ficheiro, $str);
fclose($ficheiro);
?>[/color]
Basicamente,
o que este script faz, é abrir um ficheiro de nome "teste.txt" e
armazena lá dentro a string $str. Para tal, inicialmente utilizamos o
fopen para abrir um ponteiro de escrita ("w") para o ficheiro
"teste.txt", que fica armazenado em $ficheiro. Este ponteiro server
para podermos trabalhar com o conteúdo do ficheiro, ou seja, podemos
escrever no ponteiro, e esta operação terá efeito no ficheiro em si.
Para escrever no ficheiro utilizamos a função fputs (File PUT String).
No fim fechamos o ponteiro do ficheiro, e termina o script. Quando esta
operação acontece, conteúdo do ficheiro é gravado. Por default, o PHP
fecha todos os ponteiros de ficheiro no fim no fim do script, mas é bom
habito sermos nós a fechar.
Podemos agora fazer a leitura da string que colocamos anteriormente:
[color=#2E8B57]<?
$ficheiro=fopen("teste.txt","r");
$str=fgets($ficheiro,100);
fclose($ficheiro);
echo $str;
?>[/color]
Mais
uma vez, abrimos um ponteiro $ficheiro, desta vez de leitura ("r"),
para o ficheiro"teste.txt". Seguidamente, utilizamos a função fgets
(File GET String) para ler o conteúdo (neste caso indicamos para ler
100 bytes) do
$ficheiro. Depois fechamos o ponteiro, e escrevemos a string no fim.
-*-
Modos de abertura de um ficheiro, permitido pelo fopen:
'r' - Abre o ficheiro apenas para leitura. Posiciona o ponteiro no inicio do ficheiro.
'r+' - Abre o ficheiro para leitura e escrita. Posiciona o ponteiro no inicio do ficheiro.
'w'
- Abre o ficheiro apenas para escrita. Posiciona o ponteiro no inicio
do ficheiro, e trunca o seu tamanho para 0. Se o ficheiro não existe,
tenta cria-lo.
'w+' - Abre o ficheiro para leitura/escrita.
Posiciona o ponteiro no inicio do ficheiro, e trunca o seu tamanho para
0. Se o ficheiro não existe, tenta cria-lo.
'a' - Abre o ficheiro apenas para escrita. Posiciona o ponteiro no fim do ficheiro. Se o ficheiro não existe, tenta cria-lo.
'a+' - Abre o ficheiro para leitura/escrita. Posiciona o ponteiro no fim do ficheiro. Se o ficheiro não existe, tenta cria-lo.
-*-
Existe
muitas funções que nos ajudam a trabalhar sobre ficheiros. Algumas
dessas são usadas muito frequentemente, para verificar se o ficheiro
existe, antes de o tentarmos ler, ou então para nos indicar se, quando
estamos a ler informação de um ficheiro, já chegamos ou não ao fim do
ficheiro. Vou dar uma pequena lista e explicar ligeiramente algumas
delas. A lista completa das funções de ficheiros que podemos utilizar,
está disponível no manual em:
[url=http://www.cidadela.org/php/manual/ref.filesystem.html]http://www.cidadela.org/php/manual/ref.filesystem.html[/url]
Pequena lista de funções que são frequentes de utilizar em ficheiros:
fopen
- Abre um ficheiro, e devolve um ponteiro para este, para que se possa
executar operações relacionadas com o ficheiro em causa.
fclose
- Fecha o ficheiro (guarda a informação modificada) e destroi o
ponteiro de referência. Após um fclose de um ponteiro, só podemos
voltar a aceder a informação do ficheiro, voltando a abri-lo com o
fopen.
fgets - Le um determinado numero de bytes de um ficheiro.
fputs - Escreve informação num ficheiro.
file_exists
- Verifica se um ficheiro existe. É recomendado fazer esta verificação
para não tentar-mos abrir (para leitura) um ficheiro que não existe
originando assim a um erro, por parte do PHP.
feof - Verifica se
o ponteiro se encontra no fim do ficheiro. Útil para quando temos um
ciclo while para ler a informação de um ficheiro. A lógica normalmente
utilizada é: "Enquanto não estamos no fim do ficheiro, lê
informação." while (!feof($ficheiro)) {...}
Estas funções já nos permitem fazer pequenos scripts que armazenem informação num ficheiro.
Vamos então utilizar algumas funções e construir um contador, para nos dizer quantas vezes uma página foi vista:
[color=#4169E1]<?
//verificar existência do contador
if (file_exists("contador.txt"))
{
//ficheiro existe, vamos abrir para leitura
$ficheiro=fopen("contador.txt","r");
//Já temos o ponteiro, retiramos o numero de visitas:
$visitas=fgets($ficheiro,100);
//incrementamos uma visita ao total de visitas
$visitas++;
//fechamos o ponteiro de leitura do ficheiro
fclose($ficheiro);
}
else
{
//caso não exista ficheiro, esta é a primeira visita
$visitas=1;
}
//agora actualizamos/criamos o ficheiro para o numero das visitas
$ficheiro=fopen("contador.txt","w");
//escrevemos o total das visitas
fputs($ficheiro,$visitas);
//e fechamos o ficheiro
fclose($ficheiro);
echo "Número de visualizações da página: $visitas";
?>[/color]
Este
é um exemplo simples de como se pode ler e escrever num ficheiro.
Primeiro verificamos se o ficheiro já existe, e se sim, lê-mos o numero
de visitas. Actualizamos o numero, e escrevemos no ficheiro. Se o
ficheiro não
existe, é porque é a primeira visita, e escrevemos o
numero 1 no ficheiro. No fim mostramos o numero de visitas que a página
teve.
[b]Exercício 9.1:[/b]
Vamos construir a nossa lista de compras! Para tal, utiliza o seguinte formulário, para adicionares o produto:
[color=#FF8C00]<html>
<body>
<form action=adiciona.php>
Produto a comprar: <input type=text name=produto><br>
<input type=submit value=Adicionar>
</form>
</body>
</html>[/color]
Deves criar um script PHP de nome "adiciona.php" que adiciona ao ficheiro o produto que pretendemos.
AVISO!!!!
Para que exista um produto por linha, deve ser concatenado ao nome do
produto, os caracteres "\n" . Estes caracteres indicam o fim de linha,
logo quando estamos a escrever no ficheiro, mandamos o nome do produto
e o
caracter de fim de linha, para que o ponteiro passe para a linha
seguinte do ficheiro. Deves escolher com cuidado o tipo de abertura do
ficheiro que pretendes fazer.
Após a introdução do produto no
ficheiro, deverá aparecer uma mensagem a dizer qual o produto que foi
adicionado à lista de compras.
[b]Exercício 9.2:[/b]
Após
o produto ser adicionado, o script "adiciona.php" deve de mostrar a
lista completa dos produtos que se prende comprar, um por linha, e
devidamente numerados.
[b]Exercício 9.3 (dificuldade elevada!):[/b]
Para
evitar adicionar produtos que já estavam na lista de compras, devemos
poder consultar a lista, antes de introduzirmos um novo produto. Para
tal, cria um novo script independente. Este deverá ser chamado de
"compras.php"
e deve respeitar os seguintes critérios:
Se não
existe lista de compras, escreve uma mensagem a dizer "Não existem
compras a fazer", e mostra o formulário para se adicionar um novo
produto.
Se a lista de compras existe, escreve os produtos
(numerados) já adicionados, que pretendemos comprar, seguido do
formulário para se adicionar um novo produto.
O formulário faz a
submissão para o próprio "compras.php", e deve adicionar um produto a
lista de compras, sempre que se este seja introduzido.
NOTA:
Relembro que APÓS se faz um submit, o PHP cria uma
variável com o nome da caixa de texto (neste caso $produto) com o
conteúdo introduzido pelo utilizador. Para verificares se essa variável
existe ou não, deves utilizar a função "isset()" q devolve VERDADEIRO,
caso a variável tenha sido declarada, ou FALSO, caso não tenha.
Resumo:
Podemos
utilizar ficheiros para guardar pequenas informações, sempre que não
possamos ter acesso a uma base de dados. Trabalhamos nos ficheiros
através de ponteiros, que vão indicando a posição do ficheiro onde nos
encontramos.
E temos diversas funções que nos permitem trabalhar com estes.
Creditos:
Postagem : BaD-DrEaM
Fonte: Truques e Dicas
Permissões neste sub-fórum
Não podes responder a tópicos
|
|