You are on page 1of 41

PHP

• PHP e a WWW • Funcionamento do PHP • PHP com Apache e MySQL • XAMPP

PHP e a WWW

 Páginas estáticas / Páginas dinâmicas

O PHP permite a criação de páginas dinâmicas.

Informação dinâmica
O que fazer quando a informação que está no website muda constantemente, como por exemplo as cotações da bolsa? Neste caso, os documentos estáticos em HTML não são a melhor solução. É necessário criar HTML dinâmico para que no momento em que o cliente contacta o servidor lhe seja enviada a informação actualizada.

PHP
 É uma linguagem de programação

vocacionada para o desenvolvimento de aplicações orientadas para a www.
Existem 2 tipos de linguagens web: - Baseadas no cliente (browser) (JavaScript, ActiveX, Java Applets, etc…) - Baseadas no servidor. (PHP, ASP, etc…)

 O servidor lê o código PHP e interpreta os comandos.PHP  O código PHP é embebido no código HTML dando origem a um script contendo instruções específicas. .

?> </body> </html> .Exemplo 1 <?php /*php_1. $Z=$X+$Y. echo “= $Z”.php */?> <html> <head> <title> Resultado </title> </head> <body> <?php $X=5. $Y=3. echo “Total ”.

Formulários HTML  Botões  Radio buttons  Seleccion lists  Input boxes  Checkbox  Etc… .

 action .Formulários HTML  method . Pode ser GET ou POST.Especifica o modo como a informação é transmitida. .Indica o nome e a localização do script PHP que irá processar a informação que foi introduzida no formulário.

Métodos de transmissão O protocolo HTTP (HiperText Transfer Protocol) utiliza vários métodos de manipulação e organização dos dados. a maior diferença entre eles é a maneira como essa informação é transmitida. Ambos os métodos transferem dados do browser para o servidor. . Actualmente. os dois métodos mais utilizados para submeter dados de formulários são o GET e o POST.

.GET O browser acrescenta ao URL. logo informações que exigem segurança não devem ser manipuladas por este método. Suporta apenas até 128 caracteres. Os dados não são encriptados. logo é útil para valores pequenos. um "?" e os valores codificados. especificado no atributo ACTION.

.POST Os dados introduzidos num formulário fazem parte do corpo da mensagem enviada para o servidor. É possível transferir uma grande quantidade de dados. Este é o método aconselhado. Pode encriptar os dados.

.É o local onde o utilizador fará os “inputs”.php .html . php_2.Contém os comandos PHP que irão processar os dados inseridos no formulário.Exemplo 2  Situação em que são usados dois ficheiros: form.

php"> <p> Nome <input type="text" name="nome" size=30> </p> <p> Idade <input type="text" name="idade" size=2> </p> <p> Qual o carro que mais gostas? <select name="marca"> <option> Ferrari </option> <option> Mercedes </option> <option> BMW </option> </select> </p> <p> <input type="submit" value="OK"> </p> </form> </body> </html> .Exemplo 2 <html> <head> <title> formulário PHP </title> </head> <body> <form enctype="multipart/form-data" method="POST" action="php_2.

