apontamentos psi m18

16
CPTGPSI-Programação e Sistemas de Informação – 3ºano – M18 1 Agrupamento de Escolas da Batalha 160301 O PHP e as Bases de Dados Neste módulo, iremos ver como poderemos utilizar as funcionalidades das bases de dados em conjunto com o desenvolvimento das aplicações de Web. A linguagem PHP permite conferir às aplicações de Web a ligação necessária e obrigatória dos sistemas mais modernos a bases de dados, dando-lhe o dinamismo necessário para uma maior interatividade. Interatividade das Aplicações de Web Um dos aspetos mais interessantes que permitem um maior dinamismo com as páginas de Web é obtido com o recurso à interacção com bases de dados. Assim, é possível manipular os dados aí armazenados e criar páginas instantaneamente consoante os pedidos dos utilizadores, obtendo-se uma maior interatividade. Iremos debruçarmo-nos sobre a forma como o PHP consegue manipular dados externos armazenados em bases de dados com o recurso a comandos básicos SQL (Structured Query Language). É necessário ainda possuir conhecimentos mínimos de HTML, além do básico sobre bases de dados e principalmente linguagem SQL. Para que se consiga entender melhor as caraterísticas do PHP relativamente às potencialidades de interação com bases de dados, iremos criar uma base de dados simples em MySQL, e desenvolveremos uma pequena aplicação constituída por um variado grupo de scripts capazes de efetuarem um conjunto de operações básicas, tais como selecionar, inserir, eliminar e alterar registos de uma base de dados. Indicar-se-á também o procedimento a tomar para usar bases de dados em Microsoft Access e indicar-se-á, exemplificando, as potencialidades de uma ferramenta capaz, de, juntamente com o PHP, usar um conjunto de instruções que atuam de modo idêntico nos vários tipos de bases de dados suportados. Iremos acrescentar a estes scripts um conjunto de funcionalidades (navegação entre páginas contendo registos; envio de emails e realização de uploads; redirecionamento de páginas; autenticação de utilizadores; limitação de endereços) capazes de permitirem a criação de uma aplicação suficientemente elucidativa das capacidades desta linguagem e a sua integração com base de dados. Fases do Processo de consulta a uma base de dados via Web e com PHP Figura 1 - Representação esquemática do funcionamento de uma consulta a uma base de dados via Web com scripts PHP

Upload: tomascarol2

Post on 08-Jul-2015

563 views

Category:

Education


3 download

TRANSCRIPT

Page 1: Apontamentos psi m18

CPTGPSI-Programação e Sistemas de Informação – 3ºano – M18 1

Agrupamento de

Escolas da Batalha 160301

O PHP e as Bases de Dados

Neste módulo, iremos ver como poderemos utilizar as funcionalidades das bases de dados em conjunto com o

desenvolvimento das aplicações de Web. A linguagem PHP permite conferir às aplicações de Web a ligação

necessária e obrigatória dos sistemas mais modernos a bases de dados, dando-lhe o dinamismo necessário para

uma maior interatividade.

Interatividade das Aplicações de Web

Um dos aspetos mais interessantes que permitem um maior dinamismo com as páginas de Web é obtido com o

recurso à interacção com bases de dados. Assim, é possível manipular os dados aí armazenados e criar páginas

instantaneamente consoante os pedidos dos utilizadores, obtendo-se uma maior interatividade.

Iremos debruçarmo-nos sobre a forma como o PHP consegue manipular dados externos armazenados em bases

de dados com o recurso a comandos básicos SQL (Structured Query Language). É necessário ainda possuir

conhecimentos mínimos de HTML, além do básico sobre bases de dados e principalmente linguagem SQL.

Para que se consiga entender melhor as caraterísticas do PHP relativamente às potencialidades de interação

com bases de dados, iremos criar uma base de dados simples em MySQL, e desenvolveremos uma pequena

aplicação constituída por um variado grupo de scripts capazes de efetuarem um conjunto de operações básicas,

tais como selecionar, inserir, eliminar e alterar registos de uma base de dados. Indicar-se-á também o

procedimento a tomar para usar bases de dados em Microsoft Access e indicar-se-á, exemplificando, as

