Você está na página 1de 16

Sumrio

1 Programao para a Web


1.1 1.2 1.3 O que SERVER-SIDE? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduo ao PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O que necessrio para executar o PHP? . . . . . . . . . . . . . . . . . . . . . .

2
2 2 3

Comandos Bsicos
2.1 2.2 2.3 Operadores Lgicos e Matemticos Formulrio HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Criando uma calculadora interativa atravs do mtodo GET

3
4 6 7

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Integrando PHP com MySQL


3.1 3.2 3.3 O que MySQL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Estabelecendo uma conexo 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Criando um Sistema de Noticias . . . . . . . . . . . . . . . . . . . . . . . . . . . Inserindo Noticias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Listando as Noticias Excluindo Noticias Alterando Noticias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8
8 9 10 10 11 12 13 15

Finalizando o sistema de Noticias . . . . . . . . . . . . . . . . . . . . . .

4 5

Exercicios Referncias Bibliogrcas

16 16

Lista de Cdigos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 Oi Mundo e Hora do Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 4 5 6 8 10 11 12 12 13 14 15 15 Variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lao de repetio for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Estruturas de controle e operadores lgicos . . . . . . . . . . . . . . . . . . . . . Uma Calculadora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formulrio para a Calculadora . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formulrio para inserir Noticia . . . . . . . . . . . . . . . . . . . . . . . . . . . Cdigo para inserir Noticia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cdigo que gera uma lista com as ultimas 10 noticias . . . . . . . . . . . . . . . Excluindo Noticias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formulrio para alterar Noticia

Cdigo de alterao de noticia . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exibindo a lista de noticias no site Exibindo noticia no site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1 Programao para a Web


A estrutura de um Web site contruida atravs de cdigos HTML. O HTML uma linguagem de marcao de texto, ela descreve a formatao que o documento possuir. HTML no uma linguagem de programao, pois no realiza nenhum tipo de processamento sobre dados de entrada fornecidos pelos usurios. Os cdigos HTML so estticos, Para suprir a necessidade do dinamismo, diversas linguagens de programao so usadas em conjunto com o HTML para transformar um Web site em um objeto que possua interatividade e dinamismo. Dentre algumas destas linguagens podemos mencionar como as mais utilizadas: 1.

JavaScript: linguagem de programao que usa o prprio Browser do usurio como


interpretador para executar seus cdigos, infelizmente, a linguagem muito dependente do Browser em que o Web site acessado, se o Browser no possui funes de interpretao ou esta foi desabilitada o cdigo JavaScript no ser executado;

2.

PHP: uma linguagem interpretada, open-source, possui uma sintaxe semelhante a da


linguagem C. Ela tem uma srie de funes como: criptograa, gerao de documentos PDF, ordenao de dados, entre outras, que facilitam a criao de Web sites dinmicos;

3.

ASP: uma linguagem interpretada de propriedade da Microsoft, sendo assim, fortemente


ligada ao sistema operacional Windows, o que a torna pouco portvel;

4.

JSP: A tecnologia JSP uma extenso da classe dos Servlets . Ela foi desenvolvida para
facilitar a integrao entre cdigos Java e HTML.

1.1

O que SERVER-SIDE?

As linguagens de programao para a Web que possuem seu processamento realizado localmente, ou seja, na mquina do usurio que acessou o site, so conhecidas como CLIENT-SIDE.

JavaScript, Macros, Applets, fazem parte deste grupo de linguagens.


Em contrapartida, existem linguagens que realizam a etapa de processamento no servidor Web em que esto hospedadas, este tipo de linguagem conhecida como SERVER-SIDE.Estas linguagens ganharam fora no ltimos anos pois tornam os Web sites verdadeiras aplicaes. Tanto as linguagens SERVER-SIDE como CLIENT-SIDE, pertencem ao grupo das linguagens de programao interpretadas, elas necessitam de um sistema que receba o cdigo escrito na linguagem especca e o processa de acordo com seu funcionamento interno e retorna ao

Browser do usurio o resultado.


Como exemplo de tecnologias SERVER-SIDE temos o PHP, ASP, JSP, Servlets.

1.2

Introduo ao PHP
O objetivo da linguagem PHP permitir que

PHP uma linguagem de script embutida no cdigo HTML. Muito de sua sintaxe foi inspirada
em outras linguagens como: C, Java e Perl. desenvolvedores Web construam pginas dinmicas com certa velocidade. Por ser uma linguagem SERVER-SIDE PHP independente de plataforma, ou seja, para ser executado um script em um servidor web qualquer necessrio que este servidor possua o interpretador PHP, independente de qual o Sistema Operacional que este rode. 2

Veja um exemplo de um arquivo .php que ir realizar a insero da frase "Oi Mundo", de uma quebra de linha <BR> e data no cdigo HTML. Cdigo 1: Oi Mundo e Hora do Servidor
1 2 3 4 5 6 7 8

