[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]



[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem] Sr.Herry Apresenta PHP Completo incluido Site [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]


Lição 15: Ler arquivos de texto

Na
lição anterior estudamos como acessar o sistema e arquivos do servidor.
Nesta lição aplicaremos o conhecimento adquirido para fazer a leitura
de um arquivo de texto no servidor.

Arquivos de texto são uma
maneira poderosa de armazenar vários tipos de dados. Eles não são tão
flexíveis quanto um Banco de Dados, mas têm a vantagem de não requerer
muita memória. Além disso por ser em formato de texto puro funcionam na
grande maioria dos sistemas.
Abrir um arquivo de texto

Usamos a função documentaçãofopen para abrir um arquivo de texto. A sintaxe é mostrada a seguir:


Código:

fopen(filename, mode)




filename
Nome do arquivo a abrir.
mode

Define o modo, que pode ser: "r" (reading - ler), "w" (writing -
escrever) ou "a" (appending - adicionar). Nesta lição nós usaremos o
modo de leitura "r". Nas próximas lições estudaremos como escrever e
adicionar texto em um arquivo de texto.

Nos exemplos a seguir
usaremso um arquivo de texto denominado unitednations.txt. trata-se de
uma lista dos Programas e Fundações das Nações Unidas e seus respectivos
domínios. Você fazer o download do arquivo ou criar seu próprio arquivo
para testar os exemplos com ele.

Vamso começar abrindo o arquivo unitednations.txt:

Código:

    // Abrir o arquivo de texto
    $f = fopen("unitednations.txt", "r");

    // Fechar o arquivo de texto
    fclose($f);

    ?>



Exemplo 1: Ler uma linha de um arquivo de texto

Usamos
a função documentaçãofgets para ler uma linha do arquivo. Este método
lê até o primeiro "break" de linha no arquivo (não inclui a linha do
"break").



Ler um arquivo de
[color=orange]font face=][color=orange]font]

Código:

    [/color][/font]$f = fopen("unitednations.txt", "r");

    // Lê uma linha e escreve no cliente
    echo fgets($f);

    fclose($f);

    ?>

   
   

[/font">

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem] Ver o resultado do exemplo

Exemplo 2: Ler todas as linhas de um arquivo de texto


[color=orange]font face=]font]

Código:

    [/color][/font]$f = fopen("unitednations.txt", "r");

    // Lê cada uma das linhas do arquivo
    while(!feof($f)) {
        echo fgets($f) . "
";
    }

    fclose($f);

    ?>
[/font">



[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem] Ver o resultado do exemplo

No
exemplo anterior percorremos as linhas com uso de um loop e usamos a
função documentaçãofeof (for end-of-file) para verificar se chegamos ao
fim do arquivo. Se não ("!" - ver lição 6), ta linha é escrita.

Em
lugar de construir um loop poderíamos ter obtido o mesmo resultado com
uso da função documentaçãofread. Se você trabalhar com arquivos extensos
leve em consideração que a função documentaçãofread usa mais recursos
que a função documentaçãofgets. Para arquivos pequenos, praticamente,
não faz diferença usar uma ou outra.
Exemplo 3: Diretório de links

Conforme
vimos no início desta lição, arquivos de texto podem ser excelentes
para armazenagem de dados. Isto pode ser demonstrado no exemplo a seguir
no qual criamos um diretório de links a partir dos conteúdos do arquivo
de texto unitednations.txt.

O arquivo contém o nome do Programa
ou Fundação seguindo-se uma vírgula e depois o domínio. É fácil de
concluir que se quissésemos poderíamos armazenar mais informações nesta
lista separada por vírgula.

Para recuperar a informação em cada linha usaremos um array. Ver lição 8 para mais informações sobre arrays.



Ler um arquivo de tex

Código:

$f = fopen("unitednations.txt", "r");

    // Lê cada uma das linhas do arquivo
    while (!feof($f)) {

    // Criar um array com o separador vírgula
      $arrM = explode(",",fgets($f));

    // escreve links (dados vem do array)
      echo "[url=http://" . $arrM[1] . "]" . $arrM[0]. "[/url]
";

    }

    fclose($f);
    ?>



[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem] Ver o resultado do exemplo

Legal
não é? A princípio você pode expandir o arquivo de texto para conter
mais linhas ou mesmo incluir outras informações como, por exemplo, um
endereço.


Lição 16: Escrever em arquivos de texto

Na
lição anterior aprendemos a ler um arquivo de texto com PHP. Nesta
lição veremos como escrever em um arquivo de texto com PHP.

Os
dois métodos são bem semelhantes, mas existe uma diferença importante:
Você tem que ter permissão para escrever no arquivo. Isto significa que o
arquivo tem que estar localizado em um diretório ao qual você tenha
permissão de acesso para escrever.

Se você está trabalhando
localmente em seu computador, poderá você mesmo configurar as
permissões: dê um clique com o botão direito do mouse na pasta do
diretório e escolha "Properties". Na maioria dos servidores de
hospedagem existe por padrão um diretório com permissão de escrita. Em
geral tais diretórios são nomeados como "cgi-bin", "log", "databases" oo
algo similar. Se o seu servidor de hospedagem permitir você também
poderá configurar permissões. Geralmente basta que, no seu cliente FTP,
você clique com o botão do mouse na pasta e escolha "properties" ou
"permissions" ou algo similar. Na figura a seguir mostramos como
configurar permissões no FileZilla.

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

Se precisar de mais informações leia a documentação de suporte do seu servidor de hospedagem.

Convém
notar que é arquivo de texto no qual se pretende escrever que deve
estar localizado no diretório com permissão de escrita e não o arquivo
PHP.
Abrir um arquivo de texto para escrever

Tal como fizemos
para ler um arquivo de texto usaremos a função documentaçãofopen para
escrever, mas agora configurada para o modo "w" (writing - escrever) ou
"a" (appending - adicionar).

A diferença entre os modos writing e
appending é a posição do 'cursor' para escrever - se no começo ou no
fim do arquivo respectivamente.

Nos exemplos desta lição usaremos um arquivo vazio denominado textfile.txt, mas se você preferir pode usar seu próprio arquivo.

Vamos começar abrindo o arquivo de texto:

Código:

  // Abre o arquivo de texto
    $f = fopen("textfile.txt", "w");

    // Fecha o arquivo de texto
    fclose($f);

    ?>




Exemplo 1: Escrever uma linha no arquivo de texto

Para escrever uma linha usamos a função documentaçãofwrite como mostrado a seguir:

font face=]font]

