com Banco de Dados SQL 1
com Banco de Dados SQL IX Seminário de Tecnologia Funcesi 2009 2
PROGRAMAÇÃO O que é HTML? Sites dinâmicos Prática 1: Uso básico do Sothink (Editor HTML) Prática 2: Conexão com MySQL (Inserção de Tupla) 3
O QUE É HTML? 4
O QUE É HTML? HTML HYPERTEXT MARKUP LANGUAGE É o elemento primário de uma página Web Sintaxe faz uso de Tags (marcações). Ex.: <html> </html> <body> </body> É uma linguagem de interpretação Não é compilável Necessita de um Browser para interpretar o código. Ex: Internet Explorer, Mozilla Firefox ou Netscape É naturalmente estático = não é autoatualizável. 5
O QUE É HTML? 6
O QUE É HTML? 7
O QUE É HTML? 8
O QUE É HTML? 9
DERIVAÇÕES DO HTML XML Extensible Markup Language (Linguagem Extensiva de Marcação). Semelhante ao HTML => permite personalização dos elementos (tags) <moradores> <casa> <nome>fernando</nome> </casa> </moradores> 10
DERIVAÇÕES DO HTML XHTML Extensible Hypertext Markup Language (Linguagem Extensiva de Marcação de Hipertexto). É uma reformulação do HTML Pode ser estendido pelo programador, ampliando as Tags pré-definidas Foi incluído o CSS Cascade Style Sheets (Páginas em estilo de cascata) Permite, entre outros, a personalização de leiaute de forma a aplicar o padrão do usuário a todas as páginas HTML. 11
FERRAMENTAS DE SUPORTE JAVASCRIPT. <script language="javascript" type="text/javascript"> <!-- function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.mm_p) d.mm_p=new Array(); var i,j=d.mm_p.length,a=mm_preloadimages.arguments; for(i=0; i<a.length; i++) if (a[i].indexof("#")!=0){ d.mm_p[j]=new Image; d.mm_p[j+ +].src=a[i];}} } function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexof("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(! (x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i] [n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=mm_findobj(n,d.layers[i].document); if(!x && d.getelementbyid) x=d.getelementbyid(n); return x; } </script> FLASH 12
O QUE É HTML? <script language="javascript" type="text/javascript"> <!-function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.mm_p) d.mm_p=new Array(); var i,j=d.mm_p.length,a=mm_preloadimages.arguments; for(i=0; i<a.length; i++) if (a[i].indexof("#")!=0){ d.mm_p[j]=new Image; d.mm_p[j++].src=a[i];}} } function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexof("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;! x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;! x&&d.layers&&i<d.layers.length;i++) x=mm_findobj(n,d.layers[i].document); if(!x && d.getelementbyid) x=d.getelementbyid(n); return x; } Caramba, então terei que aprender tudo isso? E o? </script> 13
O QUE É HTML? CALMA RELAXE. É para isso que existem ferramentas próprias para desenho de páginas, sem termos muito que entender de HTML. Ex: Front Page, Dreamweaver, Sothink etc. 14
O QUE É HTML? Entretanto, o HTML apresenta as páginas com o conteúdo (textos, figuras, imagens, sons etc.) prédefinido e na ordem programada. LINGUAGEM DE MARKUP ESTÁTICA É limitado! 15
O QUE É HTML? RESUMINDO O HTML nada mais é do que um meio de apresentar páginas, via navegadores de WEB (Browsers), com códigos que são interpretados no momento de exibí-los. Todo conteúdo é apresentado na ordem de chamada dos códigos (tags). Portanto, trata-se de uma exibição de conteúdo pré-programada = estática. Ele não tem tags capazes de alterar, dinamicamente, o conteúdo, como consulta e exibição de informações a partir de banco de dados. Cuja deficiência, POR EXEMPLO, pode ser suprida pelo com um Banco de Dados SQL. 16
SITES DINÂMICOS 17
SITES DINÂMICOS Páginas com conteúdo variável que demandam aplicações de recursos dinamicamente apresentados. 18
SITES DINÂMICOS Para exibir conteúdos sob demanda, como por exemplo, apresentar a foto e os dados de um determinado produto de uma empresa, solicitados por um internauta, é preciso de uma apresentação DINÂMICA, com consulta a Banco de Dados. CONTEÚDO DINÂMICO E para conversar com Banco de Dados e o HTML usase uma linguagem para prover esses serviços. Ex: ASP (.NET MS), Perl, JSP, Coldfusion, etc. 19
SITES DINÂMICOS ASP Active Server Pages Microsoft. É nativo do Windows. Pode rodar em outras plataformas (P.Ex: Unix), mas tende a gerar problemas. Tem que ser comprado. Fácil de implementar e é muito usado no mercado. PERL Practical Extraction and Reporting Language É gratuito. Sintaxe complexa. Não tem suporte oficial (comunidade presta ajuda). 20
SITES DINÂMICOS Personal Home Page Roda em Windows, Linux, Unix. É gratuito. É fácil de usar (sintaxe simples). Não conta com suporte oficial (comunidade presta ajuda). 21
22
BREVE HISTÓRICO Rasmus Lerdof (1994) Consultor de Empresas (desempregado) Enviava currículo para empresas com script em PERL, para controle de número de visitantes de sua página. Depois criou um conjunto de ferramentas para exibir estes dados (Personal Home Page) Tools (linguagem C). Andi Gutmans e Zeev Surashi (1997) Reescreveram o código do engine corrigindo alguns erros. Comunidade e os dois alunos árabes (2000) Incrementam e reescrevem o código outras vezes. 3, 4 23
COMO FUNCIONA? 24
ANTES DE COMEÇAR Nunca use um editor (p.ex.: Word ou Wordperfect) Todas as páginas em devem ter a extensão.php Todo início de tag em deve começar com <? e terminar com?> Todo comando deve terminhar com ; As variáveis são tipificadas dinamicamente e devem começar com $ 25
ANTES DE COMEÇAR O código não é mostrado quando pedimos a exibição do código fonte, pelo Browser (proteção). é case sensitive! 26
27
28
29
1. VARIÁVEIS (Tipificação Dinâmica) <? $comeco = Aprendendo ; $valor = 2 + 3; $valor-; Echo $comeco $valor ;?> Aprendendo 4 30
2. CONCATENAÇÃO DE VARIÁVEIS <? $valor = 4; $comeco = Aprendendo ; echo $comeco..$valor;?> Aprendendo 4 31
3. CONSTANTES define( pi, 3.1416); $circunferência = 2 * pi * $raio; 32
ARITMÉTICOS LÓGICOS + * / % 4.- OPERADORES and, or, xor,!, &&, COMPARATIVOS INCREMENTO / DECREMENTO ==!= > >= < <= ++, -- 33
5. USO DE ASPAS <? $nome = Fernando ; $mostra1 = Meu nome é $nome! ; // aspas duplas $mostra2 = Meu nome é $nome! ; // aspas simples echo $mostra1 este é o resultado das aspas duplas <br> ; Echo $mostra2 este é o resultado das aspas simples. ;?> Meu nome é Fernando! este é o resultado das aspas duplas. Meu nome é $nome! este é o resultado das aspas simples. 34
6. ARRAYS $fruta[] = pera ; $fruta[2] = laranja $prefiro[ animal ] = Cachorro ; $matriz[0][1] = 1 célula da linha 1 ; $matriz[0][1] = 2 célula da linha 1 ; 35
7. ESTRUTURAS DE CONTROLE REPETITIVAS FOR - Sintaxe: for ([variável] = [valorinicial]; [condição término]; [passo] ) { } for ($I = 0; $I < 10; $I++) { echo Esta é a linha $I <br> ; } 36
8. ESTRUTURAS DE CONTROLE REPETITIVAS WHILE - Sintaxe: while ([condição término]) { } $I = 0; while ($I < 10) { $I++; echo Esta é a linha $I <br> ; } 37
9. ESTRUTURAS DE CONTROLE REPETITIVAS DO WHILE - Sintaxe: do { } while ([condição término]); $I = 0; do { $I++; echo Esta é a linha $I <br> ; } while ($I < 10); 38
10. ESTRUTURAS DE DESVIO (CONDICIONAIS) IF - Sintaxe: if ([condiçao]) { } [ elseif ([outra condiçao]) { } ] [ else { } ] If ($idade > 20) { echo Você é de maior. ; } else { echo Você é de menor. ; } 39
11. ESTRUTURAS DE DESVIO (CONDICIONAIS) Outra sintaxe: (([condição])? [valorcondicaoverdadeira] : [valorcondicaofalsa] $sexo = F ; echo (($sexo == M )? Você é homem : Você é mulher ); Você é mulher 40
12. ESTRUTURAS DE DESVIO (CONDICIONAIS) SWITCH - Sintaxe: switch ([variável]) { [ case [condição] : [comandos] break; ] default : [comandos] }; $idade = 15; switch ($idade) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: echo Você ainda é de menor ; break; default: Você atingiu a maioridade ; } Você ainda é de menor 41
13. FUNÇÕES FUNCTION - Sintaxe: function NOMEFUNC ($aluno, $curso = SI ) { echo O aluno $aluno estuda $curso ; return valor de retorno ; }; Nota: o segundo parâmetro desta função foi definido como default, quer dizer, se não passarmos nenhum valor, assume que $curso = SI. Se passarmos algum valor, assumirá o valor passado. 42
14. SAÍDA echo Mostra na tela ; print imprime ; 43
15. CRIANDO ARQUIVO DE CONEXÃO: conf_bd.php <? $bd = "localhost"; $bdusuario = "root"; $bdsenha = "masterkey"; $nomebanco = "aulaphp"; $url = "http://localhost/";?> 44
16. EXEMPLO DE PROGRAMA CONSULTA USANDO conf_bd.php <? // inclui comandos escritos no arquivo de configuração chamado CONF_BD. require_once("conf_bd.php"); // realiza conexao $conexao = mysql_connect($bd,$bdusuario,$bdsenha) // ("localhost", "root", "vertrigo") or die("banco de dados não acessível!"); // define SQL para consulta todos alunos cadastrados $sql1 = "SELECT * FROM aluno;"; 45
// envia requisição SQL para consulta (backend) e joga array na variável $res1 $res1 = mysql_db_query($nomebanco, $sql1, $conexao) or die ("Não foi possível conectar ao Banco de dados."); echo "Cod. Aluno Curso <br>"; // faça enquando houver um valor na matriz $res1, armazenando como linhas while ($valor = mysql_fetch_row($res1)) { echo "$valor[0] $valor[1] $valor[2] <br>"; } // libera ou limpa variável $res1 da memória mysql_free_result($res1); mysql_close($conexao);?> 46
17. ALGUNS COMANDOS BÁSICOS PARA MySQL mysql_connect([nomebanco],[usuário],[senha]); // Conecta ao banco de dados mysql_close([nomeconexão]); // fecha a conexão mysql_query([sql],[nomeconexão]); // envia uma query mysql_fetch_row([resultado sql]); mysql_free_result([resultado sql]); // libera a memória 47
18. CONECTANDO E INSERINDO TUPLA NO MySQL <? // inclui configuração de banco-de-dados include_once("conf_bd.php"); // estabelece conexão com o banco de dados $conexao = mysql_connect($bd,$bdusuario,$bdsenha) or die("impossível conectar"); // conecta-se ou imprime erro // cria a sql de insert $sql = "insert into aluno (codalu, nome, curso)"; $sql.= " values (". $codalu. ", '". $nome. "', '. $curso. "')"; $resultado = mysql_query($sql,$conexao); or die ("Impossível gravar dados"); // grava tupla ou erro / / Envia commit e fecha BD mysql_commit($conexao); mysql_close($conexao); }?> 48
PRÁTICA 1 Instalando o Vertrigo ou Wamp 49
PRÁTICA 1 Uso básico do Sothink 50
51
PRÁTICA 2 52
PRÁTICA 1 IMPORTANTE! Para que os conteúdos das variáveis do HTML (ou ) sejam passados para a próxima página de, todas as suas declarações e entradas têm que estar dentro da área de formulário. 53
PRÁTICA 2 Post = Não mostra os parâmetros na tela Get = Expõe os parâmetros 54
55
56
57
O QUE É HTML? 58
59
PRÁTICA 2 Produzir página para inserção de aluno (tupla) com conexão MySQL 60
PRÁTICA 3 Produzir página para exibir todos os alunos cadastrados 61
ALGUNS COMANDOS SQL Criar tabelas create table TABELA1 ( CODREGISTRO smallint not null auto_increment, CAMPO2 char(50) not null, CAMPO3 char(20) null, CODAUX smallint not null, primary key (CODREGISTRO), foreign key (CODAUX) references TABELA2 ); 62
ALGUNS COMANDOS SQL Inserir Tuplas insert into TABELA1 (CODREGISTRO, CAMPO2, CAMPO3, CODAUX) values (1, VALOR2, VALOR3, 4); commit; // salva inserções do buffer para o BD rollback; // desconsidera tuplas inseridas armazenadas em buffer. 63
ALGUNS COMANDOS SQL Consultas simples select * from TABELA1; // seleciona todos os campos da Tabela1 select CODREGISTRO, CAMPO2 from TABELA1; // seleciona só os campos CODREGISTO e CAMPO2 da Tabela1 select CODREGISTRO from TABELA1 where CAMPO2 = Fernando ; // seleciona só os campos CODREGISTO da Tabela1 onde CAMPO2 = 'Fernando' 64
ALGUNS COMANDOS SQL Consultas compostas select * from ALUNO where CODCURSO = (select CODCUR from CURSO where NOMECURSO = SI ); // seleciona todos os campos da tabela ALUNO, cujos CODCURSO sejam iguais a SI, presentes no campo NOMECURSO, da tabela CURSO (subconsulta). 65
ALGUNS COMANDOS SQL Funções Agregadas count = conta os registros (linhas). sum = soma o conteúdo númerico, totaliza. AVG = calcula a média aritmética. max = pega o maior valor. Min = pega o menor valor. Exemplos: select count(matalu) from aluno; select AVG(idade) from alunos where curso = SI ; 66
ALGUNS COMANDOS SQL Alterar dados das tuplas update TABELA1 set CAMPO2 = Thiago ; // cuidado! Aqui alterará todos os registros, colocando o nome Thiago em todas as tuplas! update TABELA1 set CAMPO2 = Thiago where CODREGISTRO = 23; // Aqui SÓ alterará o nome do CAMPO2 para Thiago cujo CODREGISTRO = 23! 67
ALGUNS COMANDOS SQL Apagar tuplas delete from TABELA1 where CAMPO2 = Cruzeirences ; // apagará todas as tuplas onde contenham a palavra Cruzeirences no CAMPO2! 68
MAIS INFORMAÇÕES www.php.net www.phpbrasil.net www.php.net/manual/pt_br/index.php www.mysql.com/ 69
REFERÊNCIAS: Anselmo, Fernando 4 e MySQL. Maior, melhor e totalmente sem cortes Visual Books; Moraz, Eduardo Guia profissional Webdesign Digeratti Books; Coleção Info 2005 Sites Dinâmicos Info Exame; Alves, Leonardo Lacerda Desenvolvimento de aplicações Web com CD-Rom. 70
com MySQL Fernando Martins Técnico em Processamento de Dados Graduado em Sistemas de Informação pela Funcesi Fotógrafo e Videomaker Webmaster da HS PRO Professor Funcesi fernando@hspro.com.br 71