Tutorial Sobre Php E Mysql [Excelente]

download Tutorial Sobre Php E Mysql [Excelente]

of 25

Embed Size (px)

Transcript of Tutorial Sobre Php E Mysql [Excelente]

  • Trabalhando com PHP e MySQL: Uma Introduo

  • Table of ContentsTrabalhando com PHP e MySQL: Uma Introduo.......................................................................................1

    1. A linguagem PHP................................................................................................................................12. O uso do PHP com Bancos de Dados..................................................................................................13. Criando um livro de visitas..................................................................................................................2

    3.1. Conectando ao servidor MySQL e criando o banco de dados...................................................23.2. Utilizando o PHP........................................................................................................................93.3. Criando o cdigo do Livro de Visitas......................................................................................14

    1. Anexos...............................................................................................................................................23

    Trabalhando com PHP e MySQL: Uma Introduo

    i

  • Trabalhando com PHP e MySQL: Uma IntroduoHugo Cisneiros, ltima atualizao em 27/01/2003

    1. A linguagem PHPA linguagem PHP uma linguagem de programao criada especialmente para o uso em pginas Web. Masnem por isso ela no pode deixar de ser usada em ambientes desktop, aplicaes servidoras, aplicaes derede, entre outros. Mas o principal escopo da linguagem justamente trabalhar com o ambiente Web. O sitedo PHP http://www.php.net/, e l voc pode encontrar os arquivos necessrios para a instalao em vriossistemas, inclusive o Linux e o Windows.

    Para quem no conhece linguagens de programao, PHP pode ser umpouco difcil no comeo, como todalinguagem, mas quem j est habituado programar, vai perceber que PHP muito fcil. O PHP umalinguagem orientada a objeto, com a sintaxe parecida com a do C, s que muito mais simples e prtica. O PHPse diferencia justamente pela rapidez e agilidade que os programadores tm em fazer programas e sistemas,pois com o PHP conseguese desenvolver muito mais rapidamente do que outras linguagens de programaopara Web tais como ASP ou JSP.

    E se j no bastasse, o uso do PHP j muito difundido na Internet. Uma boa quantidade de pginasdinmicas por a na Internet so feitas justamente com a linguagem PHP. Ento com certeza voc no vai ficarisolado no meio... Com certeza voc vai ter vrios recursos para estudar o PHP e ver como ele til para aprogramao voltada para Web. E por ltimo, o PHP software livre, ou seja, seu cdigofonte estdisponvel para todos usufruirem! timas vantagens para quem quer comear a programar para Web!

    2. O uso do PHP com Bancos de DadosUma das melhores habilidades do PHP lidar com bancos de dados de uma forma fcil. Hoje em dia os

    Trabalhando com PHP e MySQL: Uma Introduo 1

  • sistemas para Web esto cada vez mais usufruindo das capacidades magnficas que os bancos de dados podemoferecer. Neste tutorial vamos aprender a fazer algumas coisas com o banco de dados MySQL.

    O MySQL um banco de dados simples, rpido e eficiente para se trabalhar com sistemas Web. Alm dissoele bem fcil e intuitivo, ento estaremos usando ele para fazer os nossos exemplos deste tutorial. A licenadeste banco de dados tambm GPL, ento software livre. O site do MySQL http://www.mysql.com/.

    3. Criando um livro de visitasAntes de mais nada, este tutorial assume que voc tenha pelo menos um pouco de noo sobre o que HTMLe um pouco de lgica de programao. Mas tambm os usurios inexperientes tambm podem seguir estemanual sem problemas, e ir aprendendo ainda mais com ele. Primeiramente iremos criar um livro de visitasbem simples, usando como fonte de dados o banco de dados MySQL.

    3.1. Conectando ao servidor MySQL e criando o banco de dados

    No vou explicar aqui como montar um servidor MySQL, porque vai fora do escopo deste tutorial. Asdistribuies Linux geralmente vem com o MySQL prontopara o uso, como tambm a instalao no Windows bastante fcil tambm. Cabe voc ento instalar o seu servidor MySQL. Depois que o servidor MySQLestiver instalando e funcionando, voc precisar de um banco de dados para trabalhar. Para criar um, executeo comando:

    mysqladmin h localhost u root p create guestbook

    O comando acima criar um banco de dados chamado 'guestbook'. A opo 'h localhost' diz em qualIP/HOST o servidor MySQL est localizado para efetuar a conexo, enquanto que as opes 'u root p'significa para usar o usurio root para fazer a ao, e perguntar por uma senha. Caso o usurio no tenhasenha, a opo 'p' no requerida. Depois outro comando ser necessrio, neste caso para conectar aoservidor MySQL usando o nosso recmcriado banco de dados e comear a enviar Consultas para ele atravsdo seu prompt de comando:

    Trabalhando com PHP e MySQL: Uma Introduo

    3. Criando um livro de visitas 2

  • [[email protected] hugo]$ mysql u root p guestbookEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 5 to server version: 3.23.49

    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

    mysql>

    Agora j podemos criar as nossas tabelas. Mas antes precisamos saber o que criaremos! Para o nosso livro devisitas, precisaremos de poucas coisas. Vamos pensar... Huummm... Iremos querer o seguinte do nossousurio: Nome, Localizao e Mensagem. Alm disso, precisaremos tambm de um campo para a data e horaem que o usurio postou as informaes. Agora vamos criar a tabela:

    mysql> CREATE TABLE guestbook ( > id int(5) unsigned zerofill NOT NULL DEFAULT '00000' auto_increment, > nome varchar(255), > localizacao varchar(50), > mensagem text, > data datetime, > PRIMARY KEY(id) > );Query OK, 0 rows affected (0.00 sec)

    mysql>

    Pronto. Criamos a nossa tabela, e ela j est pronta para ser usada. O campo 'id' vai ser a identificao de cadamensagem no livro de visitas, ele ter sempre seu nmero incrementado (para nunca repetir), nunca ser nuloe sempre vai ter '0' (zeros) antes do nmero. Como definimos o campo como int(5), que significa nmerointeiro de no mximo 5 digitos, ento poderemos armazenar de uma a 99999 mensagem no livro de visitas.

    O campo nome definido com varchar(255), que significa uma string de at 255 caracteres. Ento o nome dapessoa poder ir at 255 caracteres, sendo que o nome tiver apenas 50 caracteres, o banco de dados ir usarapenas os 50 caracteres. Se fosse char(255), o banco de dados iria usar todos os 255 caracteres, desperdiando

    Trabalhando com PHP e MySQL: Uma Introduo

    3. Criando um livro de visitas 3

  • memria. Coloquei 255 (que o mximo suportado pelo varchar/char) de exagero mesmo, para falar isso.Diga srio, eu nunca vi algum com um nome to grande que use 255 caracteres... X_x A localizacao tambmusa o varchar, s que comno mximo 50 caracteres.

    O campo mensagem j diferente. Ele comporta textos enormes, e no s restritos a at 255 caracteres. Esta a caracterstica do tipo de campo 'text'. Perfeito para o nosso uso, j que os usurios poderiam deixarmensagens grandes em nosso livro de visitas.

    E por ltimo o campo data, que do tipo datetime. Quando adicionarmos uma entrada nesta tabela, a data queir aparecer neste campo estar no formato AnoMsDia Hora:minuto:segundo. Vamos ver como ficou atabela de descrio da nossa tabela. Fazemos isso da seguinte forma:

    mysql> describe guestbook;+++++++

    | Field | Type | Null | Key | Default | Extra |+++++++

    | id | int(5) unsigned zerofill | | PRI | NULL | auto_increment || nome | varchar(255) | YES | | NULL | || localizacao | varchar(50) | YES | | NULL | || mensagem | text | YES | | NULL | || data | datetime | YES | | NULL | |+++++++

    Agora vamos incluri alguns dados nesta tabela ento:

    mysql> INSERT INTO guestbook VALUES( > '00000', > 'Eitch', > 'Makai', > 'Eu posso colocar muito texto aqui, j que este campo do tipo text.', > NOW() > );Query OK, 1 row affected (0.00 sec)

    Trabalhando com PHP e MySQL: Uma Introduo

    3. Criando um livro de visitas 4

  • mysql> INSERT INTO guestbook VALUES( > '00000', > 'Hugo', > 'Japo', > 'Esta uma outra mensagem de teste!', > NOW() > );Query OK, 1 row affected (0.00 sec)

    mysql>

    Inclumos duas linhas na nossa tabela 'guestbook'. Mas vamos supor que na segunda incluso, eu troquei asbolas e ao invs de colocar que eu estava no Brasil, coloquei que eu estava no Japo (quem dera). Primeirovamos visualizar os dois campos para ver suas informaes, e depois atualizar os dados da segunda linha paraque fique Brasil ao invs de Japo na localizao:

    mysql> SELECT * FROM guestbook;++++++

    | id | nome | localizacao | mensagem | data |++++++

    | 00001 | Eitch | Makai | (Mensagem cortada) | 20020919 17:42:53 || 00002 | Hugo | Japo | (Mensagem cortada) | 20020919 17:43:13 |++++++

    2 rows in set (0.00 sec)

    mysql> UPDATE guestbook SET localizacao='Brasil' WHERE id='00002';Query OK, 1 row affected (0.01 sec)Rows matched: 1 Changed: 1 Warnings: 0

    mysql> SELECT * FROM guestbook;++++++

    | id | nome | localizacao | mensagem | data |++++++

    | 00001 | Eitch | Makai | (Mensagem cortada) | 20020919 17:42:53 || 00002 | Hugo | Brasil | (Mensagem cortada) | 20020919 17:43:13 |

    Trabalhando com PHP e MySQL: Uma Introduo

    3. Criando um livro de visitas 5

  • ++++++

    2 rows in set (0.00 sec)

    mysql>

    Ok ento, viu s como eu atualizei os dados? As instrues SQL so bem fceis, principalmente para quemsabe ingls, pois voc consegue 'ler' coerentemente o que est tentando dizer ao banco de dados para fazer. Nocaso da atualizao, pedimos ao banco de dados para atualizar a tabela 'guestbook', mudando o campolocalizacao para 'Brasil' nas linhas que tiverem o 'id' igual 00002. Isso s vai atualizar a linha 2. Se notivesse a instruo 'WHERE', todos os campos localizacao de todas as linhas seriam mudados para 'Brasil'.

    E por ltimo, percebemos que a segunda linha ficou uma porcaria, e que realmente eu no era para estarlocalizado no Brasil, a mensagem que deixei ruim, e o meu nome feio. Ento para aliviar todos estesdanos, vamos excluir essa linha do banco de dados. Fazemos isso assim:

    mysql> DELETE FROM guestbook WHERE id='00002';Query OK, 1 row affected (0.00 sec)

    Pronto! Nos livramos da segunda linha, ficamos apenas com a primeira mesmo. Usamos o comando"SELECT" para visualizar os dados da nossa tabela. Com este comando podemos requisitar apenasdeterminados campos, na ordem que quisermos. Veja o exemplo a seguir:

    mysql> select id,nome,localizacao FROM guestbook;++++

    | id | nome | localizacao |++++

    | 00001 | Eitch | Makai |++++

    1 row in set (0.00 sec)

    mysql>

    Trabalhando com PHP e MySQL: Uma Introduo

    3. Criando um livro de visitas 6

  • Agora vou adicionar uma srie de linhas com vrios dados diferentes, para que possamos testar maisconsultas. Depois de criado mais ou menos 10 linhas diferentes, vamos testar algumas coisas legais docomando SELECT:

    mysql> SELECT COUNT(*) FROM guestbook;++

    | COUNT(*) |++

    | 11 |++

    1 row in set (0.00 sec)

    mysql> SELECT id,nome,localizacao FROM guestbook ORDER BY nome;++++

    | id | nome | localizacao |++++

    | 00009 | Artemis | Lua || 00001 | Eitch | Makai || 00007 | Fulano | Nova Zelndia || 00012 | Hansi Krch | MiddleEarth || 00006 | Joey DeMaio | Battlefield || 00010 | Kaoru | Japo || 00005 | King Diamond | House Of God || 00003 | Lina Inverse | Mundo de Slayers || 00004 | Narusegawa Naru | Hinata Sou || 00011 | Sakura | Japo || 00008 | Zeca Pagodinho | Cachaalandia |++++

    11 rows in set (0.00 sec)

    mysql>

    A funo MySQL COUNT(*) conta quantas linhas tem na nossa tabela. No nosso exemplo aqui foram 11linhas. Logo em seguida a consulta pediu os campos id,nome e localizacao da tabela guestbook, ordenandopor ordem alfabtica no campo nome. Agora vamos salvar todo o contedo de nosso banco de dados em um

    Trabalhando com PHP e MySQL: Uma Introduo

    3. Criando um livro de visitas 7

  • arquivo texto com todos os comandos. Chamamos este arquivo de arquivo dump, e criamos ele da seguintemaneira no prompt de comando:

    $ mysqldump u root p guestbook > guestbook.sql

    O arquivo guestbook.sql ser criado, e se voc editlo com um edito de texto comum, ver que ele contmvrios comandos SQL para criar as tabelas do banco de dados e colocar os dados nestas tabelas. Se por acasovoc precisar importar estes dados para o seu banco de dados, voc usa o seguinte comando:

    $ mysql u root p guestbook < guestbook.sql

    E j que criamos um backup de todas as nossas tabelas e todos os nossos dados, podemos deletar todos osdados da tabela guestbook com o seguinte comando:

    mysql> DELETE FROM guestbook;Query OK, 0 rows affected (0.00 sec)

    mysql>

    Como no temos o "WHERE", isso vai deletar todos os dados da nossa tabela guestbook :) Mas sequisermos restaurar os dados s utilizar o arquivo .sql que criamos acima. Outros comandos que vocpoder usar no cliente MySQL:

    mysql> SHOW TABLES;++

    | Tables_in_guestbook |++

    | guestbook || teste |++

    1 row in set (0.00 sec)

    mysql> DROP TABLE teste;

    Trabalhando com PHP e MySQL: Uma Introduo

    3. Criando um livro de visitas 8

  • Query OK, 0 rows affected (0.00 sec)

    mysql>

    Aqui respectivamente eu mostrei as tabelas que estava no banco de dados guestbook (criei uma outra tabelachamada teste s para ilustrar) e depois exclu (DROP) a tabela teste do banco de dados.

    Deu para perceber como se trabalhar com MySQL? bem fcil, mas recomendo que voc olhe um pouco dadocumentao do programa, para obter mais dicas. Ao longo do nosso exemplo de livro de visitas, novas dicasiro surgir. Todas as instrues aprendidas neste tpico sero usadas no nosso exemplo, j que o PHP vaimandar para o servidor exatamente estas strings que colocamos no prompt do MySQL. Vamos com calma quevoc vai entender.

    3.2. Utilizando o PHP

    Antes de mais nada vamos testar o funcionamento do PHP. O PHP vem com uma funo bem simples paramostrar que est funcionando. Suponhamos que o seu servidor j esteja configurado para rodar PHP em todosos arquivos com extenso .php, ento vamos criar dentro do diretrio de pginas do seu servidor web umarquivo chamado phpinfo.php, com o seguinte contedo:

    Vejamos... Note que para linhas comentadas (ignoradas pelo interpretador, servindo apenas de comentrios ouexplicaes), o PHP utiliza duas barras (//). Bem ao estilo C, pois ele tambm suporte comentrios demltiplas linhas, como o a seguir:

  • /*

    Este um comentrio com mltiplas linhas, igual aos comentriosda linguagem C. Isto tudo ser ignorado no cdigo.

    */phpinfo();?>

    Depois de salvo o phpinfo.php, coloque o endereo dele no browser e voc vai ver vrias informaesmostradas pelo PHP. Esta funo muito til para quem quer saber como o PHP foi compilado, com suporte aque, a verso dele, variveis de ambiente, entre outros. O prximo passo para entender melhor como funcionao PHP, saber que ele trabalha junto com HTML. Nos exemplos anteriores voc pde notar que comeamos ocdigo PHP com a tag . Isso significa que podemos colocar cdigo HTMLquando no estivermos dentro desta tag PHP. Veja o exemplo abaixo:

    Pgina de Teste

  • ?>

    Copie este exemplo para uma pgina PHP e aponte no browser. Veja que eu misturei cdigo HTML comPHP, e isso muito comum neste tipo de linguagem para Web. Isso torna o PHP muito flexvel para poder ircolocando cdigo onde quiser, misturando sempre com a sade em HTML. sempre bom voc separar cdigode design HTML, mas isso se faz usando Templates, que um passo mais complicado, que no iremos falarneste tutorial.

    Vimos neste exemplo acima pouca coisa, mas vale notar que usamos a funo echo do PHP, que imprime astring no output, ou seja, na pgina HTML. Mas precisamos de algo mais "complexo" para fazer o nossoguestbook funcionar. Como estamos trabalhando com MySQL, usaremos as funes MySQL incorporadascomo mdulo ao PHP. Pra no ficar muito chato, vamos para um exemplo:

    ID Nome Localizao

    Trabalhando com PHP e MySQL: Uma Introduo

    3.2. Utilizando o PHP 11

  • O resultado disso, de acordo com os dados que colocamos no nosso banco de dados, ser o seguinte:

    ID Nome Localizao00009 Artemis Lua00001 Eitch Makai00007 Fulano Nova Zelndia00012 Hansi Krch MiddleEarth00006 Joey DeMaio Battlefield00010 Kaoru Japo00005 King Diamond House Of God00003 Lina Inverse Mundo de Slayers

    Trabalhando com PHP e MySQL: Uma Introduo

    3.2. Utilizando o PHP 12

  • 00004 Narusegawa Naru Hinata Sou00011 Sakura Japo00008 Zeca Pagodinho Cachaalandia

    Viu como ficou legal? Extramos os dados da nossa tabela guestbook no banco de dados guestbook, ecolocamos numa tabela HTML, para visualizao no browser. Bem fcil no? No? Ah! Tambm, eu esquecide explicar direito o que o cdigo faz... T bom, vamos l.

    As primeiras linhas do cdigo configuram uma array com as mensagens de erro que vou usar depois. Se vocainda no conhece o que uma array, uma array um tipo especial de varivel que contm vrios valores. Nocaso criamos a array $msg, que tem duas outras variveis dentro dela. A 0 representa a mensagem de erro deque no foi possvel conectar ao servidor MySQL, e a 1 representa a mensagem de que no foi possvelselecionar o banco de dados. Mais para frente, usaremos array mais uma vez. Alis, se voc for programar emPHP, com certeza voc ainda vai usar muita array em sua vida.

    Depois que a comea a esquentar. Comeamos a usar as funes MySQL do PHP. A funomysql_pconnect() abre a conexo com o banco de dados, e aponta esta conexo para a varivel $conexao.Esta varivel ser usada mais tarde para os outros comandos do MySQL. Note tambm que nesta conexo, foipreciso voc informar o host/ip onde o servidor MySQL est rodando, o usurio para se conectar e a senhadeste usurio. Se por alguma razo o PHP no conseguir estabelecer a conexo, ele ir chamar a funo die(),que termina o script PHP e gera uma mensagem no browser, que no nosso caso vai ser o contedo da array$msg[0].

    J a funo mysql_select_db(), voc seleciona o banco de dados que usar. O primeiro parmetro indica onome do banco de dados que voc quer usar, e o segundo a varivel de referncia que usamos para identificara conexo com o banco de dados MySQL, que aqui no nosso tutorial nomeamos de $conexao. Caso ele noconsiga selecionar o banco de dados, ele chama a funo die(), mostrando o contedo da array $msg[1].

    Agora vem a parte interessante. Lembra da flexibilidade do PHP, em que voc pode sair e entrar do cdigoPHP livremente? Ento na parte que se segue voc viu um exemplo disso. Samos do "Modo PHP", ecolocamos as tags HTML para iniciar uma tabela. Colocamos as colunas ID, Nome e Localizao, que so os

    Trabalhando com PHP e MySQL: Uma Introduo

    3.2. Utilizando o PHP 13

  • dados que iremos pegar do banco de dados.

    Depois entramos no "Modo PH" novamente, e fazemos uma consulta no banco de dados MySQL e colocamoso resultado em uma varivel. Como voc pode ver, a funo mysql_query() responsvel pela consulta nobanco de dados MySQL. Ento voc ir utilizar esta funo para fazer todas as coisas, selecionar, inserir,excluir, etc, como aprendemos anteriormente no prompt do MySQL. Tudo que voc digitou no prompt doMySQL tambm vlido como primeiro parmetro da funo myqsl_query(). No caso usamos um exemploque j usamos anteriormente.

    A seguir vem o truque. O lao while vai fazer o trabalho de pegar cada linha do resultado da nossa consultaMySQL e transformar em array (no falei que iramos usar mais uma vez?). A funo mysql_fetch_array()transforma esse resultado de consulta em array. Como temos 11 linhas, o lao vai se repetir 11 vezes. Osdados da linha no banco de dados ser identificados na array $linha. Ento identificamos o dado utilizando$linha['nome_do_campo'], ou seja, $linha['id'], $linha['nome'] e $linha['localizacao']. Colocamos isso emuma linha de tabela.

    Depois de passado cada linha, totalizando 11 linhas, o lao while acaba e o cdigo PHP continua, chamando atag que finaliza a tabela, que o

    . Pronto! Extramos os dados do banco de dados. Fcil n? Com isso deu pra entender melhor como o PHPtrabalha com bancos de dados. Agora vamos ao exemplo que realmente interessa...

    3.3. Criando o cdigo do Livro de Visitas

    Vamos agora criar o Livro de Visitas em si. Vamos usar dois arquivos, um para a visualizao do livro devisitas, e outro para a incluso de uma mensagem no livro de visitas. Vou j incluir todo o cdigo pronto doprograma, fragemntado em partes para a explicao. Os comentrios tambm so esclarecedores.

    Ok, vamos primeiro Incluso! Crie um arquivo chamado assinar.php e mos obra:

    Trabalhando com PHP e MySQL: Uma Introduo

    3.3. Criando o cdigo do Livro de Visitas 14

  • }?>

    Livro de Visitas: Assinar

    Assine o Livro de Visitas

  • Digite aqui suamensagem!

    Deu para perceber mais ou menos como funciona o cdigo acima? Repare como eu fao muito o uso docontrole de fluxo if. No comeo o if testa se o usurio postou algum formulrio. Para fazer isso, ele verifica sea varivel $REQUEST_METHOD igual "POST". Se for "POST", quer dizer que o usurio postou algumacoisa atravs de um formulrio, e se for "GET", quer dizer que a requisio da pgina foi feita pelo modonormal, sem postar nada.

    Depois o cdigo testa com o if novamente para ver se o usurio preencheu todos os campos. Para fazer issoele testa se existe as variveis correspondentes aos campos de formulrio existente na nossa pgina. Casoaqueles campos estejam todos preenchidos, o cdigo conecta ao servidor MySQL, seleciona o banco de dadosque queremos, e depois constri uma consulta SQL, incluindo os dados na tabela do banco de dados. A partede incluso do servidor MySQL no nova para ns, que j vimos o procedimento anteriormente.

    Agora algo interessante. Depois que tudo tiver feito, precisamos redirecionar o navegador do nosso visitantepara outro lugar. Para fazer isso, usamos a funo header() do PHP, que como o nove diz, manda umcabealho para o navegador do visitante. A funo header s pode ser usada no comeo dos scripts, sem quenada tenha sido impresso no navegador do cliente. Esta uma restrio do prprio protocolo HTTP, e no doPHP, pois o cabealho sempre tem que vir antes n! :) No nosso caso, enviamos o cabealho "Location:", que

    Trabalhando com PHP e MySQL: Uma Introduo

    3.3. Criando o cdigo do Livro de Visitas 17

  • diz ao navegador para onde ele tem que ir. Ento depois que o cdigo inclui os dados no banco de dadosMySQL, ele redireciona o navegador para a pgina ler.php. Podese colocar qualquer URL vlida nocabealho "Location:". Ento, continuando o cdigo, se tudo der certo, ele vai para a pgina de leitura, mas sefor o caso dele no ter preenchido os campos, ou se ele no enviou nada por algum campo de formulrio, oresto do cdigo executado.

    O resto do cdigo a pgina HTML em si, com os formulrios para preenchimento e este tipo de coisa. Oscomentrios no cdigo explicam como o fluxo do if pode ser til para por exemplo, mostrar uma mensagemde erro, se houver um erro claro.

    Agora vamos para o ler.php, que vai ser a pgina onde ir se mostrar as assinaturas do livro de visitas! Vamosao arquivo:

    Livro de Visitas: Ler

    Livro de Visitas

    Trabalhando com PHP e MySQL: Uma Introduo

    3.3. Criando o cdigo do Livro de Visitas 18

  • Total de mensagens postadas: (Assine voc tambm!)Exibindo 20 mensagens por pgina, mostrando mensagens de a .

  • $anteriores = 'Anteriores';} else {

    $anteriores = 'Anteriores';}

    if (($begin < $total) and (($begin+20) >= $total)) {$proximas = 'Prximas';

    } else {$proximas = 'Prximas';}

    echo $anteriores . " | " . $proximas;// Faz uma consulta SQL trazendo as linhas das 20 ultimas mensagens// que foram colocadas no livro de visitas.$query = "SELECT * FROM guestbook ORDER BY data DESC LIMIT $begin,20";$query = mysql_query($query,$conexao);

    // Gera uma tabela para cada assinatura no livro de visitas (loop)while ($linha = mysql_fetch_array($query)) {

    // Organiza a mostragem da data, j que no campo do MySQL, a data // se encontra em uma forma no to legal.

    $var = $linha['data'];$var = explode(" ",$var);$dia = $var[0];$hora = $var[1];$dia = explode("",$dia);$data = "$dia[2]/$dia[1]/$dia[0] s $hora";?>

    Trabalhando com PHP e MySQL: Uma Introduo

    3.3. Criando o cdigo do Livro de Visitas 20

  • Data: Nome: Localizao: Mensagem:

    Apesar de que no cdigo j h vrios comentrios explicando a funcionabilidade das linhas, vamos dar umaolhada geral no que este arquivo PHP faz. Antes de mais nada, o cdigo verifica se existe a varivel $begin,obtida pelo mtodo HTTP GET (requisio normal HTTP, enquanto que o mtodo POST por formulrio).Esta varivel ser usada mais adiante para saber quais mensagens sero mostradas para o usurio. Se a

    Trabalhando com PHP e MySQL: Uma Introduo

    3.3. Criando o cdigo do Livro de Visitas 21

  • varivel no existir, dse o valor de 0 para que ele comece da "primeira" mensagem.

    Depois hora de pegar as mensagens do servidor de banco de dados e coloclas em variveis paraimprimirmos na pgina, colocando assim as assinaturas do livro de visitas. Para fazer isso, primeiroconectamos ao servidor de banco de dados, e selecionamos o banco de dados. E antes de consultar todas asmensagens, pegamos tambm o nmero total de mensagens, atravs da funo count() do MySQL, como vocpode ver no cdigo. Esta funo ir retornar quantas linhas tem na tabela em que se fez a consulta, ou seja, atabela guestbook. Esse nmero total ser usado junto com o $begin para poder ser usada na mostragem dasmensagens para o usurio...

    ...Que ser agora! Com um raciocnio simples, e alguns controles de fluxo com o if, podemos criar linksdiferentes. O que queremos fazer que se estiver sendo mostrada desde a primeira mensagem, o link de"mensagens anteriores" no ser mostrado, e sim apenas o de "prximas mensagens". A mesma coisa feitacom as prximas mensagens, s que dessa vez no aparece o link se estiver mostrando a ltima mensagem.Como a vida cruel, no vou explicar detalhadamente como essa parte do cdigo funciona, porque aprender aler o cdigo e entender uma parte essencial. mais difcil eu explicar do que voc entender sem ler aexplicao :)

    O que vem agora finalmente a mostragem de mensagens. Usaremos aqui dois atributos do MySQL que noconhecemos, que o DESC e o LIMIT. Ento construmos a consulta do MySQL e armazenamos seuresultado na varivel $query. Depois vem o interessante, fazemos um lao com a funo while() do PHP e acada linha que se tem na nossa consulta (no nosso caso, cada mensagem), se criaria uma array chamada$linha com os valores de cada linha. No nosso caso, o while() faria com que se imprimisse no navegador umatabela HTML para cada mensagem do nosso livro de visitas.

    Repare tambm que como no queremos que se mostre todas as linhas da tabela MySQL na nossa consulta,usamos o atributo LIMIT, que como o nome diz, especifica um limite para a quantidade de linhas que serretornada. O formato deste atributo LIMIT inicio,quantidade. No nosso caso, o inicio a mensagem inicial,que temos atravs da varivel $begin discutida anteriormente. E como queremos mostrar apenas 20mensagens, colocamos o nmero 20, para se mostrar 20 mensagens. como se dissssemos por exemplo:"Limite a consulta para 20 linhas, comeando da linha 0."

    Trabalhando com PHP e MySQL: Uma Introduo

    3.3. Criando o cdigo do Livro de Visitas 22

  • Outra coisa que queramos no nosso livro de visitas, que as ltimas assinaturas seriam mostradas primeiro.Ento na consulta que fizemos no MySQL, usamos o atributo DESC, que quer dizer "decrecente". Isso j diztudo, ele inverte a ordem das linhas e vai na ordem descrecente. E alm desse, vou deixar de comentartambm o uso da funo explode(), que usei na formatao da data do MySQL, assim voc poder pesquisarmelhor e entender como ela funciona. S uma definio rpida e objetiva: ela cria uma array com a separaode uma string delimitada por um certo caracter que voc mesmo especifica! Oops, eu disse tudo!

    Com isso, todas as mensagens so mostradas. Experimente o programinha que voc acabou de fazer eacompanhar neste tutorial, e comece a personalizlo, assim voc vai aprender mais ainda. Uma timareferncia de PHP o manual oficial, disponibilizado no site oficial, http://php.net/, l voc encontra todas asfunes que voc poderia usar no seu programa. Boa sorte e at a prxima!

    1. AnexosArquivo assinar.php do livro de visitas (phps) Arquivo ler.php do livro de visitas (phps)

    Hugo Cisneiros,

    Trabalhando com PHP e MySQL: Uma Introduo

    1. Anexos 23

    Table of ContentsTrabalhando com PHP e MySQL: Uma Introduo1. A linguagem PHP2. O uso do PHP com Bancos de Dados3. Criando um livro de visitas3.1. Conectando ao servidor MySQL e criando o banco de dados3.2. Utilizando o PHP3.3. Criando o cdigo do Livro de Visitas

    1. Anexos