Código:

 [/color][/font]// Abre o arquivo de texto
    $f = fopen("textfile.txt", "w");

    // Escreve no arquivo de texto
    fwrite($f, "PHP is fun!");

    // Fecha o arquivo de texto
    fclose($f);

    // Abre o arquivo e lê a linha
    $f = fopen("textfile.txt", "r");
    echo fgets($f);

    fclose($f);

    ?>
[/font">


[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem] Ver o resultado do exemplo

Uma
vez aberto o arquivo no modo writing a nova linha é escrita na parte
superior do arquivo é sobrescreve a primeira linha do arquivo. Se
abrirmos o arquivo no modo appending a nova linha é escrita na parte
inferior do arquivo acresentando mais uma linha no arquivo.
Exemplo 2: Escrever um bloco de texto em um arquivo de texto

É possível escrever um bloco de texto inteiro em vez de uma só linha como mostrado a seguir:


Código:

[/color][/font] // Abre o arquivo de texto
    $f = fopen("textfile.txt", "w");

    // Escreve um texto
    fwrite($f, $_POST["textblock"]);

    // Fecha o arquivo de texto
    fclose($f);

    // Abre o arquivo e lê a linha
    $f = fopen("textfile.txt", "r");

    // Lê o texto
    echo fgets($f);
    fclose($f);

    ?>



[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem] Ver o resultado do exemplo

Lição 17: Banco de Dados

Um
Banco de Dados é um conjunto de informações / dados organizados de uma
maneira a facilitar as tarefas de extração, manutenção e atualização dos
dados. Banco de Dados possibilitam a criação de sites dinâmicos com
grande quantidade de informações. Por exemplo:os dados sobre todos os
membros do site HTML.net bem como todos os posts dos forums do site
estão guardados em um Banco de Dados.

Um Banco de dados, em geral
é constituído de uma ou mais tabelas. Se você já trabalhou com
planilhas ou mesmo com banco de dados, você deve estar familiarizado com
tabelas, suas colunas e linhas:

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

Existem
vários tipos de Banco de Dados: MySQL, MS Access, MS SQL Server, Oracle
SQL Server e muitos outros. No nosso tutorial usaremos o Banco de Dados
MySQL. MySQL é o tipo de Banco de Dados mais indicado e natural para se
usar com PHP.

Para acompanhar esta e as próximas lições você precisa ter acesso a um Banco de Dados:


Se você tem um site PHP hospedado remotamente é quase certo que MySQL
esteja disponível no servidor. Informe-se com o suporte do seu servidor
de hospedagem.
Se você instalou PHP no seu computador e quiser
instalar MySQL faça o download de um a versão gratuita (MySQL Community
Edition) no site do MySQL.
Se você está usando XAMPP (ver liçaõ
2) MySQL já foi instalado e está pronto para ser usado. Certifique-se,
no Painel de Controle, que MySQL está sendo executado:

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

A
seguir, nesta lição, veremos como conectar a um Banco de Dados e nas
lições seguintes aprenderemos a criar um Banco de Dados e dele extrair e
atualizar dados.
Conexão com o Banco de Dados

Primeiro você
precisa ter acesso ao servidor no qual está instalado o Banco de Dados. O
acesso é feito com uso da função documentaçãomysql_connect que admite a
seguinte sintaxe:

Código:

mysql_connect(servidor, usuário, senha)



Simples
e direto: O parâmetro (servidor) indica o local onde se encontra o
Banco de Dados, usuário e senha indicam o nome do usuário e a senha de
acesso ao Banco de Dados.

Se você possui um site, leia a
documentação de suporte do seu servidor para saber o local do servidor
MySQL. Nome de usuário e senha em geral é o mesmo que você usa para
acessr o site via [Tens de ter uma conta e sessão iniciada para poderes visualizar este link] Se não for contacte o suporte para seu servidor.

Exemplo de conexão MySQL para um site em servidor remoto:

Código:


      mysql_connect("mysql.myhost.com", "user001", "sesame") or
die(mysql_error()) [/color][/font][font=Comic Sans
Ms][color=orange][font=Comic Sans Ms][color=orange]



Exemplo de conexão MySQL com servidor local XAMPP (configuração padrão):

Código:

mysql_connect("localhost", "root", "") or die (mysql_error());



Notar
nos exemplos a inclusão de or die(mysql_error()) que, resumo,
destina-se a interromper o script e retornar uma mensagem de erro caso
não seja possível estabelecer a conexão.

É assim que se faz a
conexão com o servidor MySQL. Agora você já está em condições de criar
Banco de Dados, extrair e inserir dados. É exatamente isso que
aprenderemos nas próximas lições.

Ah sim! não se esqueça que é de
boa prática encerrar a conexão tão logo você tenha terminado de usar o
Banco de Dados. Para isso use a função documentaçãomysql_close.


Lição 18: Criando Banco de Dados e suas Tabelas

Na
lição anterior aprendemos como se conectar com um Banco de Dados. O
próximo passo é aprender como criar Banco de Dados e Tabelas.

Veremos
duas maneiras de se criar Bancos de Dados e Tabelas. Primeiro com uso
de PHP e depois de uma maneira mais amigável usando a ferramenta
PhpMyAdmin que existe por padrão na maioria dos servidores remotos e
também no XAMPP.

Se você tem um servidor remoto com PHP e MySQL e
já criou um Banco de Dados pule esta parte da lição e vá para criação
de Tabelas. Para mais informações consulte o suporte do seu servidor.
Criar Banco de Dados e Tabelas com PHP

A
função documentaçãomysql_query é usada para enviar umna consulta
(query) para o Banco de Dados MySQL. Consultas são escritas n linguagem
Structured Query Language (SQL) (ou Linguagem estruturada de consulta).
SQL é a linguagem mais usada para consultas a um Banco de Dados - não só
para MySQL - e é lógica e muito fácil de aprender. Nesta e na próxima
lição você aprenderá a sinbtaxe para realizar as mais usadas consultas
SQL.

Para criar um Banco de Dados a query SQL usada é documentaçãoCREATE DATABASE que admite a seguinte sintaxe:

Código:

  CREATE DATABASE nome do Banco



Bem lógico não é!? Vamos criar um script PHP:

Código:

 mysql_connect("mysql.myhost.com", "user", "sesame") or die(mysql_error());

    mysql_query("CREATE DATABASE mydatabase") or die(mysql_error());

    mysql_close();




Primeiro
a conexão com o Banco de Dados. A seguir criamos o Banco de Dados
denominado "mydatabase". Finalmente encerramos a conexão.

Até
aqui tudo bem... mas as tarefas se complecam um pouco quando se trata de
criar Tabelas com PHP. Para isso usamos a query SQL CREATE TABLE com a
seguinte sintaxe:


Código:

    CREATE TABLE nome da Tabela
    (
    nome_coluna1 DATA_TYPE,
    nome_coluna3 DATA_TYPE,
    nome_coluna4 DATA_TYPE,
    ...
    )




nome
da Tabela e nome_coluna são, sem dúvida, o nome da Tabela e da coluna
respectivamente. DATA_TYPE é usado para especificar o tipo de dado a ser
inserido na coluna. Os tipos de dados mais usados são:

documentaçãoINT
Para números inteiros
documentaçãoDECIMAL
Pra números decimais
documentaçãoCHAR
Textos com menos de 255 caracteres
documentaçãoTEXT
Para texto com menos de 65.535 caracteres
documentaçãoLONGTEXT
Para texto com menos 4.294.967.295 caracteres
documentaçãoDate
Para datas no formato YYYY-MM-DD
documentaçãoTime
Para hora no formto HH:MM:SS
documentaçãoDATETIME
Para data/hora no formato YYYY-MM-DD HH:MM:SS

Lógico e fácil. Vejamos um exemplo:


Código:

    mysql_connect("mysql.myhost.com", "user", "sesame") or die(mysql_error());
    mysql_select_db("people") or die(mysql_error());

    mysql_query("CREATE TABLE MyTable (
      id INT AUTO_INCREMENT,
      FirstName CHAR,
      LastName CHAR,
      Phone INT,
      BirthDate DATE
      PRIMARY KEY(id)
    )") Or die(mysql_error());
    mysql_close ();




Começamos
com a conexão com o servidor MySQL. A seguir usamos a função
documentaçãomysql_select_db para selecionar o Banco de Dados denominado
"people". Depois criamos a Tabela denominada "persons" contendo 5
colunas.

Notar que para a coluna "id" usamos documentaçãoINT para
especificar que a coluna conterá números inteiros e a seguir usamos
documentaçãoAUTO_INCREMENT para definir que os números serão
incrementados automaticamente, garantindo que cada linha da coluna tenha
um ID único (exclusivo, ou seja, que não se repete)

Finalmente
usamos documentaçãoPRIMARY KEY para definir a coluna "id" como chave
primária. A chave primária é o identificador exclusivo da cada registro
(linha) da Tabela. Este identificador será de grande utilidade para
manipulação dos registros.
Criar Banco de Dados e Tabelas com phpMyAdmin

Pode
ser bastante útil criar Banco de Dados e Tabelas com PHP. Porém, em
geral, será bem mais fácil usar phpMyAdmin (ou qualquer outra ferramenta
administrativa para MySQL) que existe por padrão na maioria dos
servidores remotos e em XAMPP. As figuras mostradas a seguir esclarecem
como criar Banco de Dados e Tabelas no phpMyAdmin.

Comece fazendo
login no phpMyAdmin. Em geral o endereço é o mesmo do servidor MySQL
(por exemplo: "http://mysql.myhost.com") bem como o nome de usuário e
senha. No XAMPP o endereço é: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]