potencialidades de uma ferramenta capaz, de, juntamente com o PHP, usar um conjunto de instruções que

atuam de modo idêntico nos vários tipos de bases de dados suportados.

Iremos acrescentar a estes scripts um conjunto de funcionalidades (navegação entre páginas contendo registos;

envio de emails e realização de uploads; redirecionamento de páginas; autenticação de utilizadores; limitação

de endereços) capazes de permitirem a criação de uma aplicação suficientemente elucidativa das capacidades

desta linguagem e a sua integração com base de dados.

Fases do Processo de consulta a uma base de dados via Web e com PHP

Figura 1 - Representação esquemática do funcionamento de uma consulta a uma base de dados via Web com scripts PHP

Page 2: Apontamentos psi m18

CPTGPSI-Programação e Sistemas de Informação – 3ºano – M18 2

Agrupamento de

Escolas da Batalha 160301

Este processo passa pelas seguintes fases principais:

1 – O Web Browser ou cliente Web (por exemplo o Internet Explorer) envia um pedido, através de um

formulário, para acesso a uma base de dados que está dentro ou ligada ao servidor Web.

2 – O Servidor Web recebe a comunicação dos dados do formulário (pelo método Get ou Post) e detecta a

indicação de um script PHP (no atributo “action” do formulário) e chama esse script para que ele receba e

processe os dados.

3 – O Interpretador de PHP faz a interpretação do script mencionado e detecta um pedido de ligação a um

sistema de bases de dados, tenta efectivar essa ligação e, se o conseguir, envia-lhe um comando SQL a executar

na base de dados em causa.

4 – O Servidor de Base de Dados (por exemplo, MySQL) recebe o comando SQL, executa-o na base de dados

visada e, se houver resultados a devolver, esses resultados são enviados ao interpretador de scripts PHP.

5 – O Interpretador de Scripts PHP recebe os resultados enviados pelo servidor da base de dados e prepara

esses resultados para os poder entregar ao servidor Web em formato compatível com o HTML.

6 – O Servidor Web recebe os dados do interpretador de PHP, inere-os num documento HTML ou página Web e

envia essa informação ao cliente (Web browser) que a solicitou.

Acabámos de ver com detalhe todos os passos de uma consulta (ou outro tipo de acção) em relação a uma

base de dados com scripts PHP.

Vejamos agora os passos ou etapas que um programador deste tipo de serviços Web deve ter em conta ao

escrever um script PHP:

1 – Captar os dados enviados com o formulário do utilizador e verificar se esses dados satisfazem os requisitos

necessários.

2 – Estabelecer uma ligação ou conexão ao sistema de base de dados que estiver a ser utilizado.

3 – Elaborar e aplicar um determinado comando SQL com que se pretendem obter determinados resultados

em relação à base de dados visada.

4 – Preparar os dados obtidos do servidor da base de dados para os passar ao servidor Web num formato

compatível com HTML e uma boa apresentação para o cliente que os vai receber.

Page 3: Apontamentos psi m18

CPTGPSI-Programação e Sistemas de Informação – 3ºano – M18 3

Agrupamento de

Escolas da Batalha 160301

Introdução ao MySQL

Iremos efetuar uma abordagem à forma como selecionar, adicionar, eliminar e alterar dados em MySQL.

Criamos então uma base de dados simples de modo a mostrar aspetos básicos do uso do MySQL, utilizando

como interface de ligação a linguagem SQL.

Pressupõe-se que possui o MySQL corretamente instalado, permitindo ao servidor de MySQL estabelecer

ligações a possíveis clientes.

Figura 2 - Prompt MySQL numa janela DOS em ambiente Windows

A partir do momento em que se obtenha ligação ao servidor MySQL poderemos usar um conjunto bastante

grande de instruções para obter informações acerca das bases de dados e respetivas tabelas. Assim, e de entre

outras poderemos usar as seguintes instruções para:

1 -Visualizar as bases de dados já existentes no servidor MySQL: Show databases;

2 – Seleccionar uma base de dados do servidor MySQL: Use nome_base_dados;

3 – Saber qual a base de dados actualmente seleccionada (em uso): Select database();

4 – Saber quais as tabelas que constituem a base de dados em uso: Show tables;

