You are on page 1of 31
indice 1 Mysql. 3 1.1 - Principais Caracteristicas 3 1.2-A Estranura 7 4 1.3 -O Sistema de privilégivs.... 3 14-0 Ambiente MySQQ.... esnnsnnneinnnnannnnannnsnnnannneesnie® 15 -Fxernplos 7 2 -PHP. 2.1 - Ura breve histérieo de PHP 2.2 - Comentarios 2.3 — Variaveis . sess 2.3.1 —Inteiros ¢ ponto Mutuinte 2.3.2— Arrays 2.3.3-Suings 2.3.4— Varidveis de variiveis... 2.3.5 — Type casting... 2.3.6 — Varidvuis por reforéneia no PTIP4 7 2.4 - Operagdes Matemsaticas 18, 2.5 -Operadorcs, 18 Exomploccsss essen so 8 Txemplo... 7 19 2.6 - OperagSes com strings. 2» 2.7 - Controlando 0 fluxo ¢ LOOPS 21 2.8 ~ Tratando Zonmularios. 2.9 — Fungoes 2.10 — Classe 2.11 —Avesso a haneo de dados 2.12-FIPe HTTP. 2.13 -Sessdes. 2.14 —Tratamento de AT UIVOS ne ; 99 2.15 -Tratamenta de Eros al Bibliogeatia 32 1 - MySQL MySQL ¢ um servidor de banco de dados SQL multi-usudrio c multi-threaded. SQL & a linquagem de banco de dados mais popular no mundo. MySQL é uma implementacio cliente-servidor que consiste de um servidor e diferentes programas dientes ¢ bibliotecas. SQL 6 uma linguagem padronizada que torna facil o armazenamento ¢ acesso de informacécs. Por exemplo, pode-se usar SQL para recuperar infarmacées de produtos e armazenar informagdes de clientes para um site Web. © servidor MySQL & também rdpido e flexivel o suficiente para permitir armazenar Jogs e figuras nele. As principais vantagens do MySQL s&o velacidade, robustez e facilidade de uso. MySQL foi criginalrmente desenvolvido pois a equipe da T.c.X. DataKonsultAB (empresa que desenvolvcu MySQL) precisava de um servider SQL que pudesse manipular banco de dados grandes numa ordem de magnitude mais rapida que qualquer banco de dados comercial pudesse Ihes oferecer. A equipe da TcX tem usado MySQL desde 1996 em um ambiente corn mais de 40 banco de dados contendo 10.000 tabelas, das quais mais de 500 tém mais de 7 milhGes de registros. Isto sama aproximadamente 100 Gbytes de dados. 1.1 - Principais Caracteristicas As principais caracteristicas do MySQL sao: Manipula um numero ilimitado de usuarios simulténeos; Alta velocidade de execucio; Possui APIs C, C++, Eiffel, Java, Perl, PHP, Python e TCL; Trabalha com diferentes plataformas: Unix, Windows etc.; Disponibiliza diversos tipos de dados: INT (inteiros sinalizados e ndo- sinalizados de 1, 2, 3, 4 e 8 bytes), FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET e ENUM; + Alta velocidade na execugSe de joins usando multi-join otimizado; + Suporte completo a operadores e funcdes nas cldusulas SELECT e WHERE; + Suporte as cldusulas GROUP BY e ORDER BY e a fungées de grupo (COUNT(), AVG(), STD(), SUM(), MAX() € MIN()); + Suporte a LEFT OUTER JOIN cam a sintaxe ANSI SQL e ODBC; + Possibilidade de misturar tabelas de diferentes bancos de dados na mesma query; tees + Sistema de privilégios flexivel, simples, eficiente e seguro, que permite verificagSo baseada em host. + Suporte a ODBC (Open DataBase Connectivily) para Windows95 e suas fungoes. E possivel, por exemple, usar 0 Access para conectar au servidar MySQL; + Tabelas de disco sob a forma B-tree rapidas com compressdo de indices; Permite 16 indices por tabela; + Disponibiliza registros de tamanho fixos ¢ variados; + Manipula grandes bancos de dados com vastos volumes de informagées, na ordem de 50,000,000 registros; + Escrita em C e C++, Testada com diferentes compiladores, Possui um sistema de alocacaéo de memoria extremamente rapido; + Suporte total ao conjunto de caracteres ISO-8859-1 Latin1, todas os dadas s&o salvos e ordenadas neste formato, + Permite a definicéo de aliases em colunas e tabelas como no padrao SQL92; + DELETE, INSERT, REPLACE e UPDATE devolvem 0 numero de linhas afetadas pelo comando; + Nomes de funcées nao entram em conflito com nomes de tabelas ou colunas; + O servidar pode emitir mensagens de erros em diversas linguagens, + Clientes podem conectar ao servidor MySQL utilizando conexées TCP/IP, Unix sockets ou sob o Windows NT. 1.2 - A Estrutura Um banca de dados nada mais é do que uma hierarquia de estruturas de dados complexas. Em MySQL, como em muitos outros bancos de dados, o conceito da estrutura que mantém os blocos (ou registros) de informagdes 6 chamado de tabela. Estes registros, por sua vez, $40 constituidos de abjetos menores que podem ser manipulados pelos usuarios, conhecidos por tipos de dados (datatypes). Juntos, um cu mais datatypes, formam um registro (record). Uma hierarquia de banco de dados pode ser considerada como: Banco de dados > Tabela > Registro > Tipo de dados. Os tipos de dados possuem diversas formas ¢ tamanhos, permitindo ao programador criar tabelas especificas de acordo com suas necessidades. MySQL prové um conjunte bem grande de tipos de dados, entre eles + CHAR(M): strings de tamanho fixo entre 1 ¢ 255 caracteres; + VARCHAR(M): strings de tarmanho flexivel entre 1 e 255 caracteres. VARCHAR ocupa sempre o menor espaco possivel, no cntanto é 50% mais lento que a tipo CHAR; + INT(M) [Unsigned]: nimeros inteiros entre -2147483618 e 2147483647. A apcdo "unsigned" pode ser usada na declaracao mudando o intervala para 0 e 4294967295 para inleiros nao- sinalizados; + FLOAT [(M,D)]: ndmeros decimais com D casas decimais; DATE: armazena informacdo relativa a datas. O formato default é 'YYYY-MM-DD' e as datas variam entre '0000-00-00' ¢ '9999-12=31', MySQL pravé um paderoso conjunta de commandos para formatacdo e manipulacdo de datas; + TEXT/BLOB: strings entre 255 e 65535 caracteres. A diferenca entre TEXT e BLOB é que no primeira o texto ndo é sensivel ao caso e no segundo sim; SET: conjunto de valores strings; + ENUM: conjunto de valores strings, difere do SET pois sé sao armazenados valores previamente especificadas. Além dos tipos de dados existem outras opcSes a serem usadas em conjunto com os tipos de dados para a criacéio de tabelas e especificagao de colunas + Primary Key (Chave Primaria): usada para diferenciar um registro do outro. Cada registro, desta forma, nao pode ter a mesma chave primaria. + Auto_increment: uma coluna com esta opséo é automaticamente incrernentada quando da inser¢ao de um registro; + NOT NULL: no permite a insercdo de valores nulos. 1,3 - O Sistema de privilégios Administrar 0 servidor MySQL, envolve a manutenc&o do banco de dados com as configuracées do servidor (hosts, usuarios e bancos de dadas), au saja, 0 sistema de privilégios. O canceito do sistema de privilégios ¢ simples, pela atribuigdo de um conjunto de privilégios, um usudério em determinado host tem permissio para executar comandos sobre uma base de dados. Estes privilégios estabelecem um canjunto de regras no qual o servidor MySQL se baseia, e estas regras podem ser, por exemplo, permissao para inserir, selecionar, excluir informagSes de uma tabela, ou criar, madificar tabelas ctc. Portanto, o sistema de privilégio, se resurne em trés tabelas principais: host, user e db tendo come hierarquia, da mais alta para a mais baixa, a ordem apresentada, + A tabela host determina quais os hosts que estado habilitados a acessar o servidor MySQL. Sua estrutura de colunas é a seguinte Host, Db, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, sendo que as duas primeiras colunas estabelecem, de qual host o banco de dados pode ser acessado e as colunas lermindas em priv sao privilégios de acesso especificados com Y ou N (0 default é N). + Atabela user determina os usuarios que podem acessar o servidor e suas senhas de identificagdo a partir de um host. Sua estrutura de colunas é: Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, Filc_priv; + A tabela db contém as informagSes relativas a qual banco de dados um usuario de um certo host pode acessar: Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv. 1.4 - O Ambiente MySQL As tabelas acima funcionam exatamente como tabelas normais MySQL. Elas padem ser facilmente modificadas usando comandos como INSERT, UPDATE e DELETE. Para entrar no ambiente MySQL monitor, ou a programa cliente mysql, ¢ acessar o servidor MySQL, 0 comando a ser executado ¢ a seguinte: shell> aysql & host 4 ascsaame p data! me A opgao -h host significa especificar 0 nome da host, —u username significa especificar 0 nome do usuario que est4 acessando, -p solicita um pedido de senha ¢ o databasename é o nome do banco de dados que se deseja acessar. A resposta a este comanda é o pedido de identificago do usuario através da senha e em seguida a apresentag’o € 0 prompt do ambiente a espera de comandos: taysel> A partir do momento que se esta conectado ao servidor, ¢ possivel realizar varios comandos sobre as bancns de dados que se tem permisséio, como selecionar um banco de dados ("use db_name;”), buscar de dados em tabelas através de queries (consultas do tipo “select * from uma_tabela;"), inserir valores em uma tabela (“insert into uma_tabela values(1,2);”), criar bancos de dadas (“create uma_bd;"), criar tabelas (“create table teste(id int, descricao varchar(50));"), mostrar tabelas do banco de dados selecionade (“shaw lables;”), descrever a estrutura de uma tabcla (“describe uma_tabela;” ou “show columns from uma_tabela;”), remover tabelas (“drop table teste;”) € cutres comandes SQL comuns a manipulag’o 2 controle de bancos de dados, © comando para desconectar-se do ambiente € “quit”, 1.5 - Exemplos Type ‘helo! for helo wees 1.08 obs Rive ( int rez suli auto increrens primary zey, verebar (a6), wysq'> show Lables: mysq.> al Query Ox, e3( NuLa, 1 823226 1€.00 eee) "Fulenc’, "Rua Pigncus, Nome Leon Alane wacse ID < Lt; 2 rows tn set (0.90 sec} ne from Aluno where LD-2; Fecred {6.00 see) ory Of, 1 vou mysy > upoase Aluas s Query OX, L sow affected 10.00 dove watched changed: © Warnings: 6 Nomen "Sul dhorrma 2 sexan' waece IT; nysq > qran ages on Curse.” ©6 visiva icentifies by enka20I0" ; query 0%, 9 vous avfectad (9.02 #0 wyey> ot Bye $ aysel -u vigilantes We come Lo wag My: wr Lor, Comurcy ong witn 7 your My30s zonnestion id is 3 to server version: 4.22 Type ‘help smazion for conpleti: ple a crop guery Of, 9 myaq’> Query OF oF 2 wyeg > show teole Ala database rows ack ce Lebusess (9.90 sec} 10 2 - PHP PHP & uma linguagem de script no lado do servidor (server-side) embutida no HTML, portanto & nacessdrio instalar o interpretador da linguagem no servidor de Web, PHP, assim come MySQL, ecstao disponiveis para download para sislemas UNIX, mas para o sistema operacional Windows precisam de uma licenga. PHP é diferente de um scrizt CGI escrito em linquagens como Perl ou C pais, ao invés de escrever um programa com muitos comandos para saida em HTML, vocé escreve um script HTML com um cédigo embutido para fazer a mesma coisa. O cédigo PHP é encapsulado em tags espcciais de inicio ¢ fim que permitem vocé alternar para dentro ¢ fora do modo PHP. © que distingue PHP de algo come um Javascript no lado do cliente € que o cédigo € executado no servidar. Se vocé tivesse um script PHP em seu servidor, o cliente iria receber os resultados da execucdo deste script, ¢ de mancira alguma poderia determinar qual o cédigo que esta por baixo desta execucao. E possivel configurar um servidor Web para processar todos os arquives HTML com cédigo PHP, e entéo realmente n&o hd maneira de os usudrios perceberem que existe cédigo embutido na pagina HTML. No nivel mais basico, PHP pode fazer qualquer outra coisa que um programa CGI pode fazer, tal como coletar dados de um formulario, gerar conteddo de paginas dindmicas, ou cnviar ¢ receber cookies. Talvez a maior e mais significante caracteristica em PHP é seu suporte a uma faixa muito ampla de bancos de dados. Escrever uma pagina Web baseada em um banco de dados é muito simples. Os seguintes bancos de dados sao atualmente suportados: Adabas D, Interbase, Solid, Dbasc, mSQL, Sybase, Empress, MySQL, Velocis, FilePro, Oracle, Unix dbm, Informix, PostgreSQL. PHP também tem suporte a comunicacdo para outros servicos usando protocolos tais cama IMAP, SNMP, NNTP, POP3, ou mesmo HTTP. Vocé pode também abrir sockets de rede e interagir usando outros pratacolos. Um exemplo de um script dindmico que imprime a data atual esté a seguir: <.sal> Ker-winde ao setipt do exempt or< CIN aR> Assumindo que hoje é dia 06 de maio de 2000, a saida do s acima seria: sen-virdo 30 sev oie 2 1000-05-06 Alguns pontos a considerar: 1. Todos as comandos PHP3.0 devem ser envolvidos pelas tags . Uma segunda maneira de denotar camandos PHP é& envalvendo-os nas tags ; 2. Todas as sentencas de saida para a tela devem ser envolvidas por aspas (“) e conduzidas pelos comandos print ou echo; 3. Quase todos as comandos PHP3.0 terminam cam um ponto-e-virgula; 4. Todo comando HTML dentro do comando print sera executado normalmente pelo browser ¢ desempenhara sua fun¢gae usual; 5. Documentos incluindo cédigo PHP devem ser salvos com a extens&o «Php ou .php3, isto informard ao interpretador PHP3.0 para executar os comandos encontrados dentro das tags . E possivel tambérn utilizar extensdes diferentes do padrdo, mas isso acarretara © uso das tags no sentido de informar ao servider Web que & © interpretador PHP3.0 que se encarregard de executar o script, j4 que isto nao pode ser identificado pela extensdo do arquivo, 6. A funcéo date apresentada no script acima é uma das milhares de funges que o PHP disponibiliza, ela tem o formato: string date (string formato, int timestamp);, ou seja, retorna um string e aceita dois parametros: 0 lipo de formato a ser aprensenlado e um valor timestamp’ de data opcional (quando omitido, como no nosso caso, considera a data atual). Uma grande caracteristica de PHP3.0 & a capacidade de construg3o de templates HTML, que séo muito Uteis quando se esta desenvolvendo um site com muitas paginas. Isso é possivel através do comando include que permite a insercao de cédigo, provindo de um arquivo separado, dentro de um documento HTML. Desta maneira é possivel estabelecer, por exemplo, um arquivo de rodapé num arquivo chamado rodape.txt que apareceré em vérias paginas sem precisar reescrever © cédigo, apenas utilizando o comanda include, como segue: 1 Timestump é um ‘ormale especial ce da.a, yeralmente usado er sistemas UNIX, ele armavena sob @ forma de um numero inteiro, of seguados, minutos, 7oras, dia, més @ . Sendo que a ceda segundo ele incrementa o seu valor, torrende sivples a manipulagao de cate a partir de eperadores como soma, subtracao otc. ane de uma dat 12 $6 _|Maior que ffa< Sb [Menor ou igual [Ba>= Sb [Muior ou igual Operadores de execugao: $output = ‘Is 1°; echo “
Soutput
"; Operadores de incremento/decremento: Exemplo|Nome Efeita '++$a —_ [Pré-incremento [Incrementa $a, depois retorna scu valor $at++ _[Possincremento |Retorna o valor de $a, depois incrementa --$a Pré-decremento |Decrementa $a, depois retorna seu valor ga- Pés-decremento|Retorna o valor de $a, depois decrementa 2.6 - Operaces com strings Operacgies com strings sao uma das caracteristicas mais desenvolvidas do PHP. Para concatenar-se dois strings, usamos o operador".” - Dentre as fungées mais importantes esto: . strlen(), que permite saber quantos caracteres possui a string: "0 glrleaCtiaterns 10 "A palevra ‘ialerael* possul sazastores "7 . substr(), que devolve uma substring da string informada: . ucwords (string), converte os primeiros caracteres de strings em maiisculo. Exemplo: de neque Piss eite * strpos (), para saber se determinado caractere (ou substring) est contida em uma string: rece eslar cozrelo.\n"); se { ) enrat invalioo\n"); No exemplo acima, verificamos se 0 caractere "@" esté contida em uma variavel $email. Se estiver, exibe a primeira mensagem. Do contrario, exibe a segunda. Outras fungées relacionadas @ operacées cor strings podem ser encontradas em http://br.php.net/manual/ret 20 2.7 - Controlando o fluxo e LOOPS. As functes usadas para controlar o fluxa da programa e execugdo de "loops" so: m Qlse ... else if, que segue o padréo da linguagem C: exo 6 co sexo Vaseuliae n"; == eM) ~ favor, inforre covretetente seu sexo\n"; * switch, uma maneira de controlar o fluxo onde a varidvel de controle do fluxo pode ter varias opcbes de valores. Este tipo de controle poderia ser feito com uma seqiléncia de "ifs" @ "elseifs", mas 0 uso do switch torna o cédigo mais Iegivel ¢ faz com que scja exccutado mais rapidamente, pois a verificagao da varidvel "$sexo" sé é feita uma vez & depois comparada com as opgdes de cada "case". Se nado estiver em nenhuma delas, € executado o bloco sob o "default", Ja com o "elseif", a comparacgo @ feita novamente a cada sentenca. Neste exemplo, a diferenga ndo ¢ tae grande, mas quands o tipo de verificacdo vai ficando mais complexo a velocidade comeca a ser senlida. Na maioria dos casos, vale a pena optar pelo switch. sexo Ferintro\a%; break; ese defay echo "Bor Lavos, -nlostis correlamsale sea cexon"; Sempre inclua o comando break no final do case. Caso contrario, a execugde continuaré até encontrar o final do switch (ou a instrugao break), fazendo com que as instrucdes de mais de um case sejam executadas. * while, que permite repetir 0 cédigo enquanto uma condigéo for verdadcira: 21 $convador > t contadoy — $cortador = 2.8 - Tratando formuldarios Vamos fazer, passo-a-passo, um script para receber os dados de um formuldrio, consistir as informagées e enviar o resultado por e-mail. Este formulario possui campos para digitacéo do nome, e-mail ¢ telefone. Todos os campos S80 obrigatérios e a consisténcia do campo e- mail deve ser feita apenas verificando a existéncia do caractere @, para facilitar as coisas, Ja o campo telefone deve ter sete ou cite caracteres, Tendo este cendrio, maos a obra! 8) of (elelea(Scelefone) < 7)) £ = "0 winera oo te © ve nev sete on 07> sien ($lelelor zi strpos ($2mail, * = "0 e-msil Gigitads aio 4 v4lico\n™ ) 90 Esta primeira parte faz a consistancia dos dados e altera o valor da varidvel $erro, caso alguma das condigdes no seja satisfeita. Para prosseguir, devemos verificar a ocorréncia de erros e entio enviar o e mail se erros nao tiverem ocorrida ou enviar uma tela de resposta informando qual o erro aconteceu. Como o valor de $erro antes da verificagao dos campos ¢ "", basta testar sc a varidvel ainda tem este valor para saber se aconteceu ou nado um erro. Vamos continuar: 22 echo ("anvie 0 formulae abaixo\n"}; 4 Cabeg2lho de vesposzs. (erzo "™) {Nao ho mente nai ("hires Snone\n camai. Seta-1\ndate: ve nonkux, errs ae preenc “Dadas do ale fone Forts aria"," None: i Lino: efone\s echo ("bz gado ¢ cote Iosmulasio!\a"); be se echo ("Nao foi possivel ulazo!V nensagens abaixe

Serra \r"); vias o echo ("< niml> in ve Pronto! A novidades neste script 6: » e-mail. Sua sintaxe é a seguinte: mail(Destinatario, Assunto, Mensagem, informagies_Adicianais); Depois do script que envia e-mail, vamos fazer um outro que guarde as informagées de um formuldriao HTML em um banco de dados. 2.9 - Funcées As fungdes no PHP nao diferem muito das outras linguagens. Algumas caracteristicas das funges: * Devern ser daclaradas antes de sererm usadas. » Podem receber parametros por valor ou por referéncia. * Podem ter quantidade varidvel de par&metros (Apenas a partir da versio 4). * Os parémetros podem ser declarados com um valor default. » Uma vez definida, uma fungao nao paderd ser "redefinida". Alguns exemplos de funcées: da val fuaet verilica email (Sex i slipos (Semal, "2 false esle 6 0 valor Liquide, Londo o valoz brulo © 9 desconio a cad: 9 desconwe ado Loz Laloxnade, uiilizaccnos 10% como padra: “/ fuaclloa vale. Lalo, des = 10 ura (Svalor beac - ($valor bsu-o Qs dois exemplos acima receberam seus parametros por valor. Isso significa que as altcragées de variaveis realizadas dentro da funcdo 86 terao efeito no contexto da funcdo, ¢ estas mudancas nao refictirao no resto do script. Em alguns casos pade ser interessante que os valores dos parametres scjam altcrados pcla fungdo, ¢ que scus novos valores reflitam no script come um todo. Para conseguir isto, usamos a técnica de passagem de pardmetro por referéncia. Vamos ver um exemplo: ye (ggrr_vel) { lle: //" Sav URL: Funet*on corp URL 24 2.10 - Classes Como n&o poderia deixar de ter, PHP também possui suporte a criagdo de dlasses e objetos de forma simple: dass carro { var $estado; // Estado do carro: ligado ou desligado function liga() ¢ if ($this-> estado != “ligado”) { $this->estado = "ligado”; return true; } else { return false; + ¥ $carrol = new carro; $carro1->liga(); © método construtar da classe (método que é executado quando a dasse é criada) € uma funcdo com 0 mesmo nome da classe: dass Pessoa { var $idade; function Pessoa() { $idade = 0; //Todo objeto desta classe € criado com 0 anos > As classes podem herdar caracteristicas de outras classes. Criando uma classe derivada de uma outra classe, como no exemplo a seguir da criag&o da dasse Aluno, derivada da classe Pessoa: dass Pessoa { var $nome; var $endereso; + dass Aluno extends Pessoa { var $matricula; + Todas as caracteristicas da classe mde s&o herdadas pela classe filha, A heranga multipla ndo € suportada pelo PHP. 2.11 - Acesso 4 banco de dados Como foi dito na apresentacao do PHP, 0 accesso a banco de dados é um dos pontos fortes desta linguagem. Ele possui acesso nativo a ADABAS, ORACLE, SYBASE, SQL SERVER, DBASE, INFORMIX, mSQL, MySQL, POSTGRESQL, além de suportar ODBC, fazendo com que o PHP possa trabalhar praticarnente com todos os bancos de dadas existentas. Neste médulo vamos ver apenas as apenas as funcies relativas ao banco MySQL, pois esta dupla PHP/MySQL est sendo preferida por uma boa parte das desenvolvedores, particularmente no ambiente Linux/Apache. © MySQL € um servidor SQL € portanto devemos seguir alguns procedimentos e regras para acesso aos seus dados. Se vocé esla acostumado com o Oracle ou SQL Server no tera dificuldades, mas se vacé usa somente bancos de dads do tipo Access ou DBF, poderd ter dificuldades em entender o mecanismo usado pelo MySQL. A primeira regra é ter um banco de dados cadastrado e um usuario com acesso @ este banco de dados. Vale lembrar que o MySQL ndo & um banca de dados, ¢ sim um servidor de dados, Tenha isto om mente para entender o exemplo. Digamos que temos um hanco de dados Curso com o usuario visitante ¢ senha temp99, O primeiro passo é "logar" ao servidor, Para isso usamos a fungdo nysz _connecs @ informamos ao servidor login (usuario) e senha. Veja abaix $conn = mysql_connect ("localhost", " isitante", "temp99"); Este camando abriré uma conexdo com o MySQL da maquina local (localhost), usando o usuario visitante cuja senha é temp99. Uma refar€ncia a esa conexdo serd gravada na variavel $conn. Depois de conectados ao servidor, devemos conectar ao banco de dados propriamente dito, usando o comando mysql_select_db, que precisa de dois parametros: O nome do banco de dados e a conexdo. Caso a canexfo nao seja informada, ele tentara usar a ultima criada, Em nossos exemplos, iremos sempre informar os dois parametros. $db mysql_select_db("", sconn), 26 Neste ponto j4 temos uma conexéa com o servidor e ja criamos um link com o banca de dados. Agora podemos enviar os comandas SQL que desejarmos. Se vocé nda souber SQL, apranda :-) Agora segue nosso exemplo pratico: Vamos usar o script do médulo passado e alteré-lo de modo que os dados digitados na formulario sejam gravados no banco de dados Curso antes de enviar o e-mail. 1! Verificar se © campo NOME esta vazio, if ($nome "yt erro .= "Digite seu Nome\n"; + # Verificar a quantidade de caracteres no campo TELEFONE. if ((strlen($telefone) > 8) or (strlen(4telefone) < 7)) { $erro .= "O numero do telefone deva ter 7 ou 8 caracteres\n"; } # Testar vamor do campo E-mail, verificando o caracter "@" if strpos ($email, "@") = 0 { serro .= "O e-mail digitado nao é valido\n’ } # Cabecalho de respesta. echo("\n"); echo("
\n"); if ($erro "yt sconn — mysql_connect("localhost", "visitante”, "temp99"); Sdb = mysql_select_db("Curso", Sconn); Ssql = mysql_query("insert into Aluno (Nome, Email, Telefone) values "addslashes($name). ",'".addslashes($email)."" .addslashes(Semail)."')" or die ("N&o foi passivel atualizar a tabela"); mysql_close(sconn); mail("birckan@inf.ufsc.br", "Dados do Formulario"," Nome: $nome\n E-mail: $email\n Telefone: $telefone\n","From: Semail\nDate $date\n"); echo("Obrigada por enviar este formulario!\n"); y else { echo("Nao foi possivel enviar o formulario! Verifique as mensagens abaixo \n"); 27 echo(" gerro \n"); echo("

Voltar\n"); echot"
"); Este 0 procedimento padr&o para usar servidores de banco de dadas carn a PHP: » Conectar ao servidor * Abrir o banco de dados (um servidor SQL pode ter mais de um banco de dados) » Enviar os comandos SQL * Desconcctar do servidor Anovidade deste exemplo fica por conta do comands die que finaliza 0 script caso a funcdo que o precede ndo possa ser executada. 2.12 - FTP e HTTP Algumas vezes pode ser util que nosso script execute um outro script ou ent&o transfira um arquivo para outro servidor. Para isso, podemos executar comandos HTTP e FTP de dentro do PHP. Veja os exemplos: HTTP: Podemos fazer, dentro do script PHP, uma chamada a outro script ou programa CGI hospedado em outro servidor. Isto é muito Util quando queremos consultar algum dado em um servidor remoto, ou até mesmo para abrir uma pagina, usando a protocolo HTTP. Para isso, basta charnar a funcdo Header("location: pagina.htm") para redirecionar para uma pagina especifica ou entéo o usar a comand abaixo para executar um CGI passando par&metros via URL sezver/c. « $paran); Onde sparam € uma varidvel que pode vir de uma consulta a banco de dados ou mesmo de um formuldrio. Outra funcao HTTP importante ¢ 0 uso de "cookies" para gravar alguma informacéo na browser de quem estiver visitando sua pagina. Para gravar um "cookie", usamos a funcdo setcookie(), como mostrado abaixa selcoosie (Vis cou", "Slo", tome =2603) 5 © comando acima gravaré um cookie chamado "Visitou" com a valor "sim", com apenas uma hora de durag3c. Note que 0 3600 é 0 numera de segundos além do hordrio alual que o coakie deve ficar ativo. Se no lugar de 3600, usassemos 36000, o cookie seria ative por 10 horas. FTP: A seqiiéncia de tarefas para uso do protocolo FTP é Conectar ao Servidor, Identificar-se (Login e Senha), Enviar/Buscar arquivo(s), Desconectar. Os comandos para cada uma destas tarefas sdo: creck (WT Lp. nt .ufse.or conn, ‘Legian’, targuvyo_vemoto', | " 2.13 - Sessdes Sessfes HTTP servem para preservar dados em acessos subseqientes, através de registros de varidveis de sessdo. Usamos basicamente trés funcdes session_start(); . + session_register( "VARIAVEL" ); * session_destroy(); Exempla: "; + felose ($fp); ) Neste Ultimo exemplo, pega-se linha a linha de um arquivo e imprime em HTML separando as linhas pela lag "
". 2.15 - Tratamento de Erros © PHP tem um esquema especial de "debugging" (tratamento ¢ verificagdo de errus), que & acessada por uma porta TCP, que permite acompanhar a execucdo des scripts e ver quaisquer erros que estiverem acontecendo, Além disso o tratamente de erros pode ser feito no proprio script, conforme explicado abaixo O PHP possui 4 niveis de erros e avisos, que sao: 1+ Erros de normais de Fungécs 2 = Avisos Normais 4 - Erro de interpretaco 8 - Avisos que vocé pode ignorar, mas que podem causar danos & execugio normal do script. © padrda do PHP é 0 nivel 7 (1 + 2 + 4), mas este nivel pode ser alterade tanto no arquivo de configuracio quanto em tempo de execugde, chamando a fungac errs: reporting (nivel) com o nivel desejado, Se usarmos o valor 0 (zero) nenhum aviso ou mensagem de erro seré gerada em tempo de execucéo, Neste caso, podemos usar uma varidvel especial (Sokp ezrosms¢) que conterd o ultimo erro gerado pelo script, para que possamos criar rotinas especificas para tratamento de erros. Podemos fazer uma analogia ao comando on error resume next do ASP, técnica muito Util para personalizarmos mensagens de erro para o usuario, entre outras coisas. Bibliografia hi www, ibestmasters,com,br http://www.weberdev.com http://www.php.net hup://www.webmonkey.com http://www.devshed.com http://www.mysal.com http://www. phpbuilder.com PRIDAPALL, Grazicla W. & SANTANA, Juliana 8, ‘Trabalho de Conclusto de Curso — “Construindo uma apliczyao de Comércio Eletrénico”

You might also like