Uma vez logado, digite um nome para o Banco de Dados e clique o botão "Create":

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

Em
alguns servidores remotos já existe um Banco de Dados padrão e não é
permitida a criação de outros Banco de Dados. Se este for o seu caso,
use o Banco de Dados padrão.

Para criar uma Tabela clique na aba "Databases" e escolha o Banco de Dados na qual a Tabela será criada:

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

Procure
a caixa denominada "Create new table in database" e nela digite o nome
da Tabela e o número de colunas. Clique o botão "Go":

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

A seguir define o nome das colunas, o tipo de dado em cada uma delas, etc. tal como mostramos anteriormente.

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

Notar que usamos "id" como documentaçãoPRIMARY KEY e documentaçãoAUTO_INCREMENT (A_I).

Assim,
criamos nosso Banco de Dados e sua Tabela. Nas próximas lições
aprenderemos como inserir, extrair e apagar dados de um Banco de Dados.


Lição 19: Inserindo dados em um Banco de Dados


Inserir dados com SQL

Para
inserir dados em um Banco de Dados com SQL a sintaxe é idêntica a usada
para criar Banco de Dados. A sintaxe é mostrada a seguir:


Código:

INSERT INTO nome_da_Tabela(coluna1, coluna2, ...) VALUES(valor1, valor2, ...)