5 – Saber a estrutura de uma das tabelas da base de dados: Describe nome_tabela;

A base de dados a criar terá o nome “vendas” e será constituída por uma única tabela de nome

“clientes” com apenas 3 colunas(atributos/campos): cod_cli (código do cliente); nome e morada.

Criação da base de dados “vendas”: Create database vendas;

Adição de tabelas na base de dados “vendas”:

Use vendas; Create table clientes (cod_cli int not null auto_increment primary key, nome varchar(40), morada varchar (12));

Primary key – chave primária

Auto_increment – o campo é automaticamente incrementado de uma unidade sempre que se adiciona um registo.

Not Null – o campo não poderá ficar vazio.

Por fim, insira alguns registos na base de dados “vendas” criada.

Page 4: Apontamentos psi m18

CPTGPSI-Programação e Sistemas de Informação – 3ºano – M18 4

Agrupamento de

Escolas da Batalha 160301

LIGAÇÃO A BASES DE DADOS EM PHP

1 - Principais funções com suporte ao MySQL

Para conseguir efetuar as ligações a base de dados e posteriormente, se consigam manusear os dados aí

armazenados, o PHP fornece um conjunto suficientemente vasto de funções para o MySQL, que de seguida

iremos descrever, dando alguns exemplos onde se verifica a sua utilização:

mysql_connect – estabelece uma ligação ao servidor MySQL;

mysql_pconnect – estabelece uma ligação persistente ao servidor MySQL ;

A ligação ao MySQL não termina após a execução do script nem com o mysql_close(), permanecendo ativa

para o uso futuro.

mysql_close – a ligação ao servidor é cortada após a execução do script sendo por isso necessária uma

certa razoabilidade na sua utilização(ligação);

mysql_create_db – cria uma base de dados (base de dados, ligação);

mysql_drop_db – Elimina uma base de dados( base de dados, ligação);

mysql_select_db – Selecciona para uso uma base de dados (base de dados, ligação);

mysql_db_query – selecciona e interroga uma base de dados(base de dados, pergunta_sql, ligação);

mysql_query – interroga uma base de dados (pergunta_sql, ligação);

mysql_fetch_row – selecciona uma linha (registo) do resultado da interrogação previamente efectuada à

base de dados. O registo é armazenado sob a forma de uma matriz(array), correspondendo cada campo ao

número do índice do array. A sua utilização obedece aos seguintes parâmetros:

mysql_fetch_row($resultado). A execução subsequente de um novo mysql_fetch_row() faz avançar para o

registo seguinte seleccionando-o;

mysql_fetch_array ($resultado, $tipo_de_resultado)

mysql_result – armazena o conteúdo de um campo a partir de uma interrogação previamente efectuada à

base de dados;

mysql_result ( $resultado,$numero_linha, $campo) – por questões de performance, é sempre preferível

usar as funções anteriores.

2 – Exemplo de Aplicação das Funções PHP de ligação a base de dados MySQL

Seguidamente, vamos exemplificar usando algumas destas funções sobre a base de dados “vendas” criada

previamente em MySQL. Note que o utilizador e a respetiva password varia consoante o servidor, devendo por

isso adaptar-se à sua situação em concreto.

Esquema Global da aplicação criada para aceder a uma base de dados a partir de formulários HTML e scripts PHP

Page 5: Apontamentos psi m18

CPTGPSI-Programação e Sistemas de Informação – 3ºano – M18 5

Agrupamento de

Escolas da Batalha 160301

2.1. Criação de um formulário de entrada de dados na base de dados e um script em PHP para tratar os dados

enviados

2.1.1. Entra_clientes.html:

<html>

<head> <title>Entrar</title> </head>

<body> <h2> Entrar e inserir dados </h2>

<form action="insere_clientes.php" method="post">

<table border="1">

<tr> <td> Código do cliente: </td>

<td> <input type="text" name="cod_cli"> </td>

</tr>

<tr> <td> Nome do cliente: </td>

<td> <input type="text" name="nome"> </td>

</tr>

<tr> <td> Morada do cliente: </td>

<td> <input type="text" name="morada"> </td>

</tr>

<tr> <td colspan="2" align="center">

<input type="submit" value="Registar"> </td></tr>

</table>

</form>

