Aulas n.º 165-166, 17 de Dezembro de 2009
Sumário:
Avaliação dos conhecimentos adquiridos.
Tempo de aula: 90′.
Avaliação sumativa parcial
Execute os seguintes exercícios para avaliação sumativa do submódulo:
1) Criar uma Base de Dados no Servidor local (criar utilizador e atribuir utilizador à base de dados)
2) Dentro dessa base de dados criar a tabela alunos
3) Na tabela criar os campos (atenção aos tipos e atributos):
id (int) (auto_increment)
nome (varchar)
sobrenome (varchar)
idade (int)
email (varchar)
4) Introduzir no mínimo 5 registos nesta tabela.
Por hoje é tudo. Continuamos a explorar a construção de bases de dados na próxima aula, a acontecer só em Janeiro de 2010.
Boas férias, boas festas e excelente início de ano 2010.
Aula n.º 164-165, 15 de Dezembro de 2009
Sumário:
- PHPMyAdmin:
- Construção e gestão de uma base de dados: criação de tabelas, criação de registos, eliminação de registos e tabelas.
- MySQL – base de dados, tabelas e tipos.
Tempo de Aula: 45′.
1. PHPMyAdmin
Através desta aplicação é possível criar e eliminar bases de dados, criar, alterar e eliminar tabelas e campos, fazer exportações, executar queries SQL, adicionar e remover utilizadores, etc, etc…
2. MySQL
O MySQL é um sistema de gerenciamento de banco de dados (SGBD), que utiliza a linguagem SQL (Linguagem de Consulta Estruturada, do inglês Structured Query Language) como interface. É atualmente um dos bancos de dados mais populares, com mais de 10 milhões de instalações pelo mundo.
Tipos
Cada um destes tipos representa um grupo dentro dos tipos MySQL por isso a sua escolha, podemos dizer que pertencem a uma família. A lógica dos tipos em MySQL é igual à referida em relação ao PHP. Os tipos permitem guardar informação com base nas suas características.
Embora haja muitos outros, os tipos de dados mais importantes são descritos na tabela abaixo:
INT
Como o resto da família (ex. bigint, tinyint, etc) aceita números inteiros. Pode aceitar números negativos e positivos (signed) ou só positivos (unsigned). Se for signed o intervalo de números que aceita situa-se entre –2,147,483,648 e 2,147,483,647. Se for unsigned o intervalo é de 0 a 4,294,967,295.
Para números mais pequenos: tinyint, para números maiores bigint.
FLOAT
Permite guardar números vírgula flutuante. Algo como um preço, uma distância, números do dia-a-dia que não têm o compromisso de serem inteiros devem ser guardados em campos que permitem números vírgula flutuante.
VARCHAR
Permite armazenar strings. São ideais para grande parte dos campos que vamos utilizar, como por exemplo, nome, email, sobrenome, etc
DATETIME
Guarda uma combinação entre data e hora. O formato standard em que guarda esta informação é a seguinte aaaa-mm-dd hh:mm:ss. Pode-se enviar esta informação como números ou strings. Assim sendo, 20090510163000 e 20095-05-130 162:306:00 são ambos aceitáveis.
Atributos dos Tipos
Os atributos são características que atribuímos a certos campos de forma a controlar ainda mais a informação que os campos vão conter. Vamos abordar apenas 3 atributos, existem bastantes mais. Estes atributos podem estar disponíveis para um tipo e não para outro.
AUTO_INCREMENT
Este atributo é essencial ao bom funcionamento das nossas aplicações ao retirar dos nossos ombros uma lógica essencial. Sempre que uma nova linha é inserida, o MySQL atribui a um campo com auto_increment um número inteiro único. O número atribuido é igual ao número da linha anterior + 1. Ou seja, é um valor auto_incrementado.
Existem algumas regras para a utilização deste atributo. Por tabela apenas pode existir uma coluna com auto_increment e essa tem que ser designada com outro atributo, que falaremos a seguir, o de chave primária (primary key).
DEFAULT
Este atributo permite definir um valor por defeito para um campo. Se durante a inserção de uma linha não for especificado o valor do campo, o MySQL atribui ao campo o valor por defeito.
PRIMARY KEY
Uma chave primária garante que os valores existentes numa coluna não podem ser repetidos.
Isto atributo é fundamental pois, desta forma, cada registo ou linha pode ser chamado de forma independente. Imaginem que se trata de um número de bi, mais ninguém tem o mesmo número e associado a esse número estão dados como nome, data nascimento, filiação, etc… Quando queremos saber o nome, bastar indicar o número de bi. Como é único, é infalível.
NOTA: Atributos definidos como varchar podem ocupar menos espaço físico no servidor, visto que seu tamanho pode variar de acordo com o valor informado.
Ex: um campo varchar de 30 caracteres pode ter o tamanho máximo de 30 caracteres, mas se for informado um valor menor, o campo se adaptará ao valor indicado, desde que não exceda o valor máximo indicado. Ao contrário, atributos do tipo char tem o tamanho fixo. O uso do atributo varchar torna a tabela mais lenta em suas operações.
Campos definidos como not null obrigatoriamente devem receber um valor. Em geral, é definido um valor padrão através do parâmetro ‘default’, que define um valor padrão para o campo.
Chave primária e chave estrangeira
As chaves primárias (primary key) são utilizadas para identificar um registro dentro de uma tabela. Ex: A matrícula de cada aluno pode ser utilizada para identificá-lo dentro da classe. Colunas definidas como primary key devem obrigatoriamente ser do tipo not null e não podem ter seu valor repetido, afinal, trata-se de um identificador único para cada elemento cadastrado. Preferencialmente utilizam-se campos numéricos para chaves primárias (ex: id, matrícula) ou outro atributo que respeite os argumentos citados.
As chaves estrangeiras são usadas quando queremos relacionar tabelas entre si.
Ex: Cada aluno matriculado será colocado em uma determinada turma. Podemos ter uma tabela chamada turma, com informações das turmas existentes e uma chave primária para identificar cada turma, assim como na tabela aluno. Então, só precisamos criar uma terceira tabela (ex: matriculado), contendo apenas a chave primária que identifica o aluno e a turma em que será matriculado. Para a tabela matriculado, esses atributos são chaves estrangeiras, pois não são identificadores da própria tabela, e sim identificadores pertencentes à outras tabelas (daí o nome de chaves estrangeiras). Essa técnica faz com que as pesquisas tornem-se mais eficientes, agiliza o funcionamento do banco de dados, organiza melhor as informações e possibilita melhor gestão das informações registadas. Veremos o uso de chaves estrangeiras mais adiante.
Passemos então à construção da nossa base de dados com auxílio do PHPMyAdmin, seguindo as indicações dos vídeos distribuídos nas aulas, para consolidação de conhecimentos.
Veja, portanto, os 6 vídeos, para recordar passo a passo o funcionamento do PHPMyAdmin .
Por hoje é tudo, continuamos na próxima aula.