Notar
que podemos manipular dados em várias colunas ao mesmo tempo usando uma
lista separada por vírgula no comando SQL. Mas, é óbvio, podemos
manipular uma coluna somente. Colunas que não constam do comando SQL
permanecem vazias.
Exemplo: Inserir dados de uma pessoa na Tabela

Neste
exemplo usaremos o Banco de Dados criado na lição 18. Vamos inserir os
dados de uma pessoa. Seja a pessoa Gus Goose cujo telefone é 99887766 e
nasceu em 1964-04-20

O comando SQL para inserção é conforme mostrado a seguir:


Código:

    $strSQL = "INSERT INTO people(FirstName,LastName,Phone,BirthDate) VALUES('Gus','Goose','99887766 ','1964-04-20')"; 

    mysql_query($strSQL) or die(mysql_error());




Notar
que um comando SQL pode tornar-se extenso dificultando seu
entendimento. Para esclarecer melhor e facilitar o entendimento existe
uma sintaxe alternativa conforme mostrada a seguir:

Código:

    strSQL = "INSERT INTO people(";

    strSQL = strSQL . "FirstName, ";
    strSQL = strSQL . "LastName, "
    strSQL = strSQL . "Phone, ";
    strSQL = strSQL . "birth) ";

    strSQL = strSQL . "VALUES (";

    strSQL = strSQL . "'Gus', ";
    strSQL = strSQL . "'Goose', ";
    strSQL = strSQL . "'99887766', ";

    strSQL = strSQL . "'1964-04-20')";
   
    mysql_query($strSQL) or die(mysql_error());