<html> <body> <?php echo "Oi Mundo"?> <?php echo "<br >"?> A data a t u a l do s e r v i d o r <br> <? echo d a t e ( 'M d Y' )?> </body> </html>
Percebam que o arquivo praticamente todo composto por tags HTML, com exceo das linhas 3,4 e 6. Todos os comandos em php devem estar entre delimitadores especiais que o identicam, no cdigo 1 foram utilizados dois demarcadores diferentes o <?php ?> e a forma contrada <? ?>. Na linha 3 temos o comando

echo que realiza a escrita dentro do cdigo HTML, neste caso echo.

a frase "Oi Mundo"foi escrita, comando em HTML podem ser inseridos dentro de um bloco php desdeque seja escrito dentro de um

1.3

O que necessrio para executar o PHP?

O PHP uma linguagem interpretada, sendo assim, para que um arquivo .php seja executado corretamente por um servidor Web, necessrio que este possua instalado o interpretador php. Atualmente o PHP est na verso 5.0 e pode ser baixado gratuitamente no endereo www.php.net Uma das combinaes mais comuns em servidores Web a utilizao do Apache como servidores de HTTP e o PHP como linguagem para a construo de sites dinmicos.

2 Comandos Bsicos
Toda linguagem de programao trabalha com o conceito de variveis, em PHP alguns pontos devem ser ressaltados.

A declarao de uma varivel acontece com o uso do $, assim o texto $x em PHP realiza a criao de uma varivel; Para denir um valor a uma varivel basta usar o sinal de =, $x=10, diz que a varivel x ir armazenar o valor 10; As variveis no possuem tipo previamente denidos, seu tipo denido pelo seu contedo, em php esta combinao permitida $x=10 e logo em seguinda $x="string" ; A declaradas de uma varivel pode acontecer em qualquer parte do cdigo; Seu tempo de vida igual ao tempo de vida da pgina; PHP case sensitive, acessar a varivel $Arvore no igual a acessar a varivel $arvore.

Veja no cdigo 2 o uso de variveies em PHP.

Cdigo 2: Variveis
1 2 3 4 5 6 7 8 9

<html> <body> <?php

?> </body> </html>

$musica = "Moda de Viola" ; // e s c r e v e o v a l o r da v a r i v e l na t e l a echo $musica ;

Na linha 4 foi declarada uma varivel cujo nome $musica, logo em seguida foi atribuda,

"Sinal de atribuio =, Sinal de comparao ==", uma string com o texto "Moda de Viola"a
ela. Na linha 5 observa-se o uso do //, este um dos demarcadores de comentrios de uma linha. Para denir vrias linhas de comentrio usa-se o os demarcadores /* */. Na linha 6 aparece o comando

echo, esta a funo realiza a insero de algum contedo print.

no cdigo HTML de uma pgina, outra funo que pode ser usada para o mesmo m o basicamente 3 deles: 1. while (condio verdadeira) 2. do

Outra operao muito usada na programao o uso dos laos de repetio, PHP possui

Bloco de instruo }

Bloco de instruo } while (condio verdadeira);

3. for (contador; condio verdadeira; variao do contador) Segue no cdigo 3 o uso do lao

Bloco de instruo }

for.

Cdigo 3: Lao de repetio for


1 2 3 4 5 6 7 8 9 10 11 12 13

<html> <body> <?

$ i <10; $ i ++) { echo $ i ; / p r o c u r e e v i t a r o uso de HTML j u n t o com os comando em html , p r e f i r a f e c h a r a t a g do php e r e a b r i l a d e p o i s de u s a r o HTML / ?><br><? } ?> </body> </html>