Aulas n.º 162-163, de 26 de Novembro de 2009 (tarde)
Sumário:
- Modelos utilizados na gestão de bases de dados:
- Relacional
- Hierárquico (abordagem sumária)
- Rede (abordagem sumária)
- Bases de dados relacionais:
- Conceito de tabela (linhas representando registos e colunas representando campos).
Tempo de Aula: 90´.
1. Modelos de Bases de Dados
1.1 Modelo conceptual
É um modelo lógico de basa de dados que traduz uma abstracção da realidade. Mais tarde é convertido num dos modelos de implementação de bases de dados
1.2 Modelos de implementação
Os modelos de implementação permitem descrever a forma como os dados estão representados num sistema de gestão de bases de dados.
1.2.1. Modelo Hierárquico
Uma base de dados hierárquica é um tipo de sistema de gestão de base de dados que liga registos numa estrutura de dados em árvore através de ligações de tal modo que cada tipo de registo tenha apenas um possuidor. A base de dados baseia-se num Modelo de Entidades e Relacionamentos: cada registo é uma colecção de atributos (campos), cada um dos quais contendo somente uma informação; uma ligação é a associação entre dois registos. Por exemplo: em uma dada base de dados comercial, uma encomenda (i.e. registo) é possuída por um único cliente.
1.2.2. Modelo de rede
A sua organização é semelhante à das BDs com modelo hierárquico, com diferença de que cada registo filho pode ser ligado a mais de um registo pai, criando conexões bastante complexas e são bastante utilizados em sistemas para computadores de grande porte. Sendo que esse modelo é composto de uma estrutura mais completa, possui as propriedades básicas de registos, conjuntos e ocorrências, e utiliza a linguagem de definição de BD (DDL) e a linguagem de manipulação de dados (DML), além de permitir evolução mais eficiente do modelo. A estrutura é formada de entidade (registos), atributos (itens de dados), tipo de registo e ocorrência do registo. Tanto o modelo hierárquico quanto o de rede são chamados de sistemas de navegação, pois as aplicações devem ser construídas para atravessar um conjunto de registos interligados previamente.
1.2.1. Modelo relacional
que veremos mais pormenorizadamente em seguida.
2. Modelo relacional
É o modelo de bases de dados mais utilizado para desenvolvimento de BD.
É constituído por relações entre os dados que se julga introduzir na(s) tabela(s). Uma relação é uma estrutura bidimensional representada por uma tabela organizada por linhas e colunas, respectivamente tuplos e atributos. Cada linha corresponderá a um registo, cada coluna corresponderá ao domínio da tabela e terá sempre o mesmo tipo de dados.
O princípio básico do modelo relacional é o princípio da informação: toda informação é representada por valores em relações (relvars). Assim, as relvars não são relacionadas umas às outras no momento do projecto. Entretanto, os projectistas utilizam o mesmo domínio em vários relvars, e se um atributo é dependente de outro, esta dependência é garantida através da integridade referencial.
Sobre Conceitos básicos ver:
Base_de_Dados_conceitos_basicos
Sobre Modelo relacional ver:
Aulas n.º 160-161, 26 de Novembro de 2009 (manhã)
Sumário:
Módulo V - Desenvolvimento de Bases de Dados
- Conversa com os formandos sobre:
- O que são bases de dados;
- Necessidade de bases de dados
- Aplicação de bases de dados
- Sistemas de Gestão de bases de dados e exemplos
- Linguagens de programação para consulta de bases de dados
1. Apresentação do módulo V
Este módulo tem como objectivo fornecer os elementos conceptuais e instrumentais adequados ao conhecimento e desenvolvimento de bases de dados, apresentando os seus fundamentos teóricos e a diversidade de formas de utilização, bem como as suas potencialidades ao nível da recolha e manipulação de informação.
2. Objectivos de aprendizagem
Perceber a necessidade das bases de dados.
Adquirir vocabulário relativo às bases de dados.
Planificar e estruturar bases de dados relacionais simples.
Representar graficamente as relações existentes na base de dados.
Planificar bases de dados simples.
3. Conteúdos
Necessidade das bases de dados.
Sistemas de gestão de bases de dados.
Os modelos como métodos de concepção de sistemas.
Modelos utilizados na gestão de bases de dados:
- Relacional.
- Hierárquico (abordagem de forma sumária).
- Rede (abordagem de forma sumária)
Bases de dados relacionais:
- Conceito de tabela (linhas representando registos e colunas representando campos).
- Conceito de índice. Chaves de indexação simples e compostas.
- Chaves candidatas. Chaves primárias. Chaves externas.
- Relações entre tabelas: De um para um, de um para muitos, de muitos para muitos.
O modelo ER (entidade-relação) para representação gráfica de bases de dados:
- Entidades.
- Atributos.
- Relações.
- Integridade e consistência de bases de dados.
O papel da normalização no desenho de bases de dados:
- Vantagens e desvantagens da normalização.
- 1ª, 2ª e 3ª formas de normalização.
- “Desnormalizar” para atingir melhor performance.
Aula n.º 159, de 24 de Novembro de 2009
Sumário:
- Elementos básicos de Linguagem PHP:
- Funções internas.
Tempo de aula: 45′.
Funções Internas (Built-in-functions)
Podemos construir as nossas funções, foi isso que estivemos a explicar e explorar até agoranas aulas anteriores.
Se organizarmos o nosso código em funções podemos evitar a escrita desnecessária do mesmo código vezes sem conta.
Uma normal instalação do PHP vem com imensas funções que interessa explorar, para não termos que reinventar a roda. Não precisando de escrever a função apenas temos que saber chamá-la, e a forma de o fazer já explicamos.
nome_funcao($var, $var, …)
Para este workshop convém explorar as seguintes listas de funções:
http://www.php.net/manual/pt_BR/ref.strings.php
http://www.php.net/manual/pt_BR/ref.var.php
http://www.php.net/manual/pt_BR/ref.array.php
O primeiro link lista funções que manipular strings.
O segunda link lista funções que manipulam todo o tipo de variáveis, não só strings. O terceiro link lista funções que manipulam arrays.
Todos links remetem para o manual do PHP. No manual explica-se o que faz a função, quantos argumentos pode receber, e que argumentos são esses e muitas vezes são dados exemplos de como utilizar a função.
Lembram-se da função sort()
http://www.php.net/manual/pt_BR/function.sort.php
Nota final, podem encontram funções nas listas que não funcionam no vosso servidor, isto porque existem funções que só estão disponíveis quando instalamos módulos de PHP.
Geralmente na página da função refere-se isso. O erro que é gerado quando uma função não foi definida – neste caso que falamos, não está disponível porque não foi instalado o módulo correspondente – é “undefined function”.
Vejamos agora o vídeo 4, sobre funções internas.
E por hoje é tudo. Até à próxima aula.
Referências a consultar:
- http://www.php.net
- Arroyo, A. e al. (2002). Programação para Web utilizando PHP. Brasil. Unicamp.
- Powers, D. (2007). The essencial guide to dreamweaver cs3, css, ajax e php. USA. Friendesofed.
- Materiais fornecidos em aula
Aulas n.º 157-158, de 24 de Novembro de 2009
Sumário:
- Elementos básicos de Linguagem PHP:
- Funções e argumentos
- Exercícios de consolidação de conhecimentos
Tempo de aula: 90′.
ARGUMENTOS
As funções podem receber argumentos. No exemplo em baixo temos uma variável com uma mensagem fora da função e antes de esta ser chamada. Para enviar esta variável para dentro da função teremos de a incluir dentro dos parênteses. O nome da variável usado dentro da função tem de corresponder ao nome usado no parâmetro recebido, mas este não tem de ser idêntico ao nome da variável enviada, reparem que na função é $mensagem mas fora é $msg.
?php
function aminhafuncao($mensagem){
echo $mensagem;
}
$msg = “esta é a minha função”;
aminhafuncao($msg);
//chama a função aminhafuncao enviado o argumento
?>
Podemos enviar múltiplos argumentos para uma função, os argumentos são separados por vírgulas. O número de argumentos que a função recebe tem de corresponder ao número que é enviado:
<?php
function aminhafuncao($var1, $var2, $var3) {
//chama a função aminhafuncao e recebe 3 parâmetros
echo $var1;
echo $var2;
echo $var3;
}
$v1 = 1;
$v2 = 5;
$v3 = 7;
aminhafuncao($v1, $v2, $v3);
// chama a função aminhafuncao e envia 3 parâmtetros
?>
Por fim, a função poderá retornar valores, para isso utilizamos a estrutura de controlo return.
E podemos atribuir esses valores a variáveis. Utilizando return dentro de uma função faz com que o php sai da função, qualquer instrução dentro da função a seguir ao return não será avaliada.
<?php
function aminhafuncao($var1, $var2){
$res = $var1 + $var2;
return $res; // retorna o resultado
}
$v1 = 1;
$v2 = 5;
//chama a função aminhafuncao e envia 2 parâmtetros
$resultado = aminhafuncao($v1, $v2);
echo $resultado;
//a var $resultado recebe o que é retornado no final da função
?>
Vejamos agora o vídeo 3, sobre Funções e argumentos e realizemos os exercícios propostos para consolidação de conecimentos.
Por agora é tudo.
Até à próxima aula.
Referências a consultar:
- http://www.php.net
- Arroyo, A. e al. (2002). Programação para Web utilizando PHP. Brasil. Unicamp.
- Powers, D. (2007). The essencial guide to dreamweaver cs3, css, ajax e php. USA. Friendesofed.
- Materiais fornecidos em aula
Aulas n.º 155-156, de 18 de Novembro de 2009
Sumário:
- Elementos básicos de Linguagem PHP:
- Escopo de variáveis
- Funções
Tempo de aula: 90′.
Funções
O php passa pela função e nada faz. Só actua quando decidimos chamar a função.
Para criar uma função terá que se criar um nome precedido pela palavra chave function. O nome da função nunca pode começar com um número. Depois do nome da função teremos que utlizar () e dentro de {} colocamos as instruções que queremos que sejam executadas caso e quando a função for chamada.
echo “esta é a minha função”;
}
aminhafuncao();
?>
Referências a consultar:
- http://www.php.net
- Arroyo, A. e al. (2002). Programação para Web utilizando PHP. Brasil. Unicamp.
- Powers, D. (2007). The essencial guide to dreamweaver cs3, css, ajax e php. USA. Friendesofed.
- Materiais fornecidos em aula
Aulas n.º 153-154, de 5 de Novembro de 2009
Sumário:
- Elementos básicos de Linguagem PHP:
- Avaliação sumativa – adivinha o número
Avaliação sumativa parcial
1) Advinha o Número. Este é um clássico.
Criam um formulário onde pedem ao utilizador para introduzir um número (tentar adivinhar). Se o utilizador acertar, dá mensagem de sucesso.
Se falhar, tem que dizer que o número que introduziu é maior ou menor ao $num.
Ao falhar tem que aparecer um link a dizer tentar outra vez que remete para o formulário.
Já possuem conhecimentos para fazer isto, se não vos sair automaticamente pensem um pouco antes de desistir.
Faça ainda o segundo exercício com a função Get String.
Não se esqueça que a construção de formulários exige conhecimentos de HTML. É inevitável que tenham de rever os conteúdos do módulo 1 de Sistemas de Informação leccionado no ano transato para realizar o exercício.
Referências a consultar:
- http://www.php.net
- Arroyo, A. e al. (2002). Programação para Web utilizando PHP. Brasil. Unicamp.
- Powers, D. (2007). The essencial guide to dreamweaver cs3, css, ajax e php. USA. Friendesofed.
- Materiais fornecidos em aula
Aula n.º 152, de 3 de Novembro de 2009
Sumário:
- Elementos básicos de Linguagem PHP:
- $_Get
- Get String
Exercícios de consolidação de conhecimentos.
Tempo de aula: 45′.
$_GET e Get String
UTILIZAÇÕES
Embora o método GET não seja o ideal para formulários, por norma, não quer dizer que ele não possa ser utilizado. Na realidade ele continua a ser utilizado em alguns formulários, por exemplo formulários de busca. Se visitarem o Google e abrirem o código HTML vão ver que a tag form não tem método, logo por defeito, GET.
URL com GET.
Em cima dissemos que os argumentos com o método GET são passados através do URL, e dissemos que isto é uma desvantagem. E é, na medida em que ao passar os argumentos desta forma eles tornam-se visíveis:
O exemplo 5 é o único a utilizar o método GET. Preencham o formulário e submetam-no. O endereço do browser altera-se.
No meu caso:
http://127.0.0.1/formularios/m6/exemplo5.php?nome=Paula+Mestre&email=”aqui não o publico, evidentemente!”
Desconstruindo:
primeiro a localização e o ficheiro que estamos a utilizar
http://127.0.0.1/formularios/m6/exemplo5.php
depois, um ? Que indica que a partir daqui temos uma GET string
e depois pares de variáveis e valores
nome = Paula Mestre
email = “********@*****.com”
Entre pares o símbolo & que separa cada par de variável e valor.
Como podem ver a informação está visível a todos. Isto tem um lado positivo, como está visível podemos criar um bookmark a partir dela e voltar à página sempre que quisermos. É por isso que é útil para pesquisas.
Esta particularidade é interessante para construção de sites dinâmicos. É por isso que CMS como o Joomla! têm este tipo de URLS com GET Strings. Podemos de certa forma automatizar uma “pesquisa” pela parte do site que queremos visitar. O script avalia o URL e direcciona-nos para a secção, artigo, etc que desejamos.
PROCESSAR UM FORMULÁRIO COM $_GET
Para que não restem dúvidas, podem utilizar GET como método. Só precisam de ter atenção em introduzir method=”get” no HTML e quando forem processar os dados a supervaríavel é $_GET. Por exemplo campo nome no HTML e método GET e depois no PHP:
<?php echo $_GET['nome']; ?>
O exemplo 5 utiliza o método GET.
Realizemos os exercícios propostos no vídeo 4.
Referências a consultar:
- http://www.php.net
- Arroyo, A. e al. (2002). Programação para Web utilizando PHP. Brasil. Unicamp.
- Powers, D. (2007). The essencial guide to dreamweaver cs3, css, ajax e php. USA. Friendesofed.
- Materiais fornecidos em aula
Aulas n.º 148-151, 29 de Outubro
Sumário:
- Elementos básicos de Linguagem PHP:
- Formulários (continuação):
- Simples
- Complexos
- Formulários em PHP
- Processamentos de campos Multivalor
Exercícios de consolidação de conhecimentos.
- Formulários (continuação):
Tempo de aula: 180′.
Vamos explorar as ferramentas disponibilizadas pelo PHP Editor para construir formulários e analisarmos o código produzido.
Vejamos ainda os vídeos de 1 a 4 para preparação dos exercícios a realizar na aula.
Referências a consultar:
- http://www.php.net
- Arroyo, A. e al. (2002). Programação para Web utilizando PHP. Brasil. Unicamp.
- Powers, D. (2007). The essencial guide to dreamweaver cs3, css, ajax e php. USA. Friendesofed.
- Materiais fornecidos em aula
-
Arquivos
- Dezembro 2009 (2)
- Novembro 2009 (7)
- Outubro 2009 (9)
- Setembro 2009 (12)
-
Categorias
-
RSS
RSS das Entradas
RSS dos Comentários