Segundo
esta sintaxe, dividimos o comando em parte e usamos uma variável - no
nosso caso $strSQL - para concatenar as partes em um comando único.

Na
prática não importa a sintaxe que você usa. Dependendo do seu projeto
escolha aquela que for mais conveniente para o claro entendimento dos
comandos SQL.

Tente executar o seguinte código para inserir Gus Goose no Banco de Dados:

Código:

   
   
    Inserindo dados em um Banco de Dados
   
   
   
    // Conexão com o Banco de Dados
    mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());

    // Seleciona o Banco de Dados
    mysql_select_db("mydatabase") or die(mysql_error());

    // Comando SQL

    $strSQL = "INSERT INTO people(";

    $strSQL = $strSQL . "FirstName, ";
    $strSQL = $strSQL . "LastName, ";

    $strSQL = $strSQL . "Phone, ";
    $strSQL = $strSQL . "BirthDate) ";

    $strSQL = $strSQL . "VALUES(";

    $strSQL = $strSQL . "'Gus', ";

    $strSQL = $strSQL . "'Goose', ";
    $strSQL = $strSQL . "'99887766', ";

    $strSQL = $strSQL . "'1964-04-20')";

    // Comando SQL executado
    mysql_query($strSQL) or die (mysql_error());

    // Encerra conexão
    mysql_close();
    ?>

    [b]Banco de Dados atualizado![/b]


   
   




Inserir uma entrada de usuário no Banco de Dados

Em certos casos há necessidade de inserir uma entrada de usuário no Banco de Dados.

Como
você já deve ter concluído isto será feito com uso de um formulário
como descrito na lição 11 - pois podemos inserir o valor passado pelo
formulário em um comando SQL. Suponha o formulário conforme mostrado a
seguir:

Código:

   
   
   

   




O
formulário será enviado para insert.php no qual, conforme mostrado na
lição 11, extrairemos o valor entrado no formulário pelo usuário. Para
este nosso exemplo o comando SQL é conforme mostrado a seguir:


Código:

strSQL = "INSERT INTO people(FirstName) values('" . $_POST["FirstName"] . "')"




De maneira semelhante é possível extrair dados de cookies, sessions, query strings, etc.
Erros mais comuns

No
início, você provavelmente será brindado com uma bateria de mensagens
de erros quando tentar atualizar dados em um Banco de Dados. Não há
lugar para o menor erro que seja, quando trabalhamos com Banco de Dados.
O simples esquecimento ou má colocação de uma vírgula põe tudo a perder
e lá vem uma mensagem de erro. Observe a seguir os erros mais comuns
cometidos quando se está iniciando.
Tipo de dado incorreto

É
importante manter consistência de tipo de dado na coluna. Cada coluna
deve conter um determinado tipo de dado. A figura a seguir mostra os
tipos de dados para a Tabela "people" do nosso exemplo.

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

Se
você tentar inserir textos ou números em um mesmo campo que admite
somente textos, vai ocorrer erro. Ou bem texto ou bem número. É
importante definir o tipo de dados da forma mais precisa possível.

Observe, a seguir, uma lista dos tipos de dados:
Tipo de dado Definição Tamanho
CHR
Texto ou combinação de texto e número. Pode-se também ser empregado
para números não usados em cálculos (por exemplo: número de telefone).
Até 255 caracteres - ou o comprimento definido em "Length"
TEXT Textos longos ou combinação de textos e números. Até 65.535 caracteres.
INT Dados numéricos para cálculos matemáticos. 4 bytes.
DATE Datas no formato YYYY-MM-DD 3 bytes.
TIME Horas no formato hh:mm:ss 3 bytes.
DATETIME Data/hora no formato YYYY-MM-DD hh:mm:ss 8 bytes.
Comandos SQL com aspas e barras