$_POST['idade'].tenho " .php*/ ?> Nota: Atenção à junção de <html> texto com variáveis numa <head> instrução de escrita <title> Resultado </title> </head> <body> <?php echo "O meu nome é ". " anos e gosto de carros da marca " . " .Exemplo 2 <?php /*php_2.$_POST['nome'].$_POST['marca']. ?> </body> </html> .

: Apache)  Um servidor de bases de dados (ex.: PHP) .O que é preciso?  Um cliente (browser)  Um servidor Web (ex.: MySQL)  Uma ferramenta que permita ligar tudo isto (ex.

O servidor web envia os dados ao cliente. sendo enviados pelo PHP ao servidor web em formato HTML. o PHP trata de efectuar essa ligação. 2 . 3 . .1 PHP 3 2 Cliente Servidor web 4 BD 1 . verificando que existe um script PHP.Se no script existirem comandos que abrem uma ligação a uma base de dados.Os dados pretendidos são então extraidos da base de dados. Este. 4 .O cliente solicita a página ao servidor web. chama o módulo PHP para efectuar o processamento. sendo estes visualizados numa página HTML devidamente formatada.

performance.. estabilidade. .  É o mais seguro.  Não tem concorrentes quanto à riqueza de recursos. .Porque utilizar o Apache?  É o líder do mercado..

 Simplicidade de administração.  Foi optimizado para as aplicações típicas da Web.Porque utilizar o MySQL?  Baixa exigência de recursos de hardware.  É o mais veloz do mercado. onde ocorrem mais consultas do que actualizações. .

Porque usar PHP. e de maneira mais simples do que outras alternativas.  Principalmente porque são software livre! . Apache e MySQL?  Porque fornecem tudo o que necessitamos para construir aplicações e web sites sofisticados.

Xitami. DB2 . Interbase. Java. Java. Phyton. .. ... .. Python. ASP. ASP..  PHP com IIS.  PHP com PostgreSQL.Tenho que utilizar os três em conjunto?  Não. . Outras alternativas seriam:  Apache com Perl... esta é apenas uma combinação popular na Internet.  MySQL com Perl.. Oracle. PWS.

X.Software Xampp -O XAMPPé um servidor Web multiplataforma constituído por um servidor HTTP Apache. Apache. A-Apache M-MySQL P-PHP P-PERL wamp . Linux. SunSolaris e MacOs. Apache.Linux.Windows.Sistema operativo (atualmente suportado por windows. MySQL e PHP . MySQL e PHP lamp .

PHP • Tipos de dados • Variáveis e constantes • Operadores • Estruturas de controlo .

Strings.* / % += -= *= /= %= ++ -Operadores lógicos ! NOT && AND || OR Operadores relacionais == != < <= > >= === !== === (igualdade restrita) PHP Tipos de dados Booleanos Inteiros. tipos de dados e alguns caracteres especiais Operadores Aritméticos + . Object Números reais (floating point) \n \t \r Alguns caracteres especiais Muda de linha Tabulação horizontal Volta início da linha .Operadores. Array.

//inteiro $var= 1.234 //real $var= 1. //inteiro $var=-1234. . $var2= “O valor da variável é $var”.PHP Variáveis $var=1234.2e3 $var=5. Em PHP o tipo de dados das variáveis não é definido pelo programador.

// resulta em Carlos echo $arr[2][1][1].20. echo $arr[0].400. // resulta em 20 Array multidimensional: $arr=array(1. echo $arr[1]. //resulta em 1 echo $arr[2][0]. array(“Carlos”.2. // resulta em 9 .9) ) .500.62. “xa”).58).47.32. array(7.PHP Arrays 0 1 2 3 4 5 6 7 $arr= array(5.

. for (inicialização. condição. while (condição) <bloco de instruções>. ] } do <bloco de instruções> while (condição). … [default: <bloco>. incremento) <bloco de instruções>.PHP Estruturas de controlo if(condição) <bloco de instruções> [else <bloco de instruções>] switch (selector) { case valor1: <bloco> break. case valor2: <bloco> break.

echo '</tr>'. echo "<td> $i </td>". } ?> </table> i3 . echo "<td> $q </td>".PHP Exemplo <table border=”1”> <?php for($i=1. $q=$i*$i*$i. $i++) { echo '<tr>'. $i<6.

Pesquisar e Editar registos .PHP • SQL / MySQL • Ligação a base de dados • Selecção e visualização de registos • Adicionar. Eliminar.

º .Estabelecer a ligação 3.Acesso a bases de dados com PHP 1.º .º .Aplicar um comando SQL 4.Captar os dados 2.º .Preparar os dados obtidos .

$registo['CodCli']. echo '<td>' .Devolve n.Interroga uma base de dados ex.Principais funções com suporte ao MySQL improved mysqli_connect . ex. $i++) { $registo = mysqli_fetch_assoc($result).: $ligax = mysqli_connect('localhost'. mysqli_query .: mysqli_query($ligax.Guarda num array o resultado de uma consulta. $insere).: . $i <$nregistos. „password').$registo['Morada']. 'root'. mysqli_fetch_assoc . '</td>'.: $nregistos = mysqli_num_rows($result). mysqli_select_db .Selecciona uma base de dados ex. echo '<td>' . echo '<tr> <td>' .º de registos resultantes de uma consulta.: mysqli_select_db($ligax. } ex. '<td> </tr>'.$registo['Nome']. 'vendas').Estabelece uma ligação ao servidor ex. '</td>'. mysqli_num_rows . for ($i=0.

Exemplo Servidor BD vendas Browser PHP Clientes Encomendas Fornecedores Artigos .

$db = „dados'.$db). $pwd) or die ('Não conseguiu fazer a conexão ao servidor').php $host = 'localhost'. mysqli_select_db($ligax.php‟).?> . $user. $pwd = ''. $ligax=mysqli_connect($host. $user = 'root'. <?php include („ligacao.Ficheiro ligacao.

Listar dados de uma BD LISTAR .

echo "Nº de registos encontrados: $nregistos ".<html> <head> <title> Listar Clientes </title> </head> <body> <h2> Lista de clientes: </h2> <br> <?php $ligax = mysqli_connect('localhost'. ?> <br> <table border="1"> <tr><td> Codigo: <td> Nome: <td> Morada: </tr> <?php for ($i=0.'.$registo['CodCli'].} mysqli_select_db($ligax.htm">Voltar à entrada</a> </body> </html> . 'root'. } ?> </table> <br> <a href="index.$registo['Nome']. $nregistos = mysqli_num_rows($result).'</td>'. $i <$nregistos. echo '<td>'. $i++) { $registo = mysqli_fetch_assoc($result). $consulta = "Select * From Clientes". ''). $consulta). echo '<tr>'. 'vendas'). echo '<td>'.'</td>'. if (!$ligax) {echo '<p> Falha na ligação.'<td>'. echo '</tr>'. echo '<td>'. echo '</p>'. $result = mysqli_query($ligax.$registo['Morada'].

Pesquisar dados numa BD PESQUISAR Código php para pesquisar dados da tabela .

$registo['CodCli'].php"> Listar registos </a> </body></html> .". echo '<td>' . '<td> </tr>'.php*/ $nomeproc = $_POST['nome'].$registo['Morada']. $procura). echo '<td>' . ?> <table border="1"> <tr><td> Codigo: <td> Nome: <td> Morada: </tr> <?php for ($i=0. '</td>'. echo '<tr> <td>' .".''). if (!$nomeproc) {echo "Volte atrás e escreva o nome. </p>". exit. 'root'.$nomeproc.<html> <head> <title>Mostrar</title> </head> <body> <h3>Mostrar cliente procurado</h3> <?php /*pesquisa. 'vendas'). } mysqli_select_db($ligax.} echo "<p>Nome procurado: $nomeproc. '</td>'. $ligax = mysqli_connect('localhost'. $nregistos = mysqli_num_rows($result). $result = mysqli_query($ligax.$registo['Nome']. $i++) { $registo = mysqli_fetch_assoc($result). echo "Nº de registos encontrados: $nregistos". if (!$ligax){echo "<p> Falha na ligação. } ?> </table> <p> <a href="listar."% ‘ ". $i <$nregistos. $procura = "Select * from clientes where nome like ‘ %".

Adicionar dados a uma BD ADICIONAR .

echo 'Código: '.$morada.} mysqli_select_db($ligax.$nome. $morada = $_POST['morada']. 'root'. echo 'Nome: '. ‘ ".'<br />'. 'vendas').$morada. Morada ) VALUES (‘ ".<html> <head> <title> Inserir </title> </head> <body> <h2> Novo cliente </h2> <?php /*inserir.“ ‘ .'. ''). $ligax = mysqli_connect('localhost'.“ ‘ )".“ ‘ . Nome.php*/ $cod = $_POST['codcli']. echo 'Morada: '. $result = mysqli_query($ligax.$cod.'<br />'. $insere). $nome = $_POST['nome'].php">Listar clientes</a> </body> </html> .$cod. exit. if ($result==1) echo "<p>Dados inseridos<br>".'<br />'.$nome. $insere = “ INSERT INTO clientes ( CodCli. ‘ ". if (!$ligax) {echo '<p> Erro: Falha na ligação.htm">Voltar à entrada</a> <p> <a href="listar. echo 'Dados recebidos: <br />'. else "<p>Dados não inseridos<br>". ?> <p> <a href="index.

Eliminar dados numa BD ELIMINAR .

<p>". $consulta = "Select * From Clientes". $nr_depois = mysqli_num_rows($result). $nr_antes = mysqli_num_rows($result).php"> Listar registos </a> </body> </html> . 'root'. $result = mysqli_query($ligax. echo 'Nº de registos removidos: '.".$nr_depois. if (!$ligax){echo "<p> Falha na ligação. $consulta = "Select * From Clientes". $remove). $result = mysqli_query($ligax.''). if ($result==0) echo "<p>Não removido<br>". $remove = "delete from clientes where codcli =‘ ". if (!$codrem) {echo 'Volte atrás e escreva o código do cliente a remover.$codrem." ' ".'. ?> <p> <a href="listar.<html> <head> <title> Remover </title> </head> <body> <h2> Remover cliente </h2> <?php $codrem = $_POST['codcli']. exit. 'vendas'). $nr_removidos = $nr_antes . $ligax = mysqli_connect('localhost'. $consulta). } echo "Cliente a remover: $codrem.$nr_removidos. $result = mysqli_query($ligax. } mysqli_select_db($ligax. $consulta).

$cod_postal)) { $flag=true.$ano_nasc)) { $flag=true.Exemplos de validações em PHP  if ($pass!=$conf_pass || $pass=="") { $flag=true. } .$telefone)) { $flag=true. }  if (!preg_match ("/^[0-9]{4}[\-][0-9]{3}$/".$flag_telefone=true.12}$/". $flag_pass=true. }  if (!preg_match ("/^[0-9]{4}$/".$flag_ano_nasc=true.$flag_cod_postal=true. }  if (!preg_match ("/^[0-9]{9.