<a href="lista_clientes.php">Listar registos </a><p>

<a href="procura_clientes.html">Procurar registos</a>

</body>

</html>

Page 6: Apontamentos psi m18

CPTGPSI-Programação e Sistemas de Informação – 3ºano – M18 6

Agrupamento de

Escolas da Batalha 160301

2.1.2. Insere_clientes.php:

<html>

<head> <title> Inserir </title> </head>

<body> <h2> Inserir Registos </h2>

<?php

$cod_cli = $_POST['cod_cli'];

$nome = $_POST['nome'];

$morada = $_POST['morada'];

if (!$cod_cli || !$nome || !$morada) {

echo 'Campos em falta.

Volte atrás e tente de novo.'; exit;}

echo 'Dados recebidos: <br />';

echo 'Código: '.$cod_cli.'<br />';

echo 'Nome: '.$nome.'<br />';

echo 'Morada: '.$morada.'<br />';

$ligax = mysqli_connect('localhost', 'root','');

if (!$ligax)

{echo '<p> Erro: Falha na ligação.'; exit;}

mysqli_select_db($ligax, 'vendas');

$insere = "insert into Clientes values

('".$cod_cli."','".$nome."', '".$morada."')";

$result = mysqli_query($ligax, $insere);

if ($result==1) echo "<p>Dados inseridos<br>";

else "<p>Dados não inseridos<br>";

?>

<p> <a href="entra_clientes.html">Voltar à entrada</a>

<p> <a href="lista_clientes.php">Listar registos</a>

</body>

</html>

Page 7: Apontamentos psi m18

CPTGPSI-Programação e Sistemas de Informação – 3ºano – M18 7

Agrupamento de

Escolas da Batalha 160301

Explicação das instruções que compõem o script anterior:

Este script começa com as instruções típicas para captar os dados recebidos do formulário com o método POST:

$cod_cli = $_POST['cod_cli'];

$nome = $_POST['nome'];

$morada = $_POST['morada'];

A primeira instrução capta para a variável $cod_cli, o conteúdo do campo [‘cod_cli’] do array associativo

$_POST. Este campo diz respeito à primeira caixa de Input do form. As outras 2 instruções fazem o

mesmo para com os outros dois campos do formulário (nome e morada).

if (!$cod_cli || !$nome || !$morada) – esta condição avalia se alguma das variáveis contém um valor

nulo ou string vazia – por exemplo: (!cod_cli); se isso acontecer, então é apresentada a mensagem:

Campos em falta. Volte atrás e tente de novo. Além disso, o script termina com a instrução”exit”. Se a

condição não se verificar, então, o script continua. E começa por apresentar os dados recebidos do

formulário, com instruções como o seguinte: echo 'Código: '.$cod_cli.'<br />';

Esta foi a primeira fase das 4 fases deste tipo de scripts – captar e verificar os dados.

Segue-se a 2ª fase que consiste em estabelecer a ligação ao sistema da base de dados – neste caso, ao

MySQL. E, neste caso, isso é feito com a seguinte instrução:

$ligax = mysqli_connect('localhost', 'root',' ');

A ligação é efetuada através de uma função predefinida do PHP: mysqli_connect(). Em qualquer dessas funções

temos de indicar os seguintes 3 parâmetros:

Localhost – nome do servidor;

Root – nome do utilizador;

‘ ‘ – palavra passe vazia

Se a ligação for bem sucedida, a variável $ligax recebe o recurso que controla a ligação; se, por

algum motivo, a ligação falhar, a variável $ligax fica com o valor nulo. No script anterior, temos

a seguinte instrução:

if (!$ligax)

{echo '<p> Erro: Falha na ligação.'; exit;}

Se variável $ligax tiver valor nulo então, é apresentada uma mensagem de erro e o script

termina com “exit”.

Se a ligação for bem sucedida, o script continua. Para completar a ligação à base de dados

temos de indicar o seu nome.

Page 8: Apontamentos psi m18

CPTGPSI-Programação e Sistemas de Informação – 3ºano – M18 8

Agrupamento de

Escolas da Batalha 160301

Com a seguinte instrução: mysqli_select_db($ligax, 'vendas'); A função mysqli_select_db() permite

seleccionar a base de dados e pede os dois seguintes parâmetros:

$ligax – a variável do recurso da ligação;

Vendas – o nome da base de dados.

Se a ligação à base de dados for bem sucedida, passamos à 3ª fase do script – a acção sobre a base

de dados. Neste caso, a acção consiste num comando SQL para inserir os dados na tabela.

$insere = "insert into Clientes values (' ".$cod_cli." ',' ".$nome." ', ' ".$morada." ')";

É habitual usar-se uma variável para escrever o comando SQL. Neste caso, a variável $insere recebe a

string com o comando: “insert into clientes values …”

Os valores a inserir são indicados com os nomes das variáveis que contêm os dados: $cod_cli, $nome e

$morada. Os nomes estão escritos dentro das aspas que iniciam a string do comando “insert”. Cada

dado a inserir na tabela tem de ser incluído dentro de aspas. Neste caso, as strings a inserir são

fornecidas através de variáveis.

Um comando SQL é enviado à base de dados através de uma função PHP:

$result = mysqli_query($ligax, $insere);

A função mysqli_query() usa neste caso os seguintes argumentos:

$ligax – a variável do recurso da ligação;

$insere – variável que contém o comando.

O resultado do comando SQL é devolvido á variável $result.

Page 9: Apontamentos psi m18

CPTGPSI-Programação e Sistemas de Informação – 3ºano – M18 9

Agrupamento de

Escolas da Batalha 160301

2.2. Para visualizar os resultados aramazenados na tabela “clientes”, foi criado o script

Lista_clientes.PHP:

<html>

<head> <title>Listar</title> </head>

<body> <h3> Listar Registos </h3>

<a href="entrar.htm">Voltar à entrada</a> <p>

<?php

$ligax = mysqli_connect('localhost', 'root', '');

if (!$ligax){echo '<p> Falha na ligação.'; exit;}

mysqli_select_db($ligax, 'vendas');

$consulta = "Select * From clientes";

$result = mysqli_query($ligax, $consulta);

$nregistos = mysqli_num_rows($result);

echo 'Nº de registos encontrados: '.$nregistos;

?>

<table border="1">

<tr><td> Código cliente: <td> Nome: <td> Morada: </tr>

<?php

for ($i=0; $i <$nregistos; $i++) {

$registo = mysqli_fetch_assoc($result);

echo '<tr>';

echo '<td>'.$registo['cod_cli'].'</td>';

echo '<td>'.$registo['Nome'].'</td>';

echo '<td>'.$registo['Morada'].'<td>';

echo '</tr>'; echo '</p>';

}

?>

</table>

</body>

</html>

Page 10: Apontamentos psi m18

CPTGPSI-Programação e Sistemas de Informação – 3ºano – M18 10

Agrupamento de

Escolas da Batalha 160301

Explicação das instruções que compõem o script anterior:

$ligax = mysqli_connect('localhost', 'root', ''); - Ligação ao servidor MySQL;

mysqli_select_db($ligax, 'vendas'); - indica o nome da base de dados a ligar;

$consulta = "Select * From clientes"; - comando SQL que mostra todos os dados da tabela;

$result = mysqli_query($ligax, $consulta); - envia o comando (query) à base de dados através

da função mysqli_query(). Neste caso, é a variável consulta que contém o comando SQL para

efectuar a consulta e seleccionar todos os dados da tabela.

$nregistos = mysqli_num_rows($result); - a variável $result recebe o resultado da consulta

efectuada e usa a função mysqli_num_rows() para contar o nº total de registos encontrados na

consulta. Este número é atribuído à variável $nregistos.

$registo = mysqli_fetch_assoc($result); - esta instrução que está dentro do ciclo For usa a

função mysqli_fetch_assoc() com a variável $result para captar, através da variável $registo,

cada um dos registos contidos no resultado da consulta; as outras instruções do ciclo escrevem

os valores dos campos da tabela clientes; por exemplo: echo '<td>'.$registo['Nome'].'</td>';

Page 11: Apontamentos psi m18

CPTGPSI-Programação e Sistemas de Informação – 3ºano – M18 11

Agrupamento de

Escolas da Batalha 160301

2.3. Criação de um formulário e um script para efectuar uma pesquisa na base de dados

2.3.1. procura_clientes.html:

Explicação das instruções que compõem o script anterior:

Foi concebido para o utilizador escrever um nome a procurar na tabela clientes. O formulário contém

apenas um input do tipo “text” para a introdução de um nome e um botão do tipo “submit” para

enviar os dados.

<form action="mostra_clientes.php" method="post"> - indica o nome do script que irá tratar os dados.

<p> <a href="entra_clientes.html">Voltar à entrada</a> - volta ao formulário inicial.

<p> <a href="lista_clientes.php">Listar registos</a> - passa ao script lista_clientes.php.

<html>

<head> <title>Procurar</title> </head>

<body> <h3>Escreva o nome a procurar</h3>

<form action="mostra_clientes.php" method="post">

<table border="1">

<tr> <td> Nome a procurar: </td>

<td> <input type="text" name="nome"></tr>

<tr> <td colspan="2" align="center">

<input type="submit"

value="Procurar registos"> </td></tr>

</table>

</form>

<p> <a href="entra_clientes.html">Voltar à entrada</a>

<p> <a href="lista_clientes.php">Listar registos</a>

</body>

</html>

Page 12: Apontamentos psi m18

CPTGPSI-Programação e Sistemas de Informação – 3ºano – M18 12

Agrupamento de

Escolas da Batalha 160301

2.3.2. Mostra_clientes.php:

<html> <head> <title>Mostrar</title> </head>

<body> <h3>Mostrar nome procurado</h3>

<?php

$nomeproc = $_POST['nome'];

if (!$nomeproc)

{echo 'Volte atrás e escreva o nome.'; exit;}

echo '<p>Nome procurado: '.$nomeproc. '<p>';

$ligax = mysqli_connect('localhost', 'root','');

if (!$ligax){echo '<p> Falha na ligação.'; exit; }

mysqli_select_db($ligax, 'vendas');

$procura = "Select * From Clientes

where nome like '%".$nomeproc."%'";

$result = mysqli_query($ligax, $procura);

$nregistos = mysqli_num_rows($result);

echo 'Nº de registos encontrados: '.$nregistos;

?>

<table border="1">

<tr><td> Código: <td> Nome: <td> Morada: </tr>

<?php

for ($i=0; $i <$nregistos; $i++) {

$registo = mysqli_fetch_assoc($result);

echo '<tr> <td>'.$registo['cod_cli'].'</td>';

echo '<td>'.$registo['Nome'].'</td>';

echo '<td>'.$registo['Morada'].'<td></tr>'; }

?> </table>

<p> <a href="lista_clientes.php"> Listar registos </a>

<form action="remove_clientes.php" method="post">

<p>Para apagar um registo, escreva aqui o nome</p>

<input type="text" name="nome">

<input type="submit" value="Apagar registo"></form></body></html>

Page 13: Apontamentos psi m18

CPTGPSI-Programação e Sistemas de Informação – 3ºano – M18 13

Agrupamento de

Escolas da Batalha 160301

Explicação das instruções que compõem o script anterior:

Neste script temos todas as 4 fases relativas a este tipo de scripts para interação com as bases de dados.

1ª FASE – captar e validar a base de dados:

$nomeproc = $_POST['nome']; - a variável $nomeproc(nome procurado) recebe o dado proveniente do

formulário procura_clientes.php( campo nome).

if (!$ligax){echo '<p> Falha na ligação.'; exit; } – avalia se a variável $nomeproc tem um valor nulo ou

string vazia e, se for esse o caso, é enviada uma mensagem a informar desse facto e o script termina

com a instrução exit.

2ª FASE – Ligar ao MySQL e base de dados:

Esta fase começa com a seguinte instrução: $ligax = mysqli_connect('localhost', 'root','');

Se a ligação não for bem sucedida, o script continua e indicamos a base de dados que pretendemos usar com a seguinte instrução: mysqli_select_db($ligax, 'vendas');

3ª FASE – Interagir com a base de dados:

Esta fase começa com a seguinte instrução: $procura = "Select * From Clientes where nome like '%".$nomeproc."%'";

Nesta instrução criamos a variável $procura para receber o comando SQL. Neste caso, trata-se de uma consulta (SQL) com uma condição: where nome like… Usamos aqui Like e não igual a para permitir encontrar nomes parecidos com outras palavras antes e/ou depois.

Em seguida, esta consulta é enviada à base de dados com a seguinte instrução:

$result = mysqli_query($ligax, $procura);

A variável $result recebe o resultado desta consulta ou procura.

A instrução que se segue:

$nregistos = mysqli_num_rows($result); - capta para a variável $nregistos, número de registos encontrados na consulta.

Page 14: Apontamentos psi m18

CPTGPSI-Programação e Sistemas de Informação – 3ºano – M18 14

Agrupamento de

Escolas da Batalha 160301

4ª FASE – Preparar os dados a apresentar:

Neste caso, estamos a admitir a hipótese de serem encontrados vários registos com o nome indicado para a procura. Usa-se um ciclo for para escrever os registos encontrados:

for ($i=0; $i <$nregistos; $i++) {

$registo = mysqli_fetch_assoc($result);

echo '<tr> <td>'.$registo['cod_cli'].'</td>';

echo '<td>'.$registo['Nome'].'</td>';

echo '<td>'.$registo['Morada'].'<td></tr>'; }

Na parte final deste script, temos um pequeno formulário embebido no código php. Destina-se a permitir que um utilizador insira um nome para remover da base de dados e começa com a seguinte instrução:

<form action="remove_clientes.php" method="post"> - indica que os dados enviados serão recebidos e tratados pelo script remove_clientes.php

Page 15: Apontamentos psi m18

CPTGPSI-Programação e Sistemas de Informação – 3ºano – M18 15

Agrupamento de

Escolas da Batalha 160301

2.4. Criação de um script para remover um registo numa tabela da base de dados

2.4.1. remove_clientes.php:

<html>

<head> <title> Remover </title> </head>

<body> <h2> Remover registo </h2>

<?php

$nomrem = $_POST['nome'];

if (!$nomrem)

{echo 'Volte atrás e escreva o nome.'; exit;}

echo 'Nome a remover: '.$nomrem. '<p>';

$ligax = mysqli_connect('localhost', 'root','');

if (!$ligax){echo '<p>Falha na ligação.'; exit; }

mysqli_select_db($ligax, 'vendas');

$consulta = "Select * From Clientes";

$result = mysqli_query($ligax, $consulta);

$nr_antes = mysqli_num_rows($result);

$remove = "delete from clientes

where nome = '".$nomrem."'";

$result = mysqli_query($ligax, $remove);

if ($result==0) echo "<p>Não removido<br>";

$consulta = "Select * From Clientes";

$result = mysqli_query($ligax, $consulta);

$nr_depois = mysqli_num_rows($result);

$nr_removidos = $nr_antes - $nr_depois;

echo 'Nº de registos removidos: '.$nr_removidos;

?>

<p> <a href="lista_clientes.php"> Listar registos </a>

</body> </html>

Page 16: Apontamentos psi m18

CPTGPSI-Programação e Sistemas de Informação – 3ºano – M18 16

Agrupamento de

Escolas da Batalha 160301

Explicação das instruções que compõem o script anterior:

Este script destina-se a remover registos na tabela clientes e também contém as 4 fases.

1ª FASE – Captar e validar os dados:

Esta fase começa com a instrução:

$nomrem = $_POST['nome']; - a variável $nomerem (nome a remover) recebe o valor do campo

[‘nome’] proveniente do formulário do script anterior (procura_clientes.php).

Segue-se uma instrução com if ($nomerem) que avalia se a variável $nomerem contém um valor nulo,

caso em que o script terminará.

2ªFASE – Ligar ao MySQL e à base de dados:

Esta fase começa com a instrução:

$ligax = mysqli_connect('localhost', 'root',' ');

Se a ligação falhou o script termina. Se a ligação foi bem sucedida, o script continua, indicando-se a base de dados a usar:

mysqli_select_db($ligax, 'vendas');

3ªFASE – Interagir com a base de dados:

$consulta = "Select * From Clientes";

$remove = "delete from clientes where nome = ' ".$nomrem." ' ";

4ªFASE – Preparar os dados a apresentar:

Não tem dados a apresentar mas escreve o número de registos removidos.