Se,
em um comando SQL, você tentar inserir texto contendo aspas simples
('), aspas duplas (") ou barra invertida (\), o registro não será
inserido. A solução é usar barra invertida (\) antes destes caracteres
nos comandos SQL.

Isto pode ser feito com uso da função documentaçãoaddslashes como mostrado a seguir:

Código:

   
    $strText = "Seu nome é O'Reilly?";
    $strText = addslashes($strText);

    ?>




Então,
usando esta função todo caractere ('), (") e (\) será acrescido
automaticamente de uma barra invertida (\) no seu início. Esta barra
extra é necessária apenas para possibilitar a inserção do dado no Banco
de Dados. É importante ressaltar que o PHP realiza por padrão o
documentaçãoaddslashes em todos os dados obtidos via $_GET, $_POST e
$_COOKIE. Assim, não há necessidade de usar documentaçãoaddslashes em
strings que já tenham sido "escapadas" (com barra invertida).

Lição 20: Extraindo dados de um Banco de Dados

Chegou a hora de extrairmos dados de um Extraindo dados de um Banco de Dados.

Esta
é, sem duvida, uma das mais importantes lições deste tutorial. Uma vez
que você tenha entendido esta lição você saberá por que um site baseado
em Banco de Dados pode tornar-se tão poderoso e sua visão de
desenvolvedor certamente vai se expandir-se drasticamente.
Consultas SQL

Para
extrair dados de um Banco de Dados usamos queries (consultas) SQL. Um
exemplo de query é: "extraia todos os dados da tabela 'people' ordenados
alfabeticamente" ou "extraia os nomes contidos na tabela 'people'".

Repetimos:
Structured Query Language (SQL) é usada para estabelecer comunicação
com o Banco de Dados. Observe o exemplo a seguir:

code]Extrair todos os dados da tabela 'people' [/code]



O comando SQL é assim:

Código:

 SELECT * FROM people





A sintaxe é auto explicativa. Leia e conclua sobre os comandos mostrados a seguir.
Exemplo 1: Extrair dados de uma tabela

Este
exemplo usa o Banco de Dados e Tabela mostrados na lições 19 e na lição
18. Portanto, leia aquelas lições antes de prosseguir.

O exemplo mostra como extrair dadis da tabela "people" com uso de consulta SQL.

SQL
query retorna o resultado em forma de uma série de registros. Estes
registros são armazenados em um conjunto de registros denominado
recordset. Um recordset pode ser definido como uma esécie de tabela na
memória do servidor contendo linhas de dados (registros) no qual cada
registro é subdividido em campos individuais (ou colunas).

Um
recordset pode ser comparado a uma tabela na qual cada registro pode ser
comparado a uma linha de tabela. Usando PHP podemos percorrer um
recordset com um loop usando a função documentaçãomysql_fetch_array que
retorna um array de linhas.

O código a seguir mostra o uso de documentaçãomysql_fetch_array para construir um loop pelo recordset:

Código:

   
   
    Extraindo dados de um  Banco de Dados
   
   

        // Conexão com o Banco de Dados
    mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());

    // Seleciona o Banco de Dados
    mysql_select_db("mydatabase") or die(mysql_error());

    //query SQL
    $strSQL = "SELECT * FROM people";

    // Executa a query (o recordset $rs contém o resultado da query)
    $rs = mysql_query($strSQL);
   
    // Loop pelo recordset $rs
    // Cada linha vai para um array ($row) usando mysql_fetch_array
    while($row = mysql_fetch_array($rs)) {

      // Escreve o valor da coluna FirstName (que está no array $row)
      echo $row['FirstName'] . "
";

      }

    // Encerra a conexão
    mysql_close();
    ?>
   
   






[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem] Ver o resultado do exemplo
Notar
que para cada registro extraimos o conteúdo da coluna "FirstName" com
$row['FirstName']. De modo semelhante podemos extrair o conteúdo da
coluna "Phone" bcom $row['Phone'], por exemplo.

A ordem de saída
dos recordset é a mesma que ele ocupa na tabela do Banco de Dados. No
exemplo a seguir veremos como controlar a ordem de saída dos recordset.
Exemplo 2: Ordem de saída alfabética, cronológica ou númerica

Não
raro é interessante colocar a saída dos registros em uma ordem
alfabética, cronológica ou númerica. Isto é fácil de se fazer com SQL no
qual a sintaxe Order By ColumnName é usada para realizar o ordenamento.

Observe o comandos SQL do exemplo anterior:

Código:

 strSQL = "SELECT * FROM people"




Os registros podem, por exemplo, serem ordenados em ordem alfabética pelo primeiro nome das pessoas, como mostrado a seguir:

Código:

    strSQL = "SELECT * FROM people ORDER BY FirstName"




Ou cronologicamente pela data de aniversário:

Código:

    strSQL = "SELECT * FROM people ORDER BY BirthDate"




A ordenação pode ser alterada de ascending (ordem ascendente) para descending (ordem descendente) com uso de DESC:

