Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Introdução ao PHP 1.1. O que é PHP? O PHP é uma linguagem que permite criar sites WEB dinâmicos, possibilitando uma interação com o usuário através de formulários, parâmetros da URL e links. A diferença de PHP com relação a linguagens semelhantes a Javascript é que o código PHP é executado no servidor, sendo enviado para o cliente apenas html puro. Desta maneira é possível interagir com bancos de dados e aplicações existentes no servidor, com a vantagem de não expor o código fonte para o cliente. Isso pode ser útil quando o programa está lidando com senhas ou qualquer tipo de informação confidencial. O que diferencia PHP de um script CGI escrito em C ou Perl é que o código PHP fica embutido no próprio HTML, enquanto no outro caso é necessário que o script CGI gere todo o código HTML, ou leia de um outro arquivo. 1.2. Como surgiu a linguagem PHP? A linguagem PHP foi concebida durante o outono de 1994 por Rasmus Lerdorf. As primeiras versões não foram disponibilizadas, tendo sido utilizadas em sua home-page apenas para que ele pudesse ter informações sobre as visitas que estavam sendo feitas. A primeira versão utilizada por outras pessoas foi disponibilizada em 1995, e ficou conhecida como “Personal Home Page Tools” (ferramentas para página pessoal). Era composta por um sistema bastante simples que interpretava algumas macros e alguns utilitários que rodavam “por trás” das home-pages: um livro de visitas, um contador e algumas outras coisas. Em meados de 1995 o interpretador foi reescrito, e ganhou o nome de PHP/FI, o “FI” veio de um outro pacote escrito por Rasmus que interpretava dados de formulários HTML (Form Interpreter). Ele combinou os scripts do pacote Personal Home Page Tools com o FI e adicionou suporte a mSQL, nascendo assim o PHP/FI, que cresceu bastante, e as pessoas passaram a contribuir com o projeto. Estima-se que em 1996, PHP/FI estava sendo usado por cerca de 15.000 sites pelo mundo, e em meados de 1997 esse número subiu para mais de 50.000. Nessa época houve uma mudança no desenvolvimento do PHP. Ele deixou de ser um projeto de Rasmus com contribuições de outras pessoas para ter uma equipe de desenvolvimento mais organizada. O interpretador foi reescrito por Zeev Suraski e Andi Gutmans. Esse novo interpretador foi à base para a versão 3. O lançamento do PHP4, ocorrido em 22/05/2000, trouxe muitas novidades aos programadores de PHP. Uma das principais foi o suporte a sessões, bastante útil pra identificar o cliente que solicitou determinada informação. Além das mudanças referentes a sintaxe e novos recursos de programação, o PHP4 trouxe como novidade um otimizador chamado Zend, que permite a execução muito mais rápida de scripts PHP. Hoje, já se encontra disponível no mercado a versão 5.x do PHP. 1.3. Características da Linguagem PHP · É uma linguagem de fácil aprendizado; · Tem suporte a um grande número de bancos de dados como: dBase, Interbase, mSQL, mySQL, Oracle, Sybase, PostgreSQL e vários outros. · Tem suporte a outros serviços através de protocolos como IMAP, SNMP, NNTP, POP3 e, logicamente, HTTP; · É multiplataforma, tendo suporte aos sistemas Operacionais mais utilizados no mercado; · Seu código é livre, não é preciso pagar por sua utilização e pode ser alterado pelo usuário na medida da necessidade de cada usuário; · Não precisa ser compilado. 1.4. Comunicação cliente x servidor Quando é digitado um endereço no navegador para acessar uma página na internet, o que acontece é uma requisição (request) do cliente (navegador) ao servidor web. O servidor processa essa requisição e retorna uma resposta (response) ao cliente, que por sua vez interpreta o código retornado e formata a página para a sua visualização. As páginas PHP devem ser salvas no diretório raiz do servidor. Para testes locais com o EasyPHP, essa pasta é: c:\Arquivos de programas\EasyPHP\www. Para acessar a página, deve-se abrir o browser Internet Explorer e digitar-se o nome do domínio (http://127.0.0.1) e o nome da página com extensão .php. Quando o EasyPHP está sendo executado, aparece um ícone com uma letra “e” ao lado do relógio do Windows. Nos meus exemplos estarei usando o seguinte caminho: D:\Arquivos de programas\EasyPHP5.3.0\www. 2 Programando em PHP Vamos fazer nosso primeiro programa em PHP. Utilize o bloco de notas como editor de texto, e digite o seguinte: <?php phpinfo(); ?> Salve com o arquivo com o seguinte nome: EX01.PHP. Agora utilize o EasyPHP , clicando com botão direito do mouse no ícone do EasyPHP, e clique em Localhost, e em seguida, selecione o arquivo EX01.PHP. Ex02.php <html> <body> <?php //exemplo 02 echo "<h2 align='center'>SITE PESSOAL </h2>"; echo "centralizado com tamanho 2"; ?> </body> </html> 2.1 Sintaxe Básica Tags especiais indicam ao PHP onde estão os blocos de código. A tag de abertura é formada por um sinal de “menor que” (<), um sinal de interrogação (?) e a sigla php. A tag de fechamento é formada por um ponto interrogação (?) e sinal de “maior que” (>). Ex: <?php ... ?> O sinal de ponto-e-vírgula (;) indica o final de um comando. Podemos utilizar comentários (//). Para iniciar uma seqüência de comentários, utilizaremos o (/*) para iniciar e depois finalizar com o (*/). Ex. /* este comentário vai ultrapassar a primeira linha */ Quando quiser mostrar alguma informação na tela, podemos utilizar o comando ECHO. Caso tente exibir o código fonte, vai receber a seguinte resposta: <html> <body> <h2 align='center'>SITE PESSOAL </h2>centralizado com tamanho 2</body> </html> Como sabemos o PHP, roda no servidor. Toda a programação PHP é processada no servidor, que retorna somente o resultado final para o seu browser. Ex03.php – mostrar a data atual, misturando HTML com PHP. <html> <body> <?php $data_hoje = date("d/m/y",time()) ?> <p align="center"> Hoje é dia <?php echo $data_hoje; ?></p> </body> </html> Ex04.php – comando ECHO. <html> <body> <?php $salario = 1000; $desconto = 5.5; $resultado = $salario - ($salario * $desconto/100); echo $resultado; ?> </body> Ex05.php – Inclusão de uma variável dentro de outra variável. <html> <body> <?php $mensagem = "Feliz Natal"; $mensagem2 = "cuide-se bem"; $mensagem3 = "Tenha um $mensagem e $mensagem2"; echo $mensagem3; ?> </body> 2.2 Manipulando dados em PHP 2.2.1 Dados alfanuméricos (textos) As strings são sequências de caracteres que podem ser delimitadas por aspas simples (‘), aspas duplas (“) ou aspas invertidas (`). O PHP trata os dados alfanuméricos de forma diferente de acordo com o delimitador utilizado. 2.2.1.1 Aspas simples (‘) Observe os seguintes exemplos: Ex06.php <html> <body> <?php echo 'johns' ; ?> </body> </html> Vamos tentar inserir a seguinte: john’s. Ex07.php <html> <body> <?php echo 'john's' ; ?> </body> </html> Iremos receber como retorno o seguinte: Parse error: parse error, expecting `','' or `';'' in D:\Arquivos de programas\EasyPHP5.3.0\www\ex06.php on line 4 Isso acontece, porque ele entendeu a segunda aspas simples como final do texto. Ex08.php – Corrigido, colocando uma barra invertida (\). <html> <body> <?php echo 'john\'s' ; ?> </body> </html> 2.2.1.2 Aspas duplas (“) Ex09.php <html> <body> <?php echo "john's" ; ?> </body> </html> Não teremos problema com a finalização de texto. Ex10.php <html> <body> <?php echo "estou mostrando o caractere \" " ; ?> </body> </html> Ex11.php – Utilizando a barra invertida para mostrar texto entre aspas. <html> <body> <?php echo "usando \"aspas duplas\" " ; ?> </body> </html> 2.2.1.3 Aspas invertidas (`) Ex12.php – ideal para mostrar comandos do Linux ou Windows . <html> <body> <?php echo `dir *.php`; ?> </body> </html> 2.3 Variáveis Com o objetivo de armazenar dados, podemos utilizar em qualquer ponto do programa.Toda variável em PHP tem seu nome composto pelo caracter $(dólar) e uma string, que deve iniciar por uma letra ou o caracter “_”. O PHP é case sensitive, ou seja, as variáveis $aula e $AULA são diferentes. Exemplos de variáveis válidas: $salario, $nome, etc. Exemplos de variáveis inválidas: $5, $100tipo, etc. 2.3.1 Variáveis globais Quando a variável é declarada dentro de uma função, ela só estará disponível para o código desta função. O código a seguir gera um erro devido a essa característica. Ex13.php <html> <body> <?php function soma($a) { $b = $a + 5; } soma(10); echo "o valor de 'b' é $b"; ?> </body> </html> Para evitar este tipo de problema, deve-se definir a variável como global. O código a seguir resolve o problema do código anterior. Compare os resultados dos dois scripts. Ex14.php <html> <body> <?php function soma($a) { global $b; $b = $a + 5; } soma(10); echo "o valor de 'b' é $b"; ?> </body> </html> 2.3.2 Tipos de Dados No PHP existem variáveis do tipo numéricas, alfanuméricas(strings), arrays e objetos. 2.3.2.1 Numéricas As variáveis numéricas podem possuir valores inteiros ou reais (ponto flutuante). No momento da atribuição de um valor a uma variável, ela passa a assumir um tipo. Exemplos: $numero = 100; $x = 5; $y = 100.23 Ex15.php <html> <body> <?php $inteiro = 10; $real = 100.54; echo $inteiro + $real; ?> </body> </html> 2.3.2.2 Alfanuméricas (strings) São cadeias de caracteres que, vimos anteriormente. Exemplos: $nome = “Pedro”; 2.3.2.3 Arrays Arrays em PHP podem ser observados como mapeamentos ou como vetores indexados. Mais precisamente, um valor do tipo array é um dicionário onde os índices são as chaves de acesso. Vale ressaltar que os índices podem ser valores de qualquer tipo e não somente inteiros. Inclusive, se os índices forem todos inteiros, estes não precisam formar um intervalo contínuo Como a checagem de tipos em PHP é dinâmica, valores de tipos diferentes podem ser usados como índices de array, assim como os valores mapeados também podem ser de diversos tipos. No PHP, os arrrays iniciam-se em zero. Diferente de outras linguagens, você não precisa definir um número limite de posições dentro de um array, pois ele se expande dinamicamente. Caso o vetor não seja indicado entre os colchetes, o PHP irá procurar pelo último elemento do array e atribuir o novo valor na posição seguinte. Ex16.php <html> <body> <?php $cor[0] = "amarelo"; $cor[1] = "vermelho"; $cor[2] = "verde"; echo $cor[1]; ?> </body> </html> 2.4 Constantes Constantes são identificadores para valores simples. O seu conteúdo não muda durante a execução do código. Elas são criadas com a função define e, por convenção, são escritas com letras maiúsculas e não usam o cifrão no início. Ex17.php <html> <body> <?php define("NOME", "Pedro."); echo NOME; ?> </body> </html> 2.5 Operadores Através dos operadores nós informamos ao PHP o que deve ser executado. 2.5.1 Operadores aritméticos Só podem ser utilizados quando os operandos são números (integer ou float). Se forem de outro tipo, terão seus valores convertidos antes da realização da operação. São eles: + Adição - Subtração * Multiplicação / Divisão % Módulo ++ Acrescenta um a uma variável -- Subtrai um de uma variável += Soma um valor a uma variável e lhe atribui o resultado Obs: diferença entre --variável e variável-- Obs: diferença entre ++variável e variável++ Ex18.php <html> <body> <?php $x = 2; echo($x + 2); echo "<br>"; $x = 2; echo(5 - $x); echo "<br>"; $x = 4; echo($x * 5); echo "<br>"; $x = 15; echo($x / 5); echo "<br>"; $x = 10; echo($x % 8); echo "<br>"; $x = 5; $x++; echo($x); echo "<br>"; $x = 5; $x--; echo($x); echo "<br>"; $x = 8; echo($x); echo "<br>"; $x = 8; $x = $x + 10; echo($x); echo "<br>"; $x = 8; $x += 10; echo($x); ?> </body> </html> Ex19.php – utilização do pré-incremento (++variável) e pós-incremento (variável++) <html> <body> <?php $a = 1; $b = 3; $c = 5; $res1 = ++$b - $a; $res2 = $c-- + $a; $res3 = --$a + $c++; echo "a = $a <br> b = $b <br> c = $c <br>"; echo "res1 = $res1 <br> res2 = $res2 <br> res3 = $res3"; ?> </body> </html> Resultado a=0 b=4 c=5 res1=3 res2=6 res3=4 2.5.2 Operadores de Strings . Concatenação Ex20.php <html> <body> <?php $nome = "Capitão"; $sobrenome = "Nascimento"; echo $nome." ".$sobrenome; ?> </body> </html> .= Atribuição – Acrescentar um valor a uma variável sem perder o antigo valor Ex21.php <html> <body> <?php $nome = "Pedro"; $nome .= "Souza"; echo $nome; ?> </body> </html 2.5.3 Operadores de Comparação Há também os operadores de comparação. Uma comparação sempre gera um dos dois valores possíveis: vazio, que corresponde a falso, e 1, que corresponde a verdadeiro. = = é igual a > é maior que < é menor que >= é maior ou igual a <= é menor ou igual a Ex22.php <html> <body> <?php $idade1 = 25; $idade2 = 25; if ($idade1 == $idade2) {echo "verdadeiro"; } else {echo "falso"; } ?> </body> Exemplos: $a == $b //retorna verdadeiro se forem iguais $a != $b //retorna verdadeiro se forem diferentes $a > $b //verdadeiro se $a maior que $b $a >= $b //verdadeiro se $a for maior ou igual a $b 2.5.4 Operadores de Atribuição Existe um operador básico de atribuição e diversos derivados. Sempre retornam o valor atribuído. No caso dos operadores derivados de atribuição, a operação é feita entre os dois operandos, sendo atribuído o resultado para o primeiro. A atribuição é sempre por valor, e não por referência = Atribuição simples += Atribuição com adição -= Atribuição com subtração *= Atribuição com multiplicação /= Atribuição com divisão %= Atribuição com módulo .= Atribuição com concatenação Ex23.php <html> <body> <?php $tempo1 = 25; $tempo2 = 2; $tempo1 += $tempo2; echo $tempo1; ?> </body> </html> 2.5.5 Operadores Lógicos Utilizados para inteiros representando valores booleanos. and “e” lógico or “ou” lógico ! não (inversão) && “e” lógico || “ou” lógico Existem dois operadores para “e” e para “ou” porque eles têm diferentes posições na ordem de precedência. 2.5.5.1 Operações lógicas Em todas as linguagens de programação existem as estruturas chamadas estruturas de decisão, que são blocos de comandos, escritos de forma que executem determinada função caso uma condição seja verdadeira e outra caso seja falsa. A própria estrutura avalia a condição e se for verdadeira, executa determinada(s) função(ões); Caso seja falsa, executa função(ões) diferentes. Porém, existem casos em que mais de uma condição deve ser avaliada. Para isso, utilizamos operações lógicas. Elas avaliam duas ou mais condições e, através de operações lógicas, determinam qual será o resultado das condições avaliadas. O programa, então, irá utilizar este valor para determinar o que fazer. Existem basicamente, quatro operações lógicas chamadas: AND, OR, XOR e NOT (E, OU, OU EXCLUSIVO e NÃO). Operações lógicas permitem que o programa avalie se uma condição é verdadeira ou falsa e execute funções específicas com base nos resultados. Veremos agora as principais operações lógicas: Operação AND O operador AND retorna verdadeiro apenas quando todas as condições forem verdadeiras. Uma tabela de possíveis resultados é mostrada abaixo. Condição 1 AND Condição 2 Resultado V AND V V V AND F F F AND V F F AND F F Podemos comparar a operação lógica AND a uma multiplicação. Substituindo o Verdadeiro por 1 e Falso por 0, teremos o AND funcionando como um operador de multiplicação. Operação OR A operação OR não é tão “rígida”.O resultado será verdadeiro caso uma das condições seja verdadeira. Seria idêntico à uma operação de adição, porém com uma exceção: Na operação OR, a soma 1 + 1 é igual a 1. Vejamos a tabela: Condição 1 OR Condição 2 Resultado V OR V V V OR F V F OR V V F OR F F Transformando Verdadeiro em 1 e Falso em 0, teremos: Operação XOR A operação XOR (OU EXCLUSIVO) tem uma particularidade: Seu resultado será verdadeiro apenas se e somente se uma das condições for verdadeira, retornando falsa caso as duas tenham o mesmo valor. Condição 1 XOR Condição 2 Resultado V XOR V F V XOR F V F XOR V V F XOR F F Operação NOT Trata-se da mais simples de todas: Ela apenas inverte o resultado de uma operação, ou seja, verdadeiro torna-se falso e vice-versa. Algumas Palavras-chave do PHP and do for include require true break else foreach list return var case elseif function new static virtual class extends global not switch xor continue false if or this while default 2.6 Estruturas de Controle No PHP, as estruturas de controle são formadas por declarações condicionais e de looping. 2.6.1 Blocos Um bloco consiste de vários comandos agrupados com o objetivo de relacioná-los com determinado comando ou função. Em comandos como if, for, while, switch e em declarações de funções blocos podem ser utilizados para permitir que um comando faça parte do contexto desejado. Blocos em PHP são delimitados pelos caracteres “{” e “}”. A utilização dos delimitadores de bloco em uma parte qualquer do código não relacionada com os comandos citados ou funções não produzirá efeito algum, e será tratada normalmente pelo interpretador. Exemplo1: <html> <body> <?php $idade1 = 25; $idade2 = 25; if ($idade1 <> $idade2) { echo "verdadeiro"; echo "<br>"; $idade1 += 10; echo $idade1; } ?> </body> Exemplo2: <html> <body> <?php $idade1 = 25; $idade2 = 25; if ($idade1 <> $idade2) echo "verdadeiro"; echo "<br>"; $idade1 += 10; echo $idade1; ?> </body> Observe os dois exemplos e encontre a diferença. Sabendo-se que o objetivo é acrescentar 10 a variável $idade1, se a variável $idade1 for diferente de $idade2. 2.6.2. Estrutura if / else / elseif If A estrutura if (do inglês: “se”) executa um determinado bloco, caso uma condição seja verdadeira. Sua sintaxe é: if (expressão) comando; if (expressão) { comando; . . . . . . . . . comando; } Ex24.php <?php $a = 45; $b = 20; if ($a >= $b) { $media = ($a + $b) / 2; $resto = $a % $b; //calcula o resto da divisão de A por B echo "o Valor de A é: " .$a. "<br>"; echo "o Valor de B é: " .$b. "<br>"; echo "o Valor da média é: ".$media. "<br>"; echo "o resto da divisão de A por B é: ".$resto; } ?> Else O else é um complemento opcional para o if. Se utilizado, o comando será executado se a expressão retornar o valor false (zero). Suas duas sintaxes são: if (expressão) comando; else comando; ou if (expressão) { comando 1; comando n else { comando 1; comando n } Ex25.php Em determinadas situações é necessário fazer mais de um teste, e executar condicionalmente diversos comandos ou blocos de comandos. Para facilitar o entendimento de uma estrutura do tipo: if (expressao1) comando1; else if (expressao2) comando2; else if (expressao3) comando3; else comando4; Foi criado o comando, também opcional elseif. Ele tem a mesma função de um else e um if usados seqüencialmente, como no exemplo acima. Num mesmo if podem ser utilizados diversos elseif´s, ficando essa utilização a critério do programador. Elseif O comando elseif também pode ser utilizado com dois tipos de sintaxe. Em resumo, a sintaxe geral do comando if fica das seguintes maneiras: if (expressao1) comando; elseif (expressao2) comando; else comando; ou if (expressão 1) { comando 1; comando n; } elseif (expressão 2) { comando 1; comando n; } else { comando 1; comando n; } Ex26.php <?php $nota1 = 6; $nota2 = 8; $media = ($nota1 + $nota2) / 2; if ($media > 7) { echo "Média: ".$media. "<br>"; echo "Aluno aprovado"; } elseif ($media <7) { echo "Média: ".$media ."<br>"; echo "Aluno reprovado"; } else { echo "Média: ".$media."<br>"; echo "Aluno em recuperação"; } ?> 2.6.3 Estrutura Switch Case O comando switch atua de maneira semelhante a uma série de comandos if na mesma expressão.Freqüentemente o programador pode querer comparar uma variável com diversos valores, e executar um código diferente a depender de qual valor é igual ao da variável. Quando isso for necessário, deve-se usar o comando switch. Sintaxe: switch ($valor) { case "____"; comandos; comandos; break; case "____"; comandos; comandos; break; case "____"; comandos; comandos; break; case "____"; comandos; comandos; break; default; comandos; comandos; break; O exemplo seguinte mostra dois trechos de código que fazem a mesma coisa, sendo que o primeiro utiliza uma série de if’s e o segundo utiliza switch: Exemplo 1: Estrutura IF <?php $i = 0; if ($i == 0) echo "i é igual a zero"; elseif ($i == 1) echo "i é igual a um"; elseif ($i == 2) echo "i é igual a dois"; ?> Exemplo 2: Estrutura SWITCH <?php $i = 0; switch ($i) { case 0: echo "i é igual a zero"; break; case 1: echo "i é igual a um"; break; case 2: echo "i é igual a dois"; break; } ?> É importante compreender o funcionamento do switch para não cometer enganos. O comando switch testa linha a linha os cases encontrados, e a partir do momento que encontra um valor igual ao da variável testada, passa a executar todos os comandos seguintes, mesmo os que fazem parte de outro teste, até o fim do bloco. Por isso usa-se o comando break, quebrando o fluxo e fazendo com que o código seja executado da maneira desejada. Exemplo sem a utilização do break <?php $i = 0; switch ($i) { case 0: echo "i é igual a zero"; case 1: echo "i é igual a um"; case 2: echo "i é igual a dois"; } ?> 2.6.4 Estrutura de Repetição As estruturas de repetição são utilizadas quando o programador precisa, por exemplo, repetir o mesmo comando várias vezes. Vamos ver as estruturas de repetição existentes. 2.6.4.1 While O while é o comando de repetição (laço) mais simples. Ele testa uma condição e executa um comando, ou um bloco de comandos, até que a condição testada seja falsa. Assim como o if, o while também possui duas sintaxes alternativas: While (condição) comando; Ou While (condição) { comandos; comandos; } Ex27.php <?php $a = 0; while($a <= 10) { echo $a."<br>"; $a++; } ?> A expressão só é testada a cada vez que o bloco de instruções termina, além do teste inicial. Se o valor da expressão passar a ser false no meio do bloco de instruções, a execução segue até o final do bloco. Se no teste inicial a condição for avaliada como false, o bloco de comandos não será executado. 2.6.4.2 Do ... While O laço do..while funciona de maneira bastante semelhante ao while, com a simples diferença que a expressão é testada ao final do bloco de comandos. Sintaxe: do { comando . . . comando } while (<condição>); Ex28.php <?php $a = 7; do { echo $a++; echo "<br>"; } while ($a <=10) ?> 2.6.4.3 For O tipo de laço mais complexo é o for. Para os que programam em C, C++ ou Java, a assimilação do funcionamento do for é natural. Mas para aqueles que estão acostumados a linguagens como Pascal, há uma grande mudança para o uso do for. Sintaxe: for (<inicializacao>;<condicao>;<incremento>) { <comando>; . . . <comando>; } As três expressões que ficam entre parênteses têm as seguintes finalidades: Inicialização: comando ou seqüência de comandos a serem realizados antes do inicio do laço. Serve para inicializar variáveis. Condição:Expressão booleana que define se os comandos que estão dentro do laço serão executados ou não. Enquanto a expressão for verdadeira (valor diferente de zero) os comandos serão executados. Incremento: Comando executado ao final de cada execução do laço. Um comando for funciona de maneira semelhante a um while escrito da seguinte forma: while (<condicao>) { comandos ... <incremento> } Ex29.php <?php For ($a = 0; $a <10; $a++) { Echo " O valor de A é: ". $a; Echo "<br>"; } ?> Resultado O valor de A é: 0 O valor de A é: 1 O valor de A é: 2 O valor de A é: 3 O valor de A é: 4 O valor de A é: 5 O valor de A é: 6 O valor de A é: 7 O valor de A é: 8 O valor de A é: 9 2.6.5 Quebra de Fluxo 2.6.5.1 Break O comando break pode ser utilizado em laços de do, for e while, além do uso já visto no comando switch. Ao encontrar um break dentro de um desses laços, o interpretador PHP para imediatamente a execução do laço, seguindo normalmente o fluxo do script Ex30.php <?php $x = 20; while ($x < 30) { if ($x == 5) { echo "Número inválido"; break; } echo "Número ".$x."<br>"; $x--; } ?> Resultado Número 20 Número 19 Número 18 Número 17 Número 16 Número 15 Número 14 Número 13 Número 12 Número 11 Número 10 Número 9 Número 8 Número 7 Número 6 Número inválido No trecho de código acima, o laço while tem uma condição para seu término normal ($x < 30), mas foi utilizado o break para o caso de um término não previsto no início do laço. Assim o interpretador seguirá para o comando seguinte ao laço. 2.6.5.2 Continue O comando continue também deve ser utilizado no interior de laços, e funciona de maneira semelhante ao break, com a diferença que o fluxo ao invés de sair do laço volta para o início dele. Ex31.php <?php for ($i = 0; $i < 100; $i++) { if ($i % 2) continue; echo "$i"; } ?> 2.7 Funções As funções (functions) são úteis para deixar o código dos programas mais organizados e mais modular, e além disso elas nos poupam da tarefa de ter que repetir determinado código toda vez que precisamos realizar a mesma tarefa. Sintaxe: function nome_da_função([arg1, arg2, arg3]) { Comandos; ... ; [return <valor de retorno>]; } Qualquer código PHP válido pode estar contido no interior de uma função. Como a checagem de tipos em PHP é dinâmica, o tipo de retorno não deve ser declarado, sendo necessário que o programador esteja atento para que a função retorne o tipo desejado. É recomendável que esteja tudo bem documentado para facilitar a leitura e compreensão do código. 2.7.1 Valor de retorno Toda função pode opcionalmente retornar um valor, ou simplesmente executar os comandos e não retornar valor algum. Não é possível que uma função retorne mais de um valor, mas é permitido fazer com que uma função retorne um valor composto, como listas ou arrays. 2.7.2 Argumentos É possível passar argumentos para uma função. Eles devem ser declarados logo após o nome da função, entre parênteses, e tornam-se variáveis pertencentes ao escopo local da função. A declaração do tipo de cada argumento também é utilizada apenas para efeito de documentação. Ex32.php <?php function soma_todos($v1,$v2,$v3) { $soma = $v1+$v2+$v3; echo "O resultado é: $soma"; } $n1 =10; $n2 =20; $n3 =30; soma_todos($n1,$n2,$n3); ?> Ex33.php <?php function exibir_texto() { echo "AULA DE INFORMATICA"; } exibir_texto(); ?> Ex34.php <?php function soma($valor1, $valor2) { $resultado = $valor1 + $valor2; return ($resultado); } $x = soma(7, 8); echo($x); ?> 2.7.3 Comando Return O comando return devolve para o ponto de chamada da função o valor da variável ou expressão que aparece imediatamente após esse comando. Desse modo, podemos atribuir a uma variável (com o operador =) o valor retornado da função. Ex35.php <?php Function triplo($numero) { $x = $numero * 3; return $x; } $valor = 10; echo triplo($valor); ?> 2.7.4 Passagem de parâmetros: valor e referência Quando passamos uma variável como argumento para uma função, por padrão estamos passando apenas o valor dela, e isso faz com que as alterações realizadas dentro da função não se reflitam sobre a variável quando terminar a execução da função. Isso é chamado de passagem de parâmetros por valor. Existem situações em que queremos que a variável a ser passada como argumento seja alterada conforme as alterações feitas durante a execução da função. Isso é chamado de passagem de parâmetros por referência. Esse tipo de passagem de parâmetros requer que seja colocado o símbolo & antes do nome da variável. Ex36.php <?php function dobro($valor) { $valor = 2 * $valor; } function duplica(&$valor) { $valor = 2 * $valor; } $valor = 5; dobro($valor); echo $valor . "<br>"; duplica($valor); echo $valor; ?> Resultado: 5 10 A função dobro, retorna o valor original, enquanto a função duplica, retorna o valor alterado. Ex37.php <?php function mais5(&$num1, $num2) { $num1 += 5; $num2 += 5; } $a = $b = 1; mais5($a, $b); echo $a. "<br>" .$b; /* Neste caso, só $num1 terá seu valor alterado, pois a passagem por referência está definida na declaração da função. */ ?> 2.7.4.1 Argumentos com valores pré-definidos (default) Em PHP é possível ter valores default para argumentos de funções, ou seja, valores que serão assumidos em caso de nada ser passado no lugar do argumento. Quando algum parâmetro é declarado desta maneira, a passagem do mesmo na chamada da função torna-se opcional. Ex38.php <?php function padrao($lembrete = "Estudar?") { echo $lembrete; } padrao(); // imprime "Estudar?" echo "<br>"; padrao("Estudar bastante"); // imprime “Estudar bastante” ?> Exercícios +++++++++++++++++++++++++++++++++++++++++++++++++++++++ <?php function calcula_todos($v1,$v2,$v3,$opt) { if ($opt=="s") $calculo = $v1+$v2+$v3; else $calculo = $v1-$v2-$v3; echo "O resultado é: $calculo"; } $n1 =10; $n2 =20; $n3 =30; $opt = "s"; calcula_todos($n1,$n2,$n3,$opt); ?> +++++++++++++++++++++++++++++++++++++++++++++++++++++++ <?php function reajuste(&$salario) { $salario *= 1.10; } $antigo = 1000; reajuste($antigo); echo $antigo; ?> +++++++++++++++++++++++++++++++++++++++++++++++++++++++ <?php function padrao($calc = 3) { echo $calc + 5; } padrao(); echo "<br>"; padrao(10); ?> +++++++++++++++++++++++++++++++++++++++++++++++++++++++ <?php function padrao($calc = "valor nulo") { if($calc=="valor nulo") echo $calc; else echo $calc + 5; } padrao(); echo "<br>"; padrao(10); ?> +++++++++++++++++++++++++++++++++++++++++++++++++++++++ <?php function padrao ($v1="",$v2="") { if($v1=="" && $v2=="") echo "Valores não definidos"; else echo $v1*$v2; } padrao (); echo "<br>"; padrao (2,3); ?> 2.8 Utilizando Includes em PHP Escrever scripts em php pode ser simples, porém, não é uma boa prática colocar todo script dentro de um único documento. O ideal é que se tenha documentos separados e que estes sejam chamados quando necessários (assim como as funções). Para que um script contido em um arquivo separado possa ser usado, devemos chamá-lo utilizando as funções require() e include(). Essas funções agem como chamadas à funções, carregando o script php que recebem como parâmetro e executando-o dentro do script que o chamou. Ex: Temos um script chamado data.php, cuja função é imprimir na tela a data atual. Seu conteúdo é: Nome do arquivo: data.php <?php $data = date("d-m-Y"); echo " Hoje é $data <br>"; ?> Se quisermos que a data seja exibida em todas as páginas de nosso site, não precisaremos escrevereste script novamente. Basta que o “chamemos”, através da função include: Nome do arquivo: Principal.php <?php include("data.php"); ?> Criando um menu para o Site Arquivo: Menu.php <font size="2"> <p><strong>Menu</strong></p> <p><a href="Home.php">HOME</a></p> <p><a href="Sobre.php">Sobre a Empresa</a></p> <p><a href="Imagens.ph">Fotos</a></p> </font> Arquivo: Principal.php <?php include("menu.php"); ?> Além do comando Include, existe também o comando Require, porém o Require permite chamar somente um arquivo, enquanto o Include através de funções podemos chamar vários. Exemplo: <?php $incluir = array ("data.php","menu.php"); For ($i=0; $i<sizeof($incluir); $i++) { include"$incluir[$i]"; } ?> Usando require, somente será incluído o arquivo: data.php. 2.9 Formulários Formulários são estruturas usadas para que o visitante possa interagir com o site, enviando informações para o site. Essas informações são processadas por scripts que capturam as informações enviadas e as processam, retornando um resultado, gravando-as no banco de dados do site, etc.... O campo pertencente ao formulário é delimitado pelas tag's <form> e </form>. Dentro dessas tag's inserimos os elementos do formulário (campos de texto, botões, etc). Esses elementos irão capturar a informação fornecida pelo visitante e enviar ao script para processamento. Cada elemento possui um nome que é referenciado pelo script na captura de informações. As tags são: <form name=”” action=”” method=”” enctype=””> name: o identificador do formulário. Utilizado principalmente em Scripts client-side (JavaScript); action: nome do script que receberá os dados do formulário ao ser submetido; method: método de envio dos dados: get ou post; enctype: formato em que os dados serão enviados. O default é urlencoded. Se for utilizado um elemento do tipo upload de arquivo (file) é preciso utilizar o tipo multipart/form-data. 2.9.1 Como criar um formulário Os formulários são criados por meio da linguagem HTML. Um formulário é composto de no mínimo um campo para entrada de dados, e um botão para enviar as informações contidas nele. Exf01.php <form> <p>Digite seu nome: <input type="Text" name="nome" size="20"></p> <p><input type="Submit" value="Enviar" name="enviar"></p> </form> Quando clicamos no botão “Enviar” desse formulário, o valor do nome não será enviado a lugar nenhum, pois o navegador não sabe para onde enviar as informações. Antes de continuar, iremos verificar algumas informações necessárias para confecções de páginas. 2.9.1.1 A tag <input> Muitos elementos de um formulário html são definidos pela tag <input>. Cada tipo de elemento possui parâmetros próprios, mas todos possuem pelo menos dois parâmetros em comum: type, que define o tipo de elemento, e name, nome daquele elemento. Existem, ainda, outros parâmetros, também chamados atributos que são comuns a maioria dos campos de um formulário. São eles: Value - o valor pré-definido do elemento, que aparecerá quando a página for carregada; Size - O tamanho do elemento na tela, em caracteres; Maxlength - O tamanho máximo do texto contido no elemento, em caracteres; Exemplo: <p>Digite seu nome: <input type="Text" name="nome" size="100" maxlength="10"></p> 2.9.1.1.1 Valores da Opção Type Text: Mostra uma caixa de texto de uma linha, e permite a entrada de numéricos ou alfanuméricos; Password: Utilizado para a digitação de senhas. São mostrados asteriscos (*) no lugar dos caracteres digitados; Hidden: é um campo escondido. Não aparece na tela. Podemos utilizá-lo para passar informações aos programas que recebem dados. Select: mostra uma lista de seleção (drop-down); Checkbox: exibe uma caixa de seleção, que pode ser marcada ou desmarcada; Radio: são botões de seleção, em que o usuário escolhe uma entre várias opções disponíveis; Textarea: caixa de texto com várias linhas; File: permite envio de arquivo; Submit: botão que aciona o envio de dados do formulário; Image: tem a mesma função do submit, mas utiliza uma imagem em vez do botão tradicional do formulário; Reset: limpa os campos de um formulário e retorna ao valor-padrão (se existir). Text Exf02.php <form> <p>Digite seu nome: <input type="Text" name="nome" size="100" maxlength="10"></p> <p><input type="Submit" value="Enviar" name="enviar"></p> </form> Password Exf03.php <form> <p> Informe a senha: <input type="Password" name="senha" size="6" maxlength ="6"</p> <p><input type="Submit" value="Enviar" name="enviar"></p> </form> Select Size - número de linhas exibidas. Default: 1; Multiple - parâmetro que, se presente, permite que sejam selecionadas duas ou mais linhas, através das teclas Control e Shift; Option - Cada item do tipo “option” acrescenta uma linha ao select; Value - Valor a ser enviado ao servidor se aquele elemento for selecionado. Default: o texto do item; Texto - valor a ser exibido para aquele item. Não é definido por um parâmetro, mas pelo texto que fica entre as tags <option> e </option> Se o parâmetro “size” tiver o valor 1 e não houver o parâmetro “multiple”, exibe na tela uma “combo box”, caso contrário, exibe na tela uma “select list”. Exf04.php <form> <p> Estado: <select name = "Estado" Size = "1"> <Option value = "RO"> RO </option> <option value = "SP">SP </option> <option value = "RS"> RS </option> </select> </p> <p><input type="Submit" value="Enviar" name="enviar"></p> </form> Exf05.php <form> <p> Estado: <select name = "Estado" Size = "3" multiple> <Option value = "RO"> RO </option> <option value = "SP">SP </option> <option value = "RS"> RS </option> </select> </p> <p><input type="Submit" value="Enviar" name="enviar"></p> </form> Checkbox Value - o valor que será enviado ao servidor quando o formulário for submetido, no caso do campo estar marcado; Checked – o estado inicial do elemento. Quando presente, o elemento já aparece marcado; Exf06.php <form> <p> <input type="Checkbox" name="novidades" value = "nov"> Quero receber as novidades do site por e-mail </p> <p><input type="Submit" value="Enviar" name="enviar"></p> </form> Exf07.php <form> <p> <input type="Checkbox" name="novidades" value = "nov" checked> Quero receber as novidades do site por e-mail </p> <p><input type="Submit" value="Enviar" name="enviar"></p> </form> Radio Value - o valor que será enviado ao servidor quando o formulário for submetido, no caso do campo estar marcado; Checked – o estado inicial do elemento. Quando presente, o elemento já aparece marcado; Exf08.php <form> <p> Sexo: <br> <input type="radio" name = "sx" value = "masculino" checked> Masculino <br> <input type="radio" name = "sx" value = "feminino"> Feminino </p> <p><input type="Submit" value="Enviar" name="enviar"></p> </form> Textarea Cols - número de colunas do campo, em caracteres; Rows - número de linhas do campo, em caracteres; Wrap - Maneira como são tratadas as quebras de linha automáticas. O valor soft faz com que o texto “quebre” somente na tela, sendo enviado para o servidor o texto da maneira como foi digitado; O valor “hard” faz com que seja enviado para o servidor da maneira como o texto aparece na tela, com todas as quebras de linhas inseridas automaticamente; o valor “off” faz com que o texto não quebre na tela e nem quando enviado ao servidor. Obs.: O elemento do tipo textarea não possui o parâmetro “value”. O valor pré-definido do campo é o texto que fica entre as tags <textarea> e </textarea>. Exf09.php <form> <textarea name="Comentarios" rows = "5" cols = "20" wrap="hard"></textarea> <p><input type="Submit" value="Enviar" name="enviar"></p> </form> Upload de arquivos (file) Exibe na tela do browser um campo de texto e um botão, que ao clicado abre uma janela para localizar um arquivo no disco. Para utilizar este tipo decomponente, o formulário deverá utilizar o método “POST” e ter o parâmetro “enctype” com o valor "multipart/form-data". Size - O tamanho do campo de texto exibido. Exf10.php <form name="form1" enctype="multipart/form-data" method="post" action=""> <input type="file" name="" size="30"> </form> Submit Button Exf11.php <form> <p><input type="Submit" value="Enviar" name="enviar"></p> </form> Reset Button Exf12.php <form> <p>Digite seu nome: <input type="Text" name="nome" size="100" maxlength="10"></p> <p> <input type="Submit" value="Enviar" name="enviar"> <input type="Reset" value="Limpar" name="Cancelar"> </form> Exemplo: <form> <strong>Dados Cadastrais</strong><br> <pre> Nome <input type="Text" name="nome" size="35" maxlength="35"> Endereço <input type="text" name="endereco" size = "35" maxlength="35"> Bairro <input type="text" name="bairro" size = "20" maxlength="20"> Cidade <input type="text" name="cidade" size = "20" maxlength="20"> UF <select name="estado"> <option value="AC">AC</option> <option value="AL">AL</option> <option value="AM">AM</option> <option value="AP">AP</option> <option value="BA">BA</option> <option value="CE">CE</option> <option value="DF">DF</option> <option value="ES">ES</option> <option value="GO">GO</option> <option value="MA">MA</option> <option value="MG">MG</option> <option value="MS">MS</option> <option value="MT">MT</option> <option value="PA">PA</option> <option value="PB">PB</option> <option value="PE">PE</option> <option value="PI">PI</option> <option value="PR">PR</option> <option value="RJ">RJ</option> <option value="RN">RN</option> <option value="RO">RO</option> <option value="RR">RR</option> <option value="RS">RS</option> <option value="SC">SC</option> <option value="SE">SE</option> <option value="SP">SP</option> <option value="TO">TO</option> </select> Sexo <input type = "radio" name = "sx" value="masculino"> Masculino <input type = "radio" name = "sx" value="Feminio"> Feminino <input type="Checkbox" name="novidades" value = "nov" checked> Quero receber as novidades por e-mail E-mail <input type="text" name="email" size = "50" maxlength="100"> Senha <input type="Password" name="senha1" size="6" maxlength ="6"> Repetir Senha <input type="Password" name="senha2" size="6" maxlength ="6"> </pre> <p> <input type="Submit" value="Enviar" name="enviar"> <input type="Reset" value="Limpar" name="Cancelar"> </p> </form> 2.10 Formulários com PHP A linguagem PHP é muito utilizada para o tratamento de formulários. Como visto anteriormente, formulários são utilizados para que o usuário possa enviar informações à página, como seu endereço de e-mail, ou um nome a pesquisar. As informações são enviadas pelo formulário através dos métodos GET ou POST, processadas pelo servidor e armazenadas em arquivos ou bancos de dados. Muitas vezes, esse processamento retorna um resultado (Ex: uma pesquisa) que é enviado ao usuário. A linguagem HTML não é capaz de manipular essas informações, exigindo para isso o uso de scripts, como o PHP. O que você deverá observar quando criar seus formulários para manipular dados no PHP: Seu formulário deve conter um botão "SUBMIT" para poder enviar as informações; Todos os campos do formulário que serão tratados no script PHP devem conter o parâmetro "NAME", caso contrário, os dados não serão passados para o script PHP; Como as informações do formulário são passadas para esse script PHP e como as informações do formulário enviado são tratadas, dependem de você. Existem 2 métodos como as informações podem ser passadas: GET e POST. O recomendável sempre, para todos os formulários é usar o método POST, onde os dados enviados não são visíveis nas URLs, ocultando possíveis importantes informações e permitindo o envio de longas informações. O GET é totalmente o contrário disso. Se no momento da criação de um formulário nenhum método for especificado na opção method da tag form, estaremos usando o método GET para o envio dos dados. Exemplo: <form action="recebe.php"> <p>Nome..: <input type="text" name ="nome" size ="30"></p> <p>Cidade: <input type="text" name ="cidade" size ="30"></p> <p><input type="submit" value="Enviar" name="enviar"></p> </form> Clicando no botão enviar vai receber no navegador a seguinte resposta: http://127.0.0.1/recebe.php?nome=Euder&cidade=Lins&enviar=Enviar Como não foi especificado o method, ele assume o padrão GET. Os campos são passados por parâmetros após o endereço de destino. O caractere ? representa o início de uma cadeia de variáveis, e o símbolo & identifica o início de uma nova variável. As variáveis e seus respectivos valores são separados pelo caractere =. A vantagem do método GET é a possibilidade da passagem de parâmetros: http://www.loja.com.br/produto.php?codigo=50. Somente com o método GET, podemos passar parâmetros por links. O método POST trabalha somente com formulários. Com o método POST,nosso script ficaria assim: <form action="recebe.php" method="POST"> <p>Nome..: <input type="text" name ="nome" size ="30"></p> <p>Cidade: <input type="text" name ="cidade" size ="30"></p> <p><input type="submit" value="Enviar" name="enviar"></p> </form> Clicando no botão enviar vai receber no navegador a seguinte resposta: http://127.0.0.1/recebe.php O método POST, envia os dados do formulário por meio do corpo da mensagem encaminhada ao servidor. Uma vantagem do método POST é que não há limitação de tamanho dos dados (2000 caracteres com GET) que estão sendo enviados. O método GET não envia imagens. 2.10.1 Array superglobal $_GET O PHP disponibiliza o array $_GET para tratar as informações enviadas pelo método GET. As informações enviadas são mantidas dentro destes arrays e o nome dos campos é utilizado como chave associativa para que o script possa acessar os valores. Exemplo: $_GET['nome'] e $_GET['cidade']. Arquivo Envia.php <form name="envia" method="get" action="recebe.php"> <p>Nome..: <input type="text" name ="nome" size ="30"></p> <p>Cidade: <input type="text" name ="cidade" size ="30"></p> <p><input type="submit" value="Enviar" name="enviar"></p> </form> Arquivo Recebe.php <?php //captura as informações enviadas pelo formulário $nome = $_GET['nome']; $cidade = $_GET['cidade']; //mostra as informações na tela echo "<p align='center'>Meu nome é $nome</p>"; echo "<p align='center'>Minha cidade é $cidade</p>"; ?> 2.10.2 Array superglobal $_POST Esta variável é utilizada para receber as variáveis vindas do formulário pelo método post. Sintaxe: $_POST[campo_do_formulário] onde: campo_do_formulário – é o campo que foi criado no formulário que se deseja recuperar. Exemplo: <? $_POST[campo1]; ?> Arquivo Envia.php <form name="envia" method="POST" action="recebe.php"> <p>Nome..: <input type="text" name ="nome" size ="30"></p> <p>Cidade: <input type="text" name ="cidade" size ="30"></p> <p><input type="submit" value="Enviar" name="enviar"></p> </form> Arquivo Recebe.php <?php //captura as informações enviadas pelo formulário $nome = $_POST['nome']; $cidade = $_POST['cidade']; //mostra as informações na tela echo "<p align='center'>Meu nome é $nome</p>"; echo "<p align='center'>Minha cidade é $cidade</p>"; ?> Para usar o método POST, basta trocar o $_GET por $_POST. Exf13.php Cadastro.php <form name="Cadastro" method="post" action="DadosCadastro.php"> <p>Nome:<br> <input name="nome" type="text" id="nome" size="30" maxlength="30"></p> <p>Senha:<br><input name="senha" type="password" id="senha" size="10" maxlength="10"></p> <p>Sexo:<br> <input name="sexo" type="radio" value="Masculino">Masculino <input name="sexo" type="radio" value="Feminino">Feminino</p><p>Selecione o Turno:<br> <input name="turno" type="checkbox" id="turno" value="Manhã">Manhã <input name="turno" type="checkbox" id="turno" value="Tarde">Tarde <input name="turno" type="checkbox" id="turno" value="Noite">Noite</p> <p>Cidade:<br> <select name="cidade" id="cidade"> <option value="vazio"> </option> <option value="Rio">Rio de Janeiro</option> <option value="São Paulo">São Paulo</option> <option value="Belo Horizonte">Belo Horizonte</option> </select></p> <p><input type="submit" value="Enviar"></p> <input type='hidden' name='btnOK' value='1'> </form> DadosCadastro.php <?php // Recebe os dados do formulário com a variável $_POST $nome = $_POST["nome"]; $senha = $_POST["senha"]; $sexo = $_POST["sexo"]; $turno = $_POST["turno"]; $cidade = $_POST["cidade"]; // Exibe os dados na página de resposta echo "Os dados recebidos do formulário são: <p>"; echo " <table width = '400' border='1' cellspacing='0' cellpadding='0'> <tr> <td width = '100'>Nome:<td> <td width = '300'>$nome</td> </tr> <tr> <td width = '100'>Senha:<td> <td width = '300'>$senha</td> </tr> <tr> <td width = '100'>Sexo:<td> <td width = '300'>$sexo</td> </tr> <tr> <td width = '100'>Turno:<td> <td width = '300'>$turno</td> </tr> <tr> <td width = '100'>Cidade:<td> <td width = '300'>$cidade</td> </tr> </table> "; ?> <html> <body> <p><font face="Arial, Helvetica, sans-serif" size="4"> <a href="cadastro.php">Clique aqui para voltar ao formulário.</a> </font> </body> </html> 2.10.3 Verificando campos de um formulário Para evitar ausência de informações, é possível verificar se todos os campos do formulário foram preenchidos. Iremos utilizar o cadastro.php para enviar os dados e dadoscadastro.php para receber os dados. Funções utilizadas: EMPTY – Verifica se determinada string está vazia(nula) STRLEN – Retorna o número de caracteres de uma string SUBSTR_COUNT – Retorna o número de vezes que uma substring é encontrada. STRSTR – Acha a primeira ocorrência de uma string. Se não encontrar retorna falso(FALSE). Cadastro.php <form name="Cadastro" method="post" action="DadosCadastro.php"> <p>Nome:<br> <input name="nome" type="text" id="nome" size="30" maxlength="30"></p> <p>Senha:<br><input name="senha" type="password" id="senha" size="10" maxlength="10"> Min. 5 Caracteres</p> <p>Sexo:<br> <input name="sexo" type="radio" value="Masculino" checked>Masculino <input name="sexo" type="radio" value="Feminino">Feminino</p> <p>Selecione o Turno:<br> <input name="turno" type="radio" id="turno" value="Manhã" checked>Manhã <input name="turno" type="radio" id="turno" value="Tarde">Tarde <input name="turno" type="radio" id="turno" value="Noite">Noite</p> <p>Cidade:<br> <select name="cidade" id="cidade"> <option value="vazio"> </option> <option value="Rio">Rio de Janeiro</option> <option value="São Paulo">São Paulo</option> <option value="Belo Horizonte">Belo Horizonte</option> </select></p> <p>E-mail:<br> <input name="email" type="text" size="50" maxlength="50"></p> Comentários<p><textarea name="Comentarios" rows = "5" cols = "20" wrap="hard"></textarea> <p><input type="submit" value="Enviar"></p> <input type='hidden' name='btnOK' value='1'> </form> Dadoscadastro.php <?php // Recebe os dados do formulário com a variável $_POST $nome = $_POST["nome"]; $senha = $_POST["senha"]; $sexo = $_POST["sexo"]; $turno = $_POST["turno"]; $cidade = $_POST["cidade"]; $email = $_POST["email"]; $comentarios = $_POST["Comentarios"]; $erro = 0; if (empty($nome)) { $mensagem[] = "Informe o Nome"; $erro = 1; } if (strlen($senha <= 5)) { $mensagem[] = "A Senha deverá ter no mínimo 5 caracteres"; $erro = 1; } if (substr_count($email, "@")!=1 and substr_count($email, ".")!=1 and strlen($email) < 8 ) { $mensagem[] = "E-mail Inválido"; $erro =1; } if ($erro <> 0) { For ($i=0; $i<sizeof($mensagem); $i++) { echo "<br>"; Echo $mensagem[$i]; } } if($erro == 0){ // Exibe os dados na página de resposta echo "Os dados recebidos do formulário são: <p>"; echo " <table width = '400' border='1' cellspacing='0' cellpadding='0'> <tr> <td width = '100'>Nome:<td> <td width = '300'>$nome</td> </tr> <tr> <td width = '100'>Senha:<td> <td width = '300'>$senha</td> </tr> <tr> <td width = '100'>Sexo:<td> <td width = '300'>$sexo</td> </tr> <tr> <td width = '100'>Turno:<td> <td width = '300'>$turno</td> </tr> <tr> <td width = '100'>Cidade:<td> <td width = '300'>$cidade</td> </tr> <tr> <td width = '100'>E-Mail:<td> <td width = '300'>$email</td> </tr> <tr> <td width = '100'>Comentários:<td> <td width = '300'>$comentarios</td> </tr> </table> Realizado com sucesso!!! "; } ?> <html> <body> <p><font face="Arial, Helvetica, sans-serif" size="4"> <a href="cadastro.php">Clique aqui para voltar ao formulário.</a> </font> </body> </html> Opção para o e-mail: if(strstr($email ,'@')==FALSE) { $mensagem[] = "E-mail Inválido"; $erro =1; } Funções trim(), ltrim() e chop() Para evitar problemas, podemos remover os espaços em excesso que o usuário envia utilizando uma das funções citadas acima. Apesar de possuírem o mesmo objetivo, essas funções possuem pequenas diferenças: A função chop() remove espaços apenas no final da string. A função ltrim() remove espaços no início da string e a função trim() remove espaços no início e no final da string. A utilização depende do resultado desejado. Envia.php <form name="envia" method="post" action="recebe.php"> <p>Nome..: <input type="text" name ="nome" size ="30"></p> <p>Cidade: <input type="text" name ="cidade" size ="30"></p> <p>Salário: <input type="text" name ="salario" size ="30"></p> <p><input type="submit" value="Enviar" name="enviar"></p> </form> Recebe.php <?php //captura as informações enviadas pelo formulário $nome = $_POST['nome']; $cidade = $_POST['cidade']; $salario = $_POST['salario']; //mostra as informações na tela echo "<p align='center'>Meu nome é $nome</p>"; echo "<p align='center'>Minha cidade é $cidade</p>"; echo "<p align='center'>Meu salário é $salario</p>"; $cidade = strlen($_POST['cidade']); echo "<p align='center'>Minha cidade é $cidade</p>"; ?> Foi utilizado a função strlen – mostra a quantidade de caracteres. Agora imagina que o usuário deixou alguns caracteres em branco no momento da digitação da cidade. Ex: Rio de Janeiro (observa que deixei espaços antes da palavra Rio e após a palavra Janeiro). No momento de gravar em Banco de Dados, iremos guardar informações desnecessárias. Recebe.php <?php //captura as informações enviadas pelo formulário $nome = $_POST['nome']; $cidade = $_POST['cidade']; $salario = $_POST['salario']; //mostra as informações na tela echo "<p align='center'>Meu nome é $nome</p>"; echo "<p align='center'>Minha cidade é $cidade</p>"; echo "<p align='center'>Meu salário é $salario</p>"; $cidade = strlen(($_POST['cidade'])); echo "<p align='center'>Minha cidade é $cidade</p>"; $cidade = strlen(chop(($_POST['cidade']))); echo "<p align='center'>Minha cidade é $cidade</p>"; $cidade = strlen(ltrim(($_POST['cidade']))); echo "<p align='center'>Minha cidade é $cidade</p>"; $cidade = strlen(trim(($_POST['cidade']))); echo "<p align='center'>Minha cidade é $cidade</p>"; ?> Exercício Utilizando Checkbox e a função isset() A função isset() - Retorna true se a variável estiver preenchida (ainda que com uma string vazia ou o valor zero), e false em caso contrário. X1.php <html> <body> <p align="center"><big><big> <strong>Selecionar carros</strong></big></big></p> <form method="POST" action="x2.php"> <div align="center"><center><p> carro1: <input type="checkbox" name ="carro[]" value=100> </p> </center> </div> <div align="center"><center><p> carro2: <input type="checkbox" name ="carro[]" value=200> </p> </center> </div> <div align="center"><center><p> <input type="submit" value="Prosseguir"name="prosseguir"> </p> </center> </div> </form> </body> </html> X2.php <html> <body> <?php $recebe = 0; // Verifica se usuário escolheu algum CARRO if(isset($_POST["carro"])) { foreach($_POST["carro"] as $carro) { $recebe = $recebe + $carro; } } echo $recebe; ?> </body> </html> Isset.php <?php $nome = "Ana"; if (isset($nome)) { echo "OK"; } ?> 2.10.4 Passando informações através de páginas Em um cadastramento de um usuário, alguns programadores resolvem dividir este cadastramento em etapas. Para isso utilizaremos um campo Hidden (escondido), serve para passar informações escondidas para a página que será acionada pelo formulário. Passo1.php <html> <body> <p align="center"><big><big> <strong>Cadastramento - Passo 1 de 3</strong></big></big></p> <form method="POST" action="passo2.php"> <div align="center"><center><p> Nome:<Input type="text" name="nome" size = "20"></p></center</div> <div align="center"><center><p> E-mail:<Input type="text" name="email" size = "20"></p></center</div> <div align="center"><center><p> Data Nascimento:<Input type="text" name="nascimento" size = "20"> </p> </Center> </div> <div align="center"><center><p> Sexo:<Input type="radio" value ="masculino" checked name="sexo"> Masculino <input type="radio" value="feminino" name="sexo">Feminino</p> </center> </div> <div align="center"><center><p> Profissão: <input type="text" name ="profissao" size="20"></p></center></div> <div align="center"><center><p> <input type="submit" value="Prosseguir" name="prosseguir"> </p> </center> </div> </form> </body> </html> Passo2.php Iremos utilizar o campo tipo hidden para passar informações do passo1.php e do passo2.php para o passo3.php <html> <body> <p align="center"><big><big> <strong>Cadastramento - Passo 2 de 3</strong></big></big></p> <form method="POST" action="passo3.php"> <?php echo $_POST['nome']; ?> <input type = "hidden" name="nome" value="<?php echo $_POST['nome']; ?>"> <input type = "hidden" name="email" value="<?php echo $_POST['email']; ?>"> <input type = "hidden" name="nascimento" value="<?php echo $_POST['nascimento']; ?>"> <input type = "hidden" name="sexo" value="<?php echo $_POST['sexo']; ?>"> <input type = "hidden" name="profissao" value="<?php echo $_POST['profissao']; ?>"> <div align="center"><center><p> Telefone:<Input type="text" name="telefone" size = "20"></p></center</div> <div align="center"><center><p> Endereço:<Input type="text" name="endereco" size = "20"></p></center</div> <div align="center"><center><p> Cidade:<Input type="text" name="cidade" size = "20"> Estado:<Input type="text" name="estado" size ="2"></p></center</div> <div align="center"><center><p> Cep:<Input type="text" name= "cep" size= "9"></p></center></div> <div align="center"><center><p> <input type="submit" value="Prosseguir" name="prosseguir"> </p> </center> </div> </form> </body> </html> Passo3.php <html> <body> <p align="center"><big><big> <strong>Cadastramento - Passo 3 de 3</strong></big></big></p> <form method="POST" action="cadastrar.php"> <input type = "hidden" name="nome" value="<?php echo $_POST['nome']; ?>"> <input type = "hidden" name="email" value="<?php echo $_POST['email']; ?>"> <input type = "hidden" name="nascimento" value="<?php echo $_POST['nascimento']; ?>"> <input type = "hidden" name="sexo" value="<?php echo $_POST['sexo']; ?>"> <input type = "hidden" name="profissao" value="<?php echo $_POST['profissao']; ?>"> <input type = "hidden" name="telefone" value="<?php echo $_POST['telefone']; ?> "> <input type = "hidden" name="endereco" value="<?php echo $_POST['endereco']; ?> "> <input type = "hidden" name="cidade" value="<?php echo $_POST['cidade']; ?> "> <input type = "hidden" name="estado" value="<?php echo $_POST['estado']; ?> "> <input type = "hidden" name="cep" value="<?php echo $_POST['cep']; ?> "> <div align="center"><center><p> Username:<Input type="text" name="username" size = "10"></p></center</div> <div align="center"><center><p> Senha:<Input type="text" name="senha1" size = "10"></p></center</div> <div align="center"><center><p> Confirma senha:<Input type="text" name="senha2" size = "10"></p> </center> </div> <div align="center"><center><p> <input type="submit" value="Finalizar Cadastro" name="fim"> </p> </center> </div> </form> </body> </html> Cadastrar.php <?php //captura as informações enviadas pelo formulário echo $_POST['nome']; echo "<br>"; echo $_POST['email']; echo "<br>"; echo $_POST['nascimento']; echo "<br>"; echo $_POST['sexo']; echo "<br>"; echo $_POST['profissao']; echo "<br>"; echo $_POST['telefone']; echo "<br>"; echo $_POST['endereco']; echo "<br>"; echo $_POST['cidade']; echo "<br>"; echo $_POST['estado']; echo "<br>"; echo $_POST['cep']; echo "<br>"; echo $_POST['username']; ?> 2.11 Variáveis de Ambiente Caso precise descobrir informações úteis, devemos utilizar as variáveis de ambiente. Ex: descobrir o IP do usuário – Utilizando a função getenv. <?php $ip = getenv("REMOTE_ADDR"); echo "Seu IP: " .$ip; ?> Ex: Utilização de algumas variáveis de ambiente (existem mais). <?php // Servidor de Software $informacao = getenv("SERVER_SOFTWARE"); echo $informacao; //Nome do servidor ou endereco IP $informacao = getenv("SERVER_NAME"); echo "<br>" .$informacao; //NUmero da porta $informacao = getenv("SERVER_PORT"); echo "<br>" .$informacao; //Método de envio $informacao = getenv("REQUEST_METHOD"); echo "<br>" .$informacao; //Nome e versão do browser utilizado pelo cliente $informacao = getenv("HTTP_USER_AGENT"); echo "<br>" .$informacao; ?> 3 MySQL – phpMyAdmin O Programa MySQL é um sistema de gerenciamento de banco de dados relacionais baseado em comandos SQL (Structured Query Language - Linguagem Estruturada para Pesquisas) que vem ganhando grande popularidade sendo atualmente um dos bancos de dados mais populares. Existem muitos SGBD's disponíveis no mercado, de forma gratuita ou através de pagamento de licenças. Entre eles, está o MySQL, um sistema desenvolvido pela Sun Microsystems que roda nativamente no PHP. A linguagem PHP suporta diversos SGBD's como Oracle, Sybase, Interbase(Firebird), mSQL, Microsoft SQL Server, MSSQL, MySQL, PostgreSQL, entre outros. Entretanto, o MySQL, como SGBD nativo do PHP, não exige instalação de nenhum recurso adicional (driver, extensão, etc), bastando apenas que o sistema esteja funcionando no servidor. O Servidor MySQL foi desenvolvido originalmente para lidar com bancos de dados muito grandes de maneira muito mais rápida que as soluções existentes e tem sido usado em ambientes de produção de alta demanda por diversos anos de maneira bem sucedida. Apesar de estar em constante desenvolvimento, o Servidor MySQL oferece hoje um rico e proveitoso conjunto de funções. A conectividade, velocidade, e segurança fazem com que o MySQL seja altamente adaptável para acessar bancos de dados na Internet. 3.1 Tipos de Tabelas Vamos conhecer os tipos de tabelas suportados pelo MySQL e suas características. No MySQL podemos definir vários tipos de tabelas, sendo que um banco de dados pode conter diferentes tipos de tabelas. Quando você cria uma nova tabela, você pode dizer ao MySQL que tipo de tabela criar. O tipo padrão é o MyISAM. Abaixo segue um descrição rápida dos tipos de tabelas suportados pelo MySQL: MyISAM: MyISAM é o tipo de tabela padrão no MySQL. Ela é baseada no código ISAM e possui várias extensões úteis. O índice é armazenado em um arquivo com extensão .MYI (MYIndex), e os dados são armazenados em um arquivo com a extensão .MYD (MYData). Você pode verificar/reparar tabelas MyISAM com o utilitário myisamchk. Merge: Uma tabela MERGE (também conhecida como tabela MRG_MyISAM) é uma coleção de tabelas MyISAM idênticas que podem ser usadas como uma. Você só pode fazer SELECT, DELETE, e UPDATE da coleção de tabelas.Se você fizer um DROP na tabela MERGE, você só está apagando a especificação de MERGE. HEAP: As tabelas HEAP do MySQL utilizam hashing 100% dinâmico sem áreas em excesso. Não há espaços extras necessários para listas livres. Tabelas HEAP também não têm problemas com deleção + inserção, o que normalmente é comum em tabelas com hash. InnoDB: O InnoDB prove o MySQL com um mecanismo de armazenamento seguro com transações (compatível com ACID) com commit, rollback, e recuperação em caso de falhas. InnoDB faz bloqueio a nível de registro e também fornece uma leitura sem bloqueio em SELECT em um estilo consistente com Oracle. Estes recursos aumentam a performance e a concorrência de multi-usuários. InnoDB é o primeiro gerenciador de armazenamento no MySQL que suportam restrições FOREIGN KEY. 3.2 Tipos de dados do MySQL Os tipos de dados que pode ter um campo, podem-se agrupar em três grandes grupos: 1. Tipos numéricos 2. Tipos de Data 3. Tipos de Cadeia 3.2.1 Tipos numéricos Existem tipos de dados numéricos, que se podem dividir em dois grandes grupos, os que estão em vírgula flutuante (com decimais) e os que não. TinyInt: é um número inteiro com ou sem sinal. Com sinal a margem de valores válidos é desde -128 até 127. Sem sinal, a margem de valores é de 0 até 255 SmallInt: número inteiro com ou sem sinal. Com sinal a margem de valores válidos é desde -32768 até 32767. Sem sinal, a margem de valores é de 0 até 65535. MediumInt: número inteiro com ou sem sinal. Com sinal a margem de valores válidos é desde -8.388.608 até 8.388.607. Sem sinal, a margem de valores é de 0 até 16777215. Int: número inteiro com ou sem sinal. Com sinal a margem de valores válidos é desde -2147483648 até 2147483647. Sem sinal, a margem de valores é de 0 até 429.496.295 BigInt: número inteiro com ou sem sinal. Com sinal a margem de valores válidos é desde -9.223.372.036.854.775.808 até 9.223.372.036.854.775.807. Sem sinal, a margem de valores é de 0 até 18.446.744.073.709.551.615. Float: número pequeno em vírgula flutuante de precisão simples. Os valores válidos vão desde -3.402823466E+38 até -1.175494351E-38,0 até desde 175494351E-38 até 3.402823466E+38. Double: número em vírgula flutuante de dupla precisão. Os valores permitidos vão desde -1.7976931348623157E+308 até -2.2250738585072014E-308, 0 e desde 2.2250738585072014E-308 até 1.7976931348623157E+308. Decimal: Número em vírgula flutuante desempacotado. O número armazena-se como uma cadeia. 3.2.2 Tipos de Data Na hora de armazenar datas, há que ter em conta que MySQL não verifica se uma data é válida ou não. Simplesmente comprova que o mês está compreendido entre 0 e 12 e que o dia está compreendido entre 0 e 31. Date: tipo data, armazena uma data. A margem de valores vai desde o 1 de Janeiro de 1001 ao 31 de dezembro de 9999. O formato de armazenamento é de ano-mes-dia. DateTime: Combinação de data e hora. A margem de valores vai desde o 1 de Janeiro de 1001 às 0 horas, 0 minutos e 0 segundos ao 31 de Dezembro de 9999 às 23 horas, 59 minutos e 59 segundos. O formato de armazenamento é de ano-mes-dia horas:minutos:segundos. TimeStamp: Combinação de data e hora. A margem vai desde o 1 de Janeiro de 1970 ao ano 2037. O formato de armazenamento depende do tamanho do campo: Time: armazena uma hora. A margem de horas vai desde -838 horas, 59 minutos e 59 segundos. O formato de armazenamento é 'HH:MM:SS'. Year: armazena um ano. A margem de valores permitidos vai desde o ano 1901 ao ano 2155. O campo pode ter tamanho dois ou tamanho 4 dependendo de se queremos armazenar o ano com dois ou quatro algarismos. 3.2.3 Tipos de Cadeia Char(n): armazena uma cadeia de longitude fixa. A cadeia poderá conter desde 0 até 255 caracteres. VarChar(n): armazena uma cadeia de longitude variável. A cadeia poderá conter desde 0 até 255 caracteres. Dentro dos tipos de cadeia pode-se distinguir dois subtipos, os tipo Test e os tipo Blob (Binary Large Object) A diferença entre um tipo e outro é o tratamento que recebem na hora de ordená-los e compará-los. No tipo test ordena-se sem ter importância as maiúsculas e as minúsculas e no tipo blob ordena-se tendo em conta as maiúsculas e minúsculas. TinyText e TinyBlob: Coluna com uma longitude máxima de 255 caracteres. Blob e Text: um texto com um máximo de 65535 caracteres. MediumBlob e MediumText: um texto com um máximo de 16.777.215 caracteres. LongBlob e LongText: um texto com um máximo de caracteres 4.294.967.295. Há que ter em conta que devido aos protocolos de comunicação os pacotes podem ter um máximo de 16 Mb. Enum: campo que pode ter um único valor de uma lista que se especifica. O tipo Enum aceita até 65535 valores diferentes. 3.3 Programando em MySQL Iremos desenvolver um projeto para controlar os lançamentos de livros e autores, o nosso banco de dados vai se chamar Biblioteca e as nossas tabelas são: Livros e Autores, lembrando que para cada livro cadastrado temos um autor. Vamos iniciar nossa tabela livros com os seguintes campos: BIBLIOTECA LIVROS *ID_ISBN TITULO Caracteres(100) PAGINAS INT(4) ID_AUTOR INT(4) 3.3.1 Criando um Banco de Dados Iremos trabalhar com PHPMYADMIN – ferramenta gráfica para auxiliar na administração de Banco de Dados. Depois que você instalou o EasyPHP, basta seguir os seguintes passos: Clicar com botão direito do mouse no ícone do EasyPHP. Clicar em Administração. Depois no navegador, clique em PHPMYADMIN. Também é possível acessar o PHPMYADMIN, digitando no navegador o seguinte endereço: http://127.0.0.1/home/mysql/. Através da interface do PHPMYADMIN, é possível executar vários comandos SQL. Vamos criar o Banco de Dados: BIBLIOTECA. Você pode criar seu Banco de Dados, através dos comandos SQL, basta clicar em SQL e digitar o seguinte comando: CREATE DATABASE BIBLIOTECA, depois clique em Executar. Você pode observar que todos os Bancos existentes estão listados do lado esquerdo da tela. É possível listar os bancos através dos comandos SQL. Exemplo: SHOW DATABASES. Para começar a criar as tabelas, iremos selecionar o Banco de Dados: BIBLIOTECA. Basta digitar o nome da tabela (próxima figura) o número de campos e depois clicar em Salvar e Executar. Desta forma foi criado uma chave primária para o campo ID_ISBN e um índice para o campo ID_AUTOR, que depois será transformado em chave estrangeira. SELECIONE: e depois clique em . Observe que foi criado o seguinte comando SQL: CREATE TABLE `BIBLIOTECA`.`LIVROS` (`ID_ISBN` VARCHAR(25) NOT NULL, `TITULO` VARCHAR(100) NOT NULL, `PAGINAS` INT(4) NOT NULL, `ID_AUTOR` INT(4) NOT NULL, PRIMARY KEY (`ID_ISBN`), INDEX (`ID_AUTOR`)) ENGINE = InnoDB; Neste momento você pode: Alterar, eliminar, criar chave e índice. Você poderá ainda adicionar mais campos na tabela. EXEMPLO: Vamos agora neste momento inserir alguns registros. Basta clicar em . Clique em executar, e observe o código SQL gerado: INSERT INTO `BIBLIOTECA`.`LIVROS` (`ID_ISBN`, `TITULO`, `PAGINAS`, `ID_AUTOR`) VALUES ('987-85-7522-219-5', 'Aplicacões web com PHP e Mysql', '336', '1'), ('978-85-7522-171-6', 'GIMP- Guia do Usuário', '368', '1'); Vamos inserir mais um registro: Se você clicar em , poderá ver os registros existentes na nossa tabela LIVROS. Também é possível obter o mesmo resultado com o seguinte comando SQL: SELECT * FROM `LIVROS`. Vamos agora criar a tabela: AUTORES. BIBLIOTECA AUTORES *ID_AUTOR NOME Caracteres(35) CIDADE Caracteres(35) ESTADO Caracteres(2) TELEFONE Caracteres(30) Neste momento estou colocando como chave primária o campo: ID_AUTOR, e também dizendo que este campo é auto incremento (A_I). Estou permitindo que o campo telefone pode ficar em branco (Nulo). SELECIONE: e depois clique em . Observe que foi criado o seguinte comando SQL: CREATETABLE `biblioteca`.`AUTORES` (`ID_AUTOR` INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY, `NOME` VARCHAR(35) NOT NULL, `CIDADE` VARCHAR(35) NOT NULL DEFAULT 'JI-PARANA', `ESTADO` VARCHAR(2) NOT NULL DEFAULT 'RO', `TELEFONE` VARCHAR(35) NULL) ENGINE = InnoDB; Iremos inserir alguns dados em nossa tabela: Observe que foi criado o seguinte comando SQL: INSERT INTO `biblioteca`.`AUTORES` ( `ID_AUTOR` , `NOME` , `CIDADE` , `ESTADO` , `TELEFONE` ) VALUES ( NULL , 'André MIlani', 'São Paulo', 'SP', NULL ), ( NULL , 'Pablo Dall’Oglio', 'JI-PARANA', 'RO', NULL ); Podemos observar que a numeração do campo ID_AUTOR, ficou em sequencia. Iremos agora aplicar uma função definida no momento da inserção de um dado. Observe que foi criado o seguinte comando SQL: INSERT INTO `biblioteca`.`AUTORES` (`ID_AUTOR`, `NOME`, `CIDADE`, `ESTADO`, `TELEFONE`) VALUES (NULL, UPPER('Flávio Gomes da Silva Lisboa'), 'JI-PARANA', 'RO', NULL); Para eliminar um campo da tabela, basta selecionar o campo e clicar em Eliminar. Vamos agora inserir um novo campo na tabela Livros. Inserindo um campo tipo TEXT. Inserindo um campo tipo BLOB (Binary Large Object) para imagens e sons. Clique em . Editando o campo para alteração . Inserindo um campo tipo ENUM e SET. O campo ENUM – 1 único valor. O campo SET – vários valores. Observe que foi criado o seguinte comando SQL: UPDATE `biblioteca`.`livros` SET `CATEGORIAS2` = 'WEB,PHP' WHERE `livros`.`ID_ISBN` = '987-85-7522-219-5' LIMIT 1; Inserindo um campo tipo DATA. Inserindo um campo tipo DATETIME. Buscando Informações Clique em . Preenche as informações necessárias e depois clique em Executar. Observe que foi criado o seguinte comando SQL: SELECT `ID_ISBN`, `TITULO`, `PAGINAS`, `CATEGORIAS` FROM `livros` WHERE `TITULO` LIKE '%PHP%' Buscando informações no Banco de Dados Selecione o e depois clique em . Visualizando as informações Basta clicar em visualização para impressão Criando um relacionamento entre tabelas Iremos agora relacionar as duas tabelas do nosso projeto. Selecione a tabela Tabela AUTORES (modo Estrutura), e clique em Ver relações. Depois selecione NOME na opção escolha o campo para exibir e depois clique no botão SALVAR. Selecione a tabela LIVROS (modo Estrutura), e depois clique em Ver relações. Modifique conforme a próxima figura e clique em salvar. Desta maneira, quando um autor é excluído, seus livros também serão excluídos. A nossa inserção ficará da seguinte maneira: Clicando em , é possível ver a relação. Operações em Banco de Dados Também é possível realizar algumas operações com nosso Banco de Dados, para isso basta clicar em . Duas opções importantes são: Renomear e Copiar. Privilégios Iremos agora configurar o PhpMyAdmin, para trabalhar com controle de senhas e privilégios de usuário de Banco de Dados. Através da usuário root, clique em . Agora clique em Adicionar novo usuário. Usuário (User): é o nome do usuário propiamente dito. Por exemplo: root, euder. Podem existir duplicatas desses nomes e nesse caso o que vai diferenciar pode ser o próximo campo. Quando este campo está como “Qualquer”, isso quer dizer o servidor de banco de dados pode ser acessado sem usuário. (comando: mysql -u ‘ ‘) Servidor (Host): de onde o usuário vem. Você pode restringir o usuário root, por exemplo, para ser acessado apenas da máquina local (localhost), enquanto o usuário euder pode ser acessado apenas de 192.168.0.1. O caracter % significa de qualquer lugar. Senha (Password): mais simples impossível: se o usuário tem uma senha configurada ou não. Privilégios Globais (Global Privileges): o que o usuário pode fazer em todo o servidor de banco de dados. Cada um desses privilégios é expresso na sintaxe SQL, que é inglês. Por exemplo: SELECT é consultar dados de um banco, UPDATE é atualizar os dados, DELETE é remover e por aí vai. Conceder/Grant (Grant): Se sim, o usuário pode conceder privilégios à outros usuários. Geralmente utilizado por “super-usuários”, ou seja, os roots de um banco de dados. Irei adicionar o usuário Masterkey com a senha 1, e não vou associar no momento Banco de Dados e nem permitir privilégios para ele. Agora clique em . Agora iremos configurar o PhpMyAdmin para pedir usuário e senha. Primeiramente, feche seu navegador e abre o arquivo texto: Neste momento iremos alterar a seguinte linha: $cfg['Servers'][$i]['auth_type'] = 'config'; Para $cfg['Servers'][$i]['auth_type'] = 'cookie'; O PhpMyAdmin exige usuário e senha. Digite o Masterkey para o campo usuário e 1 para a senha. Como não foi criado privilégios para o usuário, não é possível criar Banco de Dados. Para resolver esse problema, você deverá entrar com um super usuário tipo root, para permitir privilégios ou até associar algum Banco de Dados para este usuário (Masterkey). Clique em sair. Entre com um usuário com privilégios. Clique em , e localize o usuário Masterkey. Nesta opção você poderá associar algum Banco de Dados existentes para este usuário. Ex: Biblioteca. Marque a seguinte opção: Agora faça login com o usuário Masterkey e você vai perceber que ele somente poderá somente consultar informações. Você pode trocar os privilégios e verificar os resultados. Descrições dos Privilégios CREATE – Permite criar tabelas ou bancos de dados; DROP – Permite remover tabelas ou bancos de dados, juntamente com todo seu conteúdo; GRANT – Permite adicionar novos privilégios à outros usuários; ALTER – Permite alterar a estrutura de tabelas de um banco de dados; DELETE – Permite remover dados dentro de tabelas; INDEX – Permite criar índices de tabelas dentro de bancos de dados; INSERT – Permite inserir dados dentro de tabelas de um banco de dados; SELECT – Permite visualizar e fazer consulta aos dados de um banco de dados; UPDATE – Permite modificar os dados já existes (mudança de valores) dentro de tabelas de um banco de dados; LOCK TABLES (admin) – Permite “trancar” as tabelas, para que não haja mais atualizações nos dados. Utilizado principalmente para fazer backups dos dados (via mysqldump por exemplo); CREATE USER (admin) – Permite criar usuários; PROCESS (admin) – Permite mostrar as consultas e os dados de monitoramento do servidor de banco de dados; RELOAD (admin) – Permite recarregar as configurações do servidor de banco de dados; SHUTDOWN (admin) – Permite desligar o servidor de banco de dados; SUPER (admin) – Permite o usuário ser um super-usuário, que pode fazer tudo sem excessões. 4 PHP + MySQL Iremos utilizar comandos de SQL + conhecimentos de Banco de Dados. Iremos direcionar nossas informações para um destino determinado. 4.1 Conectando Com o Banco de Dados A função mysql_connect tenta uma conexão com um servidor MySQL. Deve-se passar como parâmetros: o nome do servidor (ou número IP) onde o MySQL está sendo executado, o nome de usuário e a senha deste usuário. O comando alternativo die trata um possível fracasso na conexão. A função mysql_selectdb seleciona qual base será selecionada dentro do banco de dados que foi conectado. O comando alternativo die trata um possível fracasso na seleção da base, podendo ser incluída uma mensagem customizada. A função mysql_query faz consultas à base previamente selecionada. Deve-se passar, como parâmetros, os comandos SQL apropriados. Novamente, o comando alternativo die pode tratar um não sucesso na consulta. <html> <head> <title>Página Conexao</title> </head> <body> <?php $local_serve = "localhost"; //local do servidor $usuario = "Masterkey"; //nome do usuario $senha = "1"; //senha $banco_dados = "biblioteca"; //nome do banco $conn = mysql_connect($local_serve,$usuario,$senha) or die ("O SERVIDOR NAO
Compartilhar