for ( $ i =0;

2.1

Operadores Lgicos e Matemticos

No PHP h diversos operadores matemticos que podem ser utilizados, sendo que alguns destes operadores bsicos que so conhecidos por qualquer pessoa. O PHP tambm oferece diversos operadores para o controle de uxo de dados (tambm conhecidos como operadores Lgicos). Observe abaixo a tabela com alguns dos operadores lgicos.

e lgico ou lgico negao ou exclusivo

and or ! xor

Veja a seguir a tabela com os operadores de comparao. igual a diferente de menor que maior que menor ou igual maior ou igual Tabelas com operadores matemticos incrementa 1 a decrementa 1 soma subtrao diviso resto da diviso ++ - + / %

== != < > <= >=

Outra questo importante quanto ao desenvolvimento de Web sites o uso dos vetores tambm conhecidos como array. lgicas e operadores matemticas. Cdigo 4: Estruturas de controle e operadores lgicos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Veja o cdigo 4 para uma viso sobre vetores, operaes

<html> <body> <t a b l e b o r d e r="1"> <? // c r i a um a r r a y com os d i a s da semana $ c o r = a r r a y ( "#666666" , "#999999" ) ; $ d i a = a r r a y (1=> "Domingo" , "Segunda" , "Tera" , "Quarta" , "Quinta" , "Sexta" , "Sbado" ) ; // c o n t ( $ a r r a y ) uma funo que r e t o r n a a q u a n t i d a d e de e l e m e n t o s no v e t o r for ( $ i =1; $ i <= count ( $ d i a ) ; $ i ++){ ?>< t r b g c o l o r=" <? echo $cor[$i%2]? >"> <td><? i f ( $ i == 7 ) { // o . usado para c o n c a t e n a r duas S t r i n g s echo "Nada melhor que um " . $ d i a [ $ i ] ; } else { // a c e s s a a p o s i o $ i do a r r a y $ d i a echo $ d i a [ $ i ] ; } ?></t r ></td><? } ?> </t a b l e > </body> </html>
5

Na linha 6 podemos observar a criao de um vetor chamado $cor com dois elementos, importante observar que um vetor por padro comea a sua indexao a partir do valor 0, a menos que se faa de maneira explicita um pedido para que o primeiro ndice seja outro valor como aconteceu na criao do vetor $dia na linha 7, neste o primeiro elemento ser indexado pelo nmero 1. Em muitos momentos como desenvolvedores Web, necessitamos criar tabela que tenham cores alternadas em suas linhas, um exemplo de como fazer isto est na linha 11. Veja que os comando em HTML aparecem normalmente, dentro da tag bgcolor temos um comando

echo

$cor[$i%2], a funo echo ir escrever no HTML o resto da diviso da varivel


esta operao pode ter apenas dois resultados, 0 se usado com ndice do vetor

$i por dois, $i for par ou 1 se $i for mpar, e este valor $i


e o nmero 7, possvel ter vrias

$cor[],

para escolher entre a cor de ndice 0 ou 1.

Na linha 13 temos uma comparao entre a varivel

comparaes sendo feitas dentro do mesmo comando if, para isto, basta colocar todas dentro de parnteses e uni-las com os operadores lgicos, exemplo if((a==10) and (b !=1)). Tambm possvel utilizar a clusula else como mostra a linha 16, o bloco de comando do else sempre ser executado quando a vericao do if retornar falso. Para nalizar o estudo deste exemplo temos na linha 15 uma concatenao entre duas variveis, esta concatenao feita utilizando o operador "ponto .", note que elas so de tipos diferentes de dados, o PHP faz a converso, casting, automtico das variveis.

2.2

Criando uma calculadora interativa atravs do mtodo GET

Nesta Seo ser criada uma aplicao simples que responder como uma calculadora comum. Os objetivos desta atividade so: conhecer outra estrutura de seleo, o switch, e entender como podemos "pegar"atravs do PHP variveis passadas pela URL. segue a aplicao no cdigo 2.4. Neste exemplo temos nas linhas 2, 3 e 4 a criao de variveis que recebero seus valores a partir de variveis passadas atravs da URL da pgina. Se a URL passada for, por exemplo,

exemplo5.php?n1 = 10&n2 = 5&op = adicao, a varivel $numero1 receber o valor 10, a varivel $numero2 receber o valor 5 e a varivel $op receber o valor "adio".
Em situaes que o nmero de opes diferentes muito grande o uso da instruo if tornase invivel, assim, para solucionar este problema pode-se utilizar a estrutura switch, ela se comporta como o case do Pascal ou o comando de mesmo nome nas linguagens C e Java. Para cada caso necessrio criar uma estrutura case e logo em seguida a comparao que ir ser vericada para a execuo do bloco do case. de suma importncia que ao nal de cada bloco

case coloque-se o comando break;, para que os demais blocos no sejam executados.
Na linha 26 temos o comando default, isto dentro de um comando switch signica que, se nenhuma das condies estabelecidas anteriormente for tida como verdadeira ento o bloco da opo default ser executada. A varivel

$f lag

usada como um marcador, uma bandeira sinalizadora sobre o andamento

do processamento, em muitos casos faz-se necessria o conhecimento se uma determinada ao aconteceu ou no, a forma mais comum a de estabelecer uma varivel que sinaliza este acontecimento, no nosso caso se processados, se

$f lag == 0

ento os dados de entrada eram vlidos e puderam ser

$f lag == 1

ento ocorreu um erro de diviso por zero e se

$f lag == 2

ento

a operao passada no era vlida. Cdigo 5: Uma Calculadora


1

<?
6

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

$numero1 = $_GET[ "n1" ] ; $numero2 = $_GET[ "n2" ] ; $ o p e r a c a o = $_GET[ "op" ] ; $resultado = 0; $flag = 0; switch ( $ o p e r a c a o ) { case $ o p e r a c a o=="adicao" : $ r e s u l t a d o = $numero1 + $numero2 ; break ; case $ o p e r a c a o==" subtracao " : $ r e s u l t a d o = $numero1 $numero2 ; break ; case $ o p e r a c a o==" multiplicacao " : $ r e s u l t a d o = $numero1 $numero2 ; break ; case $ o p e r a c a o=="divisao" : // v e r i f i c a r s e nmero d o i s no z e r o i f ( $numero2==0) { $flag = 1; } else { $ r e s u l t a d o = $numero1 / $numero2 ; } break ; default : echo "Operao no conhecida " ; $flag = 2; break ; } i f ( $ f l a g == 1 ) { echo "Erro de diviso por 0" ; } i f ( $ f l a g == 2 ) { echo "Operao desconecida use: <br > - adicao <br > - subtrao <br > - diviso <br > - multiplicao " ; } i f ( $ f l a g ==0) { echo "O Resultado igual a " . $ r e s u l t a d o ; }

?>

2.3

Formulrio HTML

Um formulrio HTML uma das formas mais comuns de realizar a interligao entre o usurio e o Web site. Duas coisas so importantes quando se cria um formulrio. 1. A tag action dene qual ser o arquivo ou aplicao que ir receber os dados do formulrio, este arquivo pode ser uma aplicao CGI, um Servlet, um arquivo ASP, no exemplo, os dados sero submetidos a um arquivo PHP. 2. Os dados de um formulrio podem ser enviado atravs de dois mtodos o post e o get, a diferena entre eles que enquanto o get envia os dados atravs da URL o mtodo post anexa os dados contidos nos elementos do formulrio ao cabealho HTTP. 7

Cdigo 6: Formulrio para a Calculadora


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

<html> <form name=" calculadora " mathod="get" a c t i o n="exemplo5.php"> <t a b l e > <t r > <td>Nmero 1</td> <td><i n p u t name="n1"></td> </t r > <t r > <td>Nmero 2</td> <td><i n p u t name="n2"></td> </t r > <t r > <td>Operao </td> <td> < s e l e c t name="op"> <o p t i o n v a l u e="adicao">+</o p t i o n > <o p t i o n v a l u e=" subtracao "></o p t i o n > <o p t i o n v a l u e=" multiplicacao "></o p t i o n > <o p t i o n v a l u e="divisao">/</o p t i o n > </ s e l e c t > </td> </t r > <t r > <td c o l s p a n="2"><i n p u t type="submit" v a l u e="Calcular"></td> </t r > </t a b l e > </form> </html>
Percebam que no cdigo 6, no existe nenhum comando em PHP, nele esto apenas cdigo HTML, o tratamento dos dados ser realizado no arquivo exemplo5.php como mostra a tag

action na linha 2. O mtodo de envio ser o get tambm descrito na linha 2.


Quando se utiliza o componente select do HTML, o valor que passado pelo formulrio o que est contido dentro do atributo value de cada um dos option que compoem o select. Para que nossa aplicao funcione com o envio dos dados atravs do mtodo post teramos que realizar duas alteraes: 1. no arquivo exemplo6.php na linha 2 a method car method="post" ; 2. no arquivo exemplo5.php nas linhas 2, 3 e 4, o comando

_get deve ser substitudo por

_post

3 Integrando PHP com MySQL


3.1 O que MySQL?
O MySQL um sistema de gerenciamento de banco de dados (SGBD), que utiliza a linguagem SQL (Structured Query Language - Linguagem de Consulta Estruturada) como interface. atualmente um dos bancos de dados mais populares, com mais de 4 milhes de instalaes pelo mundo. Principais caractersticas do MySQL: 8

Portabilidade (suporta praticamente qualquer plataforma atual) Compatibilidade (existem drivers ODBC, JDBC e .NET e mdulos de interface para diversas linguagens de programao, como C/C++, Python, PERL, PHP e Ruby) Excelente desempenho e estabilidade Pouco exigente em termos de recursos de hardware Facilidade de uso um Software Livre Suporte a vrios engines (como MyISAM e InnoDB)

O MySQL foi criado na Sucia por dois suecos e um nlands:

David Axmark, Allan Hoje

Larsson e Michael "Monty"Widenius, que trabalham juntos desde a dcada de 1980. o software, integrando-o a outros produtos, e escrevendo a respeito do mesmo.

emprega aproximadamente 70 prossionais no mundo inteiro, e mais de mil contribuem testando O sucesso do MySQL deve-se em grande medida fcil integrao com o PHP includo, quase que obrigatoriamente, nos pacotes de hospedagem de sites da Internet oferecidos atualmente. Empresas como Yahoo! Finance, MP3.com, Motorola, NASA, Silicon Graphics e Texas Instruments usam o MySQL em aplicaes de misso crtica. O MySQL hoje suporta Unicode, Full Text Indexes, replicao, Hot Backup, GIS, OLAP e muitos outros recursos. Outra grande vantagem a de ter cdigo aberto e funcionar em, quase, qualquer plataforma e sistema operacional : Windows, Linux, FreeBSD, BSDI, Solaris, Mac OS X, SunOS, SGI, etc. reconhecido pelo seu desempenho e robustez e tambm por ser multi-tarefa e multi-usurio. No entanto, devido a no possuir funcionalidades consideradas essenciais em muitas reas, como stored procedures e two-fase commit, frequentemente considerado um sistema mais "leve"e para aplicaes menos exigentes, sendo preterido por outros sistemas como o PostgreSQL.

3.2

Estabelecendo uma conexo

Para que o PHP possa interagir com o MySQL, necessrio realizar uma conexo com o mesmo. Isso feito atravs do seguinte comando:

Mysql_connect(host,login,senha);
Essa funo recebe como parmetros o host do MySQL, e o login e a senha para conexo. Esses parmetros podem ser passados tanto diretamente como em variveis. Caso o seu servidor Mysql no use a porta e o soquete padro, possvel especic-los dentro desta funo.

(host:porta:soquete')
Aps criar a conexo, necessrio selecionar o Banco de Dados onde esta as tabelas com quais o PHP ir interagir. Isso feito atravs do comando:

Mysql_select_bd(database);
Este deve ser executado sempre apos estabelecer uma conexo com o MySQL, e recebe como parmetro o nome do banco de dados. Usa-se o @ prexando cada uma dessas duas funes caso for necessrio utiliz-las em modo silencioso, ou seja, sem retornar nenhuma mensagem de erro. Ex.: @Mysql_select_bd(database); 9

3.3

Criando um Sistema de Noticias

Para melhor entender como o PHP se interage com o MySQL, vamos ilustrar a criao de um sistema de noticia simples, onde poderemos exemplicar os comandos PHP Mysql para a consulta, insero, alterao e excluso de dados do Banco de dados. O PHP passa todas as instrues de manipulao de dados para o MySQL atravs de cdigos em SQL (Structures Query Language), e para isso, usa-se a funo Mysql_Query(), que tem o trabalho de enviar uma consulta SQL ao Banco de Dados MySQL e recebe como parmetro uma string contendo o comando SQL a ser executado.

Mysql_Query(`Select * from tabela');


Primeiramente, vamos trabalhar na parte por trs do sistema de noticias, que a parte onde iremos manipular os dados no banco de dados. A tabela que ir armazenar os dados no banco de dados MySQL composta pelos campos (todos em minsculo):


3.3.1

id: Numero de identicao nico da noticia; titulo: Titulo que descreve a noticia; corpo: Contedo da noticia; autor: Autor da noticia; data: Data de insero da noticia;

Inserindo Noticias

Tendo as informaes sobre quais informaes sero armazenadas dentro da Tabela, podemos ento criar um formulrio para realizar a insero de noticias no MySQL. Podemos notar que os dados para os campos id e data no precisam ser lidos de um formulario, portanto, os dados que necessitam ser lidos so: Titulo, Corpo e Autor e, sendo assim, vamos criar um arquivo chamado inserir_noticia.php, e dentro dele vamos colocar o seguinte formulrio: Cdigo 7: Formulrio para inserir Noticia
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

<html> <head> < t i t l e >A d m i n i s t r a o de N o t i c i a I n s e r i r N o t i c i a </ t i t l e > </head> <body> <h2> I n s e r i r N o t i c i a </h2> <form name="form1" method="post" a c t i o n=" inserir_noticia .php"> <p>T i t u l o :< br> <i n p u t name=" not_titulo " type="text" i d=" not_titulo "></p> <p>Corpo:< br> <t e x t a r e a name=" not_corpo " c o l s="40" rows="6" i d=" not_titulo "> </ t e x t a r e a ></p> <p>Autor :<br> <i n p u t name=" not_autor " type="text" i d=" not_autor "></p> <p><i n p u t name=" not_inserir " type="submit" v a l u e="Inserir"></p> </form> </body> </html>

10

Agora com o Formulrio de Insero criado, podemos criar o cdigo que ir pegar os dados do formulrio e inseri-los na tabela MySQL. Notem no formulrio que a pagina que ira receber os dados enviados a mesma em que o formulrio esta inserido, portanto, vamos inserir todo o cdigo de insero de noticias antes do formulrio, no mesmo arquivo. Cdigo 8: Cdigo para inserir Noticia
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

<?php $ i n s e r i r = $_POST [ 'not_inserir ' ] ; if ( IsSet ( $inserir ) ){ // Conexo com o Banco de Dados Mysql mysql_connect ( " localhost " , "root" , "" ) ; mysql_select_db ( "curso" ) ; $data = getdate () ; $not_dia = $data [ 'mday ' ]+ "/"+$data [ 'mon ' ]+ "/"+$data [ 'year ' ] ; $ n o t _ t i t u l o = $_POST [ 'not_titulo ' ] ; $not_corpo = $_POST [ 'not_corpo ' ] ; $not_autor = $_POST [ 'not_autor ' ] ; $ s q l _ i n s e r i r = "INSERT INTO noticia VALUES (0,' $not_titulo ','$not_corpo ',' $not_autor ','$not_dia ')" ; i f ( Mysql_Query ( $ s q l _ i n s e r i r ) ) { p r i n t "<h4 > Noticia Inserida com Sucesso </h4 >\n" ; } else { p r i n t "<h4 > Erro ao inserir Noticia </h4 >\n" ; } } ?>
Observando o cdigo de insero, pode-se notar que na linha 5, a varivel $inserir recupera o valor not_inserir enviado pelo formulrio, e na linha 6 feita a vericao se ela foi ou no setada, ou seja, se tem algum valor armazenado dentro da variavel ou no, se tiver, signica que o formulrio foi enviado (Essa vericao pode ser feita com qualquer varivel presente no formulrio). Na linha 8 e 9 feita a conexo com o banco de dados, e logo em seguida temos a variavel $data recebendo o valor da funo atravs dos valores armazenados em $data. Na linha 15, usamos o comando SQL INSERT para inserir os dados do formulrio na tabela. Este comando tem a seguinte sintaxe:

getdate(); que retorna um array contendo os

valores correspondentes a data atual. Na linha seguinte, criamos uma string contendo a data

INSERT INTO tabela VALUES (valor1,valor2,..,valorn)


sendo que a ordem dos valores equivalente a ordem das colunas da tabela onde os dados sero inseridos (no exemplo: id,titulo,corpo,autor,data). No campo id, o valor inserido foi 0, pois este o campo auto incrementvel que identica unicamente os dados da tabela, assim, ele coloca como valor o numero seguinte ao ultimo da seqncia. operao. O if da linha 17 verica se a insero foi realizada, mostrando uma mensagem indicando se houve ou no sucesso na

3.3.2

Listando as Noticias

Agora que j se pode inserir dados na tabela, podemos listar os dados presente dentro dela. Para isso, vamos criar um arquivo chamado admin.php, este arquivo ser a pagina principal da administrao do sistema de noticias. O comando SQL que usado para fazer as consultas o SELECT, e ele possui a seguinte sintaxe: 11

SELECT colunas FROM tabela WHERE restries/operaes


onde podemos selecionar as colunas com os dados desejados (usa-se * quando se deseja selecionar todas as colunas), a tabela onde esto os dados e ainda, pode-se ltrar os dados atravs das restries, ou realizar operaes como por exemplo a ordenao. A seguir temos o cdigo que ir listar as ultimas 10 noticias, junto com a opo para excluir e alterar: Cdigo 9: Cdigo que gera uma lista com as ultimas 10 noticias
1 2 3 4 5 6 7 8 9 10 11

mysql_connect ( " localhost " , "root" , "" ) ; mysql_select_db ( "curso" ) ; $ s q l = "Select id ,titulo from noticia order by id desc limit 0,10" ; $ e x e c u t a = Mysql_Query ( $ s q l ) ; i f ( Mysql_num_rows ( $ e x e c u t a ) == 0 ) { p r i n t "<h4 > No existe noticias Cadastradas </h4 >\n" ; } else { while ( $ r e s u l t = Mysql_fetch_array ( $ e x e c u t a ) ) { p r i n t "$result[titulo ]\n" ; } }
Na linha 3 temos o comando SQL para a nossa busca, nele a gente seleciona as colunas id e titulo, que sero necessrias para a excluso e alterao (coluna id) e tambm para exibio na tela (coluna titulo). A restrio feita nessa consulta de quantidade mxima de linhas que vir na consulta, atravs do comando Limit x,y, onde o x ordem do primeiro registro a ser selecionado e y a quantidade de registros seguintes. Tambm realizamos a operao que ordena os registros segundo o campo id atravs do comando da ultima noticia inserida, ento, inserimos o comando variavel $resultado.

order by id , tambm indicamos

que necessrio que a ordenao seja feita em ordem decrescente, para que a listagem comece

desc.

Na linha 4 realizamos a consulta no banco de dados MySQL e guardamos o resultado na Na linha seguinte, vericamos a quantidade de linhas retornadas pela consulta atravs do comando

Mysql_num_rows($executa), e no tiver retornado nenhum


Porem, se encontrar uma ou mais lin-

resultado, exibe-se na tela uma mensagem de aviso.

has que satisfaa a consulta, realiza-se um while, armazenando na variavel $result o comando

Mysql_fetch_array($executa), que retorna um array associativo com uma linha de resultado a cada iterao at no tenha mais nenhum resultado a retornar. escreve-se os valores contidos dentro de $result no documento HTML. Assim, na linha 9,

3.3.3

Excluindo Noticias

O comando DELETE do SQL o responsvel por realizar as excluses na tabela do Banco de Dados e sua sintaxe :

DELETE FROM tabela WHERE restries


No caso do nosso sistema de noticias, temos que usar uma restrio que nos permita excluir apenas uma noticia por vez, ou seja, que nos de a certeza de que no estamos excluindo noticias indesejadas. Portanto, usaremos o campo id como restrio, levando que cada noticia tem um id diferente. Temos ento o seguinte cdigo, que deve ser inserido no arquivo admin.php aps a conexo com o Banco de Dados e Antes do cdigo de listagem de noticias: Cdigo 10: Excluindo Noticias
1 2

$ e x c l u i r = $_GET[ 'excluir ' ] ; if ( IsSet ( $excluir ) ){


12

3 4 5 6 7 8 9

$ s q l _ e x c l u i r = "Delete from noticia where id = '$excluir '" ; i f ( Mysql_Query ( $ s q l _ e x c l u i r ) ) { p r i n t "<h4 > Noticia Excluida com sucesso </h4 >\n" ; } else { p r i n t "<h4 > Erro ao excluir noticia </h4 >\n" ; }

O id da noticia a ser excluda passado por mtodo GET, e armazenado na variavel $excluir. Tendo essa variavel, e ela estando setada, armazenamos na variavel $sql_excluir o comando SQL que ir excluir na tabela os valores onde o campo id seja igual ao id passado como parmetro e armazenado em $excluir. Na linha 4 realiza-se a operao no MySQL retornando para o usurio uma mensagem indicando o erro ou o sucesso da excluso. Falta ainda adequar a listagem das noticias para que, atravs dela, possamos escolher qual noticia deve ser excluda. Para isso, adicionaremos um link para a pagina contendo os comandos de excluso na frente do titulo da noticia que vai ser exibido:

<a href=admin.php?excluir=$result[id]>Excluir</a> 3.3.4 Alterando Noticias

A ultima instruo de manipulao de dados do SQL que nos falta ver a instruo UPDATE, que nos permite realizar alteraes no contedo dos dados presentes dentro da tabela. sintaxe simples, e segue o mesmo padro dos outros comandos SQL: Sua

UPDATE tabela SET coluna1=valor1 ,... , colunan=valorn WHERE restries


Esse comando muito exvel, pois nos permite alterar o valor de qualquer numero de colunas e tambm, dependendo da restrio, pode-se alterar mais de uma linha da tabela. No exemplo a seguir temos uma alterao de preo para todos os pertencentes a categoria 'A':

UPDATE catalogo SET preco=10 WHERE categoria = 'A'


Em nosso sistema de noticia os nicos dados que podem sofrer alteraes so os que foram inseridos pelo usurio (titulo, corpo e autor), assim, o formulrio de alterao necessita ter somente esses campos. Vamos ento criar um novo documento, que vamos chamar de alterar_noticia.php, e nele vamos inserir o seguinte cdigo: Cdigo 11: Formulrio para alterar Noticia
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

mysql_connect ( " localhost " , "root" , "" ) ; mysql_select_db ( "curso" ) ; $ i d _ a l t e r a r = $_GET[ 'alterar ' ] ; i f ( IsSet ( $id_alterar ) ){ $ s q l = "Select id ,titulo ,corpo ,autor from noticia where id=' $id_alterar '" ; $acao = Mysql_Query ( $ s q l ) ; i f ( Mysql_num_rows ( $acao ) == 0 ) { p r i n t "<h4 > Voce precisa selecionar uma noticia Vlida </h4 >\n" ; } else { $ r e s u l t a d o = Mysql_fetch_array ( $acao ) ; ?> <form method="post" a c t i o n=" alterar_noticia .php?alterar =<?php print $id_alterar ; ?>"> <p>T i t u l o :< br> <i n p u t name=" not_titulo " type="text" v a l u e=" <?php print $resultado ['titulo '];?>">
13

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

</p> <p>Corpo:< br> <t e x t a r e a name=" not_corpo " c o l s="40" rows="6"> <?php p r i n t $ r e s u l t a d o [ 'corpo ' ];? > </ t e x t a r e a > </p> <p>Autor :<br> <i n p u t name=" not_autor " type="text" v a l u e=" <?php print $resultado ['autor '];?>"> </p> <i n p u t name="not_id" type="hidden" v a l u e=" <?php print $resultado ['id ']; ?>" > <p><i n p u t name=" not_alterar " type="submit" i d=" not_alterar " v a l u e="Alterar"> </p> </form> <?php } } else { p r i n t "<h4 > Voce precisa selecionar uma noticia Vlida </h4 >\n" ; }
Este cdigo recebe o numero de identicao, e cria um formulrio para realizar a alterao com os valores atuais da noticia que se deseja alterar, sendo que, se passarmos o id inexistente de uma noticia, mostra uma mensagem de erro. Notemos que o comando

Mysql_fetch_array

usado fora de um while, isso porque se deseja recuperar apenas uma linha da tabela e exibir no formulrio. Com os dados atuais dentro do formulrio, ca mais fcil realizar as alteraes necessrias da noticia. Podemos observar que na linha 23 do formulrio temos um campo escondido hidden, ele necessrio para que possamos saber na hora da alterao qual noticia estaremos atualizando. Outro aspecto importante que bom observar, a alternncia entre cdigo PHP e HTML realizado na criao do formulrio, onde, bom ressaltar que todo o contedo do formulrio HTML esta dentro de um comando if, e pode acontecer do formulrio no ser exibido caso o if no seja satisfeito. O cdigo que recebe uma noticia e realiza a alterao no banco de dados muito semelhante ao de insero. Vamos inseri-lo no mesmo documento alterar_noticia.php, antes do formulrio. Cdigo 12: Cdigo de alterao de noticia
1 2 3 4 5 6 7 8 9 10 11 12 13

$ a c a o _ a l t e r a r = $_POST [ 'not_alterar ' ] ; i f ( IsSet ( $acao_alterar ) ){ $ n o t _ t i t u l o = $_POST [ 'not_titulo ' ] ; $not_corpo = $_POST [ 'not_corpo ' ] ; $not_autor = $_POST [ 'not_autor ' ] ; $not_id = $_POST [ 'not_id ' ] ; $ s q l _ a l t e r a r = "Update Noticia Set titulo=' $not_titulo ',corpo=' $not_corpo ', autor=' $not_autor ' Where id='$not_id '" ; i f ( Mysql_Query ( $ s q l _ a l t e r a r ) ) { p r i n t "<h4 > Noticia Alterada com Sucesso </h4 >\n" ; } else { p r i n t "<h4 > Erro ao Alterar Noticia </h4 >\n" ; } }
A restrio usada no comando SQL (linhas 7/8) o numero de id da noticia, j que, cada noticia possui um numero de identicao diferente e nico. Devido ao fato de no saber qual

14

campo foi alterado pelo usurio, o comando SQL atualiza todos os campos em que possvel fazer alterao pelo formulrio. Na linha 9 executado o comando no MySQL e feita uma vericao de possveis erros.

3.3.5

Finalizando o sistema de Noticias

Agora, temos a base de um sistema de noticias completo. Falta ainda a parte de exibio das noticias no site, que um trabalho muito semelhante ao de criar o formulario de alterao, mudando somente a forma de exibir as informaes. Vamos ento criar um arquivo chamamo noticia.php, e nele vamos colocar o seguinte cdigo: Cdigo 13: Exibindo a lista de noticias no site
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

<?php mysql_connect ( " localhost " , "root" , "" ) ; mysql_select_db ( "curso" ) ; $ i d = $_GET[ 'id' ] ; $ s q l = "Select * from noticia where id='$id '" ; $acao = Mysql_Query ( $ s q l ) o r d i e ( "No foi possivel conectar com o servidor !" ) ; i f ( Mysql_num_rows ( $acao ) == 0 ) { p r i n t "<h4 > Erro ao exibir noticia </h4 >\n" ; } else { $ r e s u l t = Mysql_fetch_array ( $acao ) ; $corpo = nl2br ( $ r e s u l t [ corpo ] ) ; ?> <p><?php p r i n t "$result[data]" ;?></p> <p a l i g n="center"><?php p r i n t "$result[titulo]" ; ?></p> <p a l i g n="justify"><?php p r i n t "$result[corpo]" ; ?></p> <p><?php p r i n t "$result[autor]" ;?></p> <?php } ?>
O comando SQL recebe como restrio id=$id, que ira retornar todas os registros que tenham o id igual ao numero armazenado dentro da variavel $id, como o campo garante que no existe dois registro com o mesmo numero id, ento o MySQL ir retornar nessa consulta 0 ou 1 registros. Note que na linha 6 temos uma outra forma de identicar que houve um erro na hora de realizar a consulta no MySQL, que atravs do comando or que chama a funo die caso a consulta no seja realizada com sucesso, a funo die reponsavel por encerrar o processamento da pagina retornando uma mensagem ao usuario. Na linha 11 tambem fazemos um tratamento conteudo da noticia obtido na consulta. A funo nl2br() utilizada troca todos as quebras de linha dentro do texto por tags de quebra de linha HTML (<br>). Para nalizar, falta a listagem das noticias que ira chamar a pagina noticia.php. Esse cdigo praticamente igual ao codigo que lista as ultimas 10 noticias na pagina de administrao, a unica linha que iremos alterar, a linha que ira escrever na tela o conteudo da consulta. Vejamos o codigo com a linha alterada a seguir: Cdigo 14: Exibindo noticia no site

1 2 3 4 5

mysql_connect ( " localhost " , "root" , "" ) ; mysql_select_db ( "curso" ) ; $ s q l = "Select id ,titulo from noticia order by id desc" ; $ e x e c u t a = Mysql_Query ( $ s q l ) ; i f ( Mysql_num_rows ( $ e x e c u t a ) == 0 ) {
15

6 7 8 9 10 11

p r i n t "<h4 > No existe noticias Cadastradas </h4 >\n" ; } else { while ( $ r e s u l t = Mysql_fetch_array ( $ e x e c u t a ) ) { p r i n t "<a href =\" noticia.php?id=$result[id]\"> $result[titulo ]</a>\n" ; } }
Assim, concluimos este simples sistema de noticias. A partir dos conceitos bsicos apresentados nesta apostila, pode-se criar uma variedade muito grande de aplicaes para a Internet.

4 Exercicios
1. Crie um vetor com 10 posies, atribua valores a estes elementos e faa o clculo da media aritmtica, se ela for menor do que 7 escreva turma reprovada, se maior ou igual a 7 escreva turma aprovada. 2. Crie uma pgina com um formulrio com pergutas, as respostas devem estar dentro de select, faa um outro arquivo que peque as respostas dadas e diga se ele acertou ou errou a pergunta. Princpio bsico do Quiz

5 Referncias Bibliogrcas

CHOI, Wankyu; KENT Allan; LEA Chris; PRASAD; GANESH; ULMAN Chris, Beginning PHP 4 ed Wrox Press 2000 CONVERSE, Tim; PARK, Joyce; PHP4 - A Bblia ed, Campus, 2003 WikiPedia - http://pt.wikipedia.org/wiki/MySQL - Acessado em 29/08/2005 PHP.net - http://www.php.net - Acessado em 29/08/2005

16

Você também pode gostar