Código:

    strSQL = "SELECT * FROM people ORDER BY BirthDate DESC"




No exemplo a seguir as pessoas são ordenadas por idade:

Código:

   
   

    Extraindo dados de um Banco de Dados

   
   
   
        // Conecta com o Banco de Dados
    mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());

    // Seleciona o Banco de Dados
    mysql_select_db("mydatabase") or die(mysql_error());

    // query SQL
    $strSQL = "SELECT * FROM people ORDER BY BirthDate DESC";

    // Executa a query (o recordset $rs contém o resultado da query)
    $rs = mysql_query($strSQL);
   
    // Loop pelo recordset $rs
    while($row = mysql_fetch_array($rs)) {

      // Escreve o valor da coluna FirstName e BirthDate
      echo $row['FirstName'] . " " . $row['BirthDate'] . "
";

      }

    // Encerra a conexão
    mysql_close();
    ?>

   
   




[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem] Ver o resultado do exemplo

Como exercício construa a query SQL para ordenação pelo primeiro nome, último nome, número de telefone.
Extrair dados segundo uma condição

Até
aqui nossas consultas SQL extraíram todas as linhas de uma tabela. Mas,
é comum a necessidade de extração de certas linhas da tabela que
atendam a uma determinada condição como, por exemplo, a linha contendo
um determinado telefone ou nome.

Suponha que se deseje extrair informações sobre a pessoa cujo telefone é "66554433". Isto se faz conforme mostrado a seguir:

Código:

    strSQL = "SELECT * FROM people WHERE Phone = '66554433 '"




Existem seis operadores relacionais na linguagem SQL:

= Igual
< Menor que
> Maior que
<= Menos que ou igual
> = Maior que ou igual
!= Diferente

Há também, na linguagem, alguns operadores lógicos:

AND (E)
OR (OU)
NOT (NÃO)

Ver lição 6 para mais informações sobre operadores lógicos.

No exemplo a seguir usaremos condicionais para criar um catálogo de endereços.
Exemplo 3: Catálogo de endereços

Neste
exemplo usaremos muitos dos conceitos que você já aprendeu neste
tutorial. Construiremos uma lista de nomes de pessoas extraídos do Banco
de Dados na qual cada nome é um link cujo destino é um documento com
maiores informações sobre a pessoa.

Vamos precisar de dois arquivos - list.php e person.php - com o seguinte código:
Código para o arquivo list.php

Código:

   
   
    Extraindo dados de um Banco de Dados
   
   

   
[list]

        // Conectar com o Banco de Dados
    mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());

    // Selecionar o Banco de Dados
    mysql_select_db("mydatabase") or die(mysql_error());

    // query SQL
    $strSQL = "SELECT * FROM people ORDER BY FirstName DESC";

    // Executar a query (o recordset $rs contém o resultado da query)
    $rs = mysql_query($strSQL);
   
    // Loop pelo recordset $rs
    while($row = mysql_fetch_array($rs)) {

      // Nome da pessoa
      $strName = $row['FirstName'] . " " . $row['LastName'];

      // Cria link para o arquivo person.php com um valor de id no URL
      $strLink = "[url=http://www.bgames.com.br/person.php?id = " . $row[]" . $strNavn . "[/url]";

        // Lista de links
      echo "
[*]" . $strLink . "";

      }

    // Encerra conexão
    mysql_close();
    ?>

   
[/list]
   
   





Código para o arquivo person.php

Código:

   
   
    Extraindo dados de um Banco de Dados
   
   

   

        // Conectar com o Banco de Dados
    mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());

    // Selecionar o Banco de Dados
    mysql_select_db("mydatabase") or die(mysql_error());

    // Extrair dados de acordo com o id passado no URL
    $strSQL = "SELECT * FROM people WHERE id=" . $_GET["id"];
    $rs = mysql_query($strSQL);
   
    // Loop pelo recordset $rs
    while($row = mysql_fetch_array($rs)) {

        // Escreve dados da pessoa
        echo "Nome:" . $row["FirstName"] . " " . $row["LastName"] . "";
        echo "Telefone:" . $row["Phone"] . "";
        echo "Data de nascimento:" . $row["BirthDate"] . "";

    }

    // Encerra conexão
    mysql_close();
    ?>

   
    [url=http://www.bgames.com.br/list.php]Voltar à lista de nomes[/url]


   

   



[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem] Ver exemplo

O catálogo de endereços é bem simples, mas bem demonstra o potencial de desenvolvimento com PHP e Banco de Dados.

Imagine
um Banco de Dados com 10.000 produtos e respectivas informações
devidamente cadastradas. Fazendo algumas simples adaptações nos arquivos
do exemplo mostrado você poderá montar, com facilidade, um catálogo de
produtos com mais de 10.000 páginas usando apenas um Banco de Dados e
dois arquivos PHP.

Bem-vindo ao maravilhoso mundo dos sites
extensíveis, fáceis de construir e manutenir! Depois que você aprende a
trabalhar com Banco de Dados suas soluções web nunca mais serão as
mesmas.


Lição 21: Apagando dados de um Banco de Dados

Nas
duas lições anteriores você aprendeu a inserir e extrair dados de um
Banco de Dados. Nesta lição estudaremos como apagar dados de Um Banco de
Dados, tarefa que é bem mais simples do que inserir dados.
Apagando dados com SQL

A sintaxe SQL para apagar dados é:


Código:

    DELETE FROM TableName WHERE condition


Exemplo: Apagar um dado

Para
apagar um dado você pode usar o campo identificador único (AutoNumber)
da tabela correspondente. Na tabela do nosso Banco de Dados é a coluna
denominada id. Usar o identificador único garante que apenas uma linha
de dados será apagada. No exemplo a seguir apagamos a linha com o
identificador cujo valor é 24:

Código:

   
   
    Apaga dado em um Banco de Dados
   

   
   
        // Conectar com o Banco de Dados
    mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());

    // Selecionar o Banco de Dados
    mysql_select_db("mydatabase") or die(mysql_error());

    // SQL para apagar registro
    $strSQL = "DELETE FROM people WHERE id = 24";
    mysql_query($strSQL);
   
    // Fechar conexão com Banco de Dados
    mysql_close();
    ?>

    [b]Registro apagado![/b]



   
   




Lembre-se
que não existe uma pasta "Lixeira" quando se trabalha com PHP e Banco
de Dados. Se você apagar um dado não terá como recuperá-lo
posteriormente.


Lição 22: Atualizando dados em um Banco de Dados

Em
lições anteriores você aprendeu a inserir, requisitar e apagar dados de
um Banco de Dados. Nesta lição estudaremos como atualizar os dados de
um Banco de Dados, ou seja, editar os valores dos campos de uma tabela
do Banco de Dados.
Atualizando dados com SQL

A sintaxe SQL para atualizar dados em um campo de uma tabela é mostrada as seguir:


Código:

    UPDATE TableName SET TableColumn='value' WHERE condition




É possível atualizar vários campos ds tabela de uma só vez como mostrado a seguir:


Código:

    UPDATE TableName SET TableColumn1='value1', TableColumn2='value2' WHERE condition 




Com
os conhecimentos adquiridos nas lições 19, 20 e 21 ficou bem mais fácil
entender como funciona a sintaxe mostrada. Vejamos um exemplo.
Exemplo: Atualizando campos da tabela "people"

O
código a seguir faz a atualização do campo "FirstName" (primeiro nome)
de Donald Duck's para D. e altera o campo "Phone" (número do telefone)
para 44444444. As outras informações (last name (último nome) e
birthdate (data de aniversário)) não serão alteradas. Você pode tentar
alterar os dados das outras pessoas escrevendo seus próprios comandos
SQL.

Código:

   
   
    Update data in database

   
   

        // Conecta com o Banco de Dados
    mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());

    // Seleciona o com o Banco de Dados
    mysql_select_db("mydatabase") or die(mysql_error());
   
    // Constrói a consulta SQL
    $strSQL = "Update people set ";
    $strSQL = $strSQL . "FirstName= 'D.', ";
    $strSQL = $strSQL . "Phone= '44444444' ";

    $strSQL = $strSQL . "Where id = 22";

    // Executa a consulta
    mysql_query($strSQL);

    // Encerra a conexão
    mysql_close();
    ?>

    [b]O Banco de Dados foi atualizado![/b]


   
   




Este
exemplo completa as lições sobre Banco de Dados. Você aprendeu a usar
PHP para inserir, requisitar, apagar e atualizar dados em um Banco de
Dados. Assim, você está habilitado a criar soluções web dinâmicas e
avançadas nas quais o usuário será capaz de manutenir e atualizar dados
em um Banco de Dados, usando formulários.

Se você quiser visitar
uma aplicação sofisticada demonstrando o que pode ser feito com PHP e
Banco de Dados torne-se nosso parceiro. É gratuito e tomará apenas 1
minuto do seu tempo para a realização do seu registro. Você poderá entre
outras coisas gerenciar seu perfil usando formulários. Talvez você até
colha algumas ideias para empregar no seu site.

Aqui terminamos
nosso tutorial. PHP nos fornece muitas funcionalidades para adicionar
interatividade em um site. O único limite é a sua imaginação.
Divirta-se!