SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
PHP + MySQL: Introdução
Carlos Santos
LabMM 4 - NTC - DeCA - UA
Aula 16, 30-04-2013
objetivos do módulo
Criar sítios Web dinâmicos com informação armazenada em bases de
dados
• parte 1: visualização e navegação de informação armazenada em BD
• visualizar dados de uma tabela
• visualizar dados de várias tabelas ligadas entre si
• visualizar detalhes de informação específica
• parte 2: gestão da informação em BD
• inserir novos dados
• atualizar dados
• apagar dados
• parte 3: outras tecnologias interessantes para projetos finais
• Encriptação, SVN, MVC, Ajax, APIs, JSON,...
novidade do ano letivo anterior...
... sem rede de segurança :)
etapas
1. estabelecer ligação com o MySQL
2. escolher a BD
3. extrair dados da BD através de uma query -> recordset
4. preparar dados para trabalhar no PHP -> fetch
5. mostrar dados
6. fechar ligação ao MySQL
1. estabelecer ligação ao MySQL
mysql_connect()
• abre uma ligação não persistente ao servidor
• existe apenas no âmbito da página/script que a usa
• deve ser terminada pela função mysql_close()
mysql_pconnect()
• abre uma ligação persistente ao servidor
depois de aberta, esta será mantida para todas as páginas
gestão destas ligações persistentes é feita através da configuração de
parâmetros no próprio servidor MySQL
• wait_timeout
• max_connect_errors
1. estabelecer ligação ao MySQL
$connection = mysql_connect(hostname, username, password);
Boas práticas
• criar uma pasta “connections”
• criar um ficheiro “connection.php” com:
<?php
$hostname = “localhost";
$username = “nome_utilizador";
$password = “password_utilizador";
$connection = mysql_connect($hostname, $username, $password);
?>
• incluir o ficheiro em todas as páginas que precisem de interagir com a BD
require_once('connections/connection.php');
1. estabelecer ligação ao MySQL
E se a ligação der erro?
$connection = mysql_connect(hostname, username, password)
or trigger_error(mysql_error(), E_USER_ERROR);
• trigger_error() - dispara uma configuração de erro cujo comportamento
pode ser controlado com set_error_handler()
• mysql_error() - texto do último erro gerado pela última função do MySQL
• E_USER_ERROR - “User-generated error message”
$connection = mysql_connect(hostname, username, password)
|| die(‘Erro na ligação à base de dados’);
• este método só deve ser utilizado para debug em desenvolvimento porque
não permite um controlo dos erros enviados para o utilizador!
2. escolher a BD
mysql_select_db(dbname);
Incluir em “connection.php”
<?php
$hostname = “localhost";
$username = “nome_utilizador";
$password = “password_utilizador";
$dbname = “nome_basededados”;
$connection = mysql_connect($hostname, $username, $password)
or trigger_error(mysql_error(), E_USER_ERROR);
mysql_select_db($dbname);
?>
3. extrair dados da BD a partir de uma query
$query = "SELECT colunas FROM tabela";
$rsName = mysql_query($query , $connection);
• $query só pode conter uma query e sem “;” no final. Não há suporte para
múltiplos queries numa única chamada!
• $rsName é uma variável do tipo “resource” que contem todos os valores
resultantes da execução do query na respectiva base de dados
• retorna FALSE se existiu um erro na execução do query
Para saber o número total de registos do resultado
• $totalrows_rsName = mysql_num_rows($rsName);
Para libertar espaço de memória ocupado (pouco utilizado)
• mysql_free_result($rsName);
Um recordset é uma estrutura de dados sem índices
• o acesso é realizado ao elemento apontado pelo ponteiro
• os métodos de fetch fazem avançar o ponteiro para a próxima “linha”
3. recordset
4. preparar dados para trabalhar no PHP -> fetch
Para utilizar a informação do recordset é necessário preparar (ir buscar)
os dados através de um processo designado por fetch
O fetch dos resultados é realizado linha a linha!
Vários métodos disponíveis dependendo do modo como se prefere tratar
os dados nos passos seguintes:
• mysql_fetch_assoc(recorset) - “Fetch a result row as an associative
array”
• mysql_fetch_row(recordset) - “Get a result row as an enumerated array”
• mysql_fetch_array(recordset) - “Fetch a result row as an associative
array, a numeric array, or both”
4. preparar dados para trabalhar no PHP -> fetch
$row_rsName = mysql_fetch_assoc($rsName);
echo $row_rsName[“chave1"];
echo $row_rsName[“chaveN"];
• $row_rsName é um array associativo
• o acesso aos valores é realizado através das chaves do array
• as chaves são iguais aos nomes dos campos retornados pela query
• retorna FALSE se já não existirem dados para fetch
Para listar todos os resultados
while ($row_rsName = mysql_fetch_assoc($rsName)){
echo $row_rsName[“campo1"];
echo $row_rsName[“campoN"];
}
4. preparar dados para trabalhar no PHP -> fetch
$row_rsName = mysql_fetch_row($rsName);
echo $row_rsName[0];
echo $row_rsName[N];
• $row_rsName é um array enumerado
• o acesso aos valores é realizado através dos índices
• retorna FALSE se já não existirem dados para fetch
Para listar todos os resultados
while ($row_rsName = mysql_fetch_row($rsName)){
echo $row_rsName[0];
echo $row_rsName[N];
}
5. mostrar dados
Já foi exemplificados nos slides do ponto 4 :)
É necessário aplicar os conhecimentos adquiridos no módulo anterior.
Trata-se de utilizar o PHP para tratar os dados dos arrays e mostrar a
informação na página.
6. fechar ligação ao MySQL
mysql_close($connection);
Boas práticas
• o PHP fecha a ligação automaticamente quando o script é terminado
• no entanto, é considerada uma boa prática incluir o método para fechar a
ligação
• a não utilização deste método é crítica quando existem scripts muito
pesados, com longos tempos de processamento, que deixam as ligações
“penduradas” durante muito tempo
• um servidor de MySQL tem recursos limitados e não aguenta um número
infinito de ligações em simultâneo!
No final...
// Ficheiro “connections/connection.php”
<?php
// Define variáveis
$hostname = “localhost";
$username = “nome_utilizador";
$password = “password_utilizador";
$dbname = “nome_basededados”;
// Estabelece ligação ao MySQL
$connection = mysql_connect($hostname, $username,
$password) or trigger_error(mysql_error(), E_USER_ERROR);
// Estabelece ligação à BD
mysql_select_db($dbname);
mysql_set_charset(‘utf8’, $connection);
?>
No final...
<?php
// Ligação à BD
require_once('connections/connection.php');
// Extrair dados da BD
$query = "SELECT colunas FROM tabela";
$rsName = mysql_query($query , $connection);
// Mostrar dados
while ($row_rsName = mysql_fetch_assoc($rsName)){
echo $row_rsName[“campo1"];
echo $row_rsName[“campoN"];
}
// Fechar ligação à BD
mysql_close($connection);
?>

Mais conteúdo relacionado

Mais procurados

Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCLuiz Ricardo Silva
 
Aula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIAula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIinfo_cimol
 
PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPGuilherme Blanco
 
Introdução ao Respect\Validation (1.0)
Introdução ao Respect\Validation (1.0)Introdução ao Respect\Validation (1.0)
Introdução ao Respect\Validation (1.0)Henrique Moody
 
Acesso a banco de dados com JDBC
Acesso a banco de dados com JDBCAcesso a banco de dados com JDBC
Acesso a banco de dados com JDBCEduardo Mendes
 
Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCAntonio Passos
 
Banco de dadados MySQL com PHP
Banco de dadados MySQL com PHPBanco de dadados MySQL com PHP
Banco de dadados MySQL com PHPLeonardo Soares
 
PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisPHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisFabrízio Mello
 
PHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsPHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsGuilherme Blanco
 
Aula 02 PHP+MySQL - LabMM4
Aula 02 PHP+MySQL - LabMM4 Aula 02 PHP+MySQL - LabMM4
Aula 02 PHP+MySQL - LabMM4 Carlos Santos
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesOtávio Calaça Xavier
 
Jdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYJdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYraquelcarsi
 

Mais procurados (20)

Minicurso mongo db
Minicurso mongo dbMinicurso mongo db
Minicurso mongo db
 
Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBC
 
Aula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIAula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites II
 
PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHP
 
Introdução ao Respect\Validation (1.0)
Introdução ao Respect\Validation (1.0)Introdução ao Respect\Validation (1.0)
Introdução ao Respect\Validation (1.0)
 
Acesso a banco de dados com JDBC
Acesso a banco de dados com JDBCAcesso a banco de dados com JDBC
Acesso a banco de dados com JDBC
 
Aula 8 php
Aula 8 phpAula 8 php
Aula 8 php
 
Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBC
 
Pdo do PHP Palestra
Pdo do PHP PalestraPdo do PHP Palestra
Pdo do PHP Palestra
 
Banco de dadados MySQL com PHP
Banco de dadados MySQL com PHPBanco de dadados MySQL com PHP
Banco de dadados MySQL com PHP
 
JDBC
JDBCJDBC
JDBC
 
PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisPHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
 
PHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsPHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object Calisthenics
 
Implementação de
Implementação de Implementação de
Implementação de
 
Aula 02 PHP+MySQL - LabMM4
Aula 02 PHP+MySQL - LabMM4 Aula 02 PHP+MySQL - LabMM4
Aula 02 PHP+MySQL - LabMM4
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Java 16 Jdbc
Java 16 JdbcJava 16 Jdbc
Java 16 Jdbc
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simples
 
Jdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYJdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITY
 
PHP MySQL Aula 03
PHP MySQL Aula 03PHP MySQL Aula 03
PHP MySQL Aula 03
 

Destaque

CakePHP + Adobe Flex®, v2
CakePHP + Adobe Flex®, v2CakePHP + Adobe Flex®, v2
CakePHP + Adobe Flex®, v2Cauan Cabral
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Vinícius de Paula
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Lucas Augusto Carvalho
 
Minicurso de Cakephp
Minicurso de CakephpMinicurso de Cakephp
Minicurso de CakephpCauan Cabral
 
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika AldabaLightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldabaux singapore
 

Destaque (7)

CakePHP + Adobe Flex®, v2
CakePHP + Adobe Flex®, v2CakePHP + Adobe Flex®, v2
CakePHP + Adobe Flex®, v2
 
Filtro de SPAM
Filtro de SPAMFiltro de SPAM
Filtro de SPAM
 
PHP + Flex
PHP + FlexPHP + Flex
PHP + Flex
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Minicurso de Cakephp
Minicurso de CakephpMinicurso de Cakephp
Minicurso de Cakephp
 
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika AldabaLightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
 

Semelhante a PHP + MySQL Introdução

PHP Aula07 - conexão Com Banco de Dados
PHP Aula07 - conexão Com Banco de DadosPHP Aula07 - conexão Com Banco de Dados
PHP Aula07 - conexão Com Banco de DadosDaniel Brandão
 
Aula 12 Relatório - Tabelas
Aula 12   Relatório - TabelasAula 12   Relatório - Tabelas
Aula 12 Relatório - TabelasDalton Martins
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdoJorge Luís Gregório
 
LabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaLabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaCarlos Santos
 
Sistema de Login php.pptx
Sistema de Login php.pptxSistema de Login php.pptx
Sistema de Login php.pptxJosivaldoFrana1
 
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebAula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebDalton Martins
 
LabMM4 (T17 - 12/13)
LabMM4 (T17 - 12/13)LabMM4 (T17 - 12/13)
LabMM4 (T17 - 12/13)Carlos Santos
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01julianabdpaiva
 
Aula 9 php (banco de dados)
Aula 9   php (banco de dados)Aula 9   php (banco de dados)
Aula 9 php (banco de dados)andreluizlc
 
PDO: TRABALHANDO COM BANCO DO JEITO CERTO
PDO: TRABALHANDO COM BANCO DO JEITO CERTOPDO: TRABALHANDO COM BANCO DO JEITO CERTO
PDO: TRABALHANDO COM BANCO DO JEITO CERTOPerla Coutinho Barbosa
 
Apresentação formação web - up marketing digital - módulo ii - 2º fds
Apresentação   formação web - up marketing digital - módulo ii - 2º fdsApresentação   formação web - up marketing digital - módulo ii - 2º fds
Apresentação formação web - up marketing digital - módulo ii - 2º fdsRangel Javier
 
Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...
Aula 09  - Instruções preparadas e otimização de consultas do Mysql - Program...Aula 09  - Instruções preparadas e otimização de consultas do Mysql - Program...
Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...Dalton Martins
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPACaelum
 

Semelhante a PHP + MySQL Introdução (20)

PHP Aula07 - conexão Com Banco de Dados
PHP Aula07 - conexão Com Banco de DadosPHP Aula07 - conexão Com Banco de Dados
PHP Aula07 - conexão Com Banco de Dados
 
Aula 12 Relatório - Tabelas
Aula 12   Relatório - TabelasAula 12   Relatório - Tabelas
Aula 12 Relatório - Tabelas
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
 
LabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaLabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurança
 
PHP MySQL Aula 07
PHP MySQL Aula 07PHP MySQL Aula 07
PHP MySQL Aula 07
 
Sistema de Login php.pptx
Sistema de Login php.pptxSistema de Login php.pptx
Sistema de Login php.pptx
 
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebAula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
 
LabMM4 (T17 - 12/13)
LabMM4 (T17 - 12/13)LabMM4 (T17 - 12/13)
LabMM4 (T17 - 12/13)
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01
 
Aula 9 php (banco de dados)
Aula 9   php (banco de dados)Aula 9   php (banco de dados)
Aula 9 php (banco de dados)
 
PDO: TRABALHANDO COM BANCO DO JEITO CERTO
PDO: TRABALHANDO COM BANCO DO JEITO CERTOPDO: TRABALHANDO COM BANCO DO JEITO CERTO
PDO: TRABALHANDO COM BANCO DO JEITO CERTO
 
Apresentação formação web - up marketing digital - módulo ii - 2º fds
Apresentação   formação web - up marketing digital - módulo ii - 2º fdsApresentação   formação web - up marketing digital - módulo ii - 2º fds
Apresentação formação web - up marketing digital - módulo ii - 2º fds
 
Crud
CrudCrud
Crud
 
Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...
Aula 09  - Instruções preparadas e otimização de consultas do Mysql - Program...Aula 09  - Instruções preparadas e otimização de consultas do Mysql - Program...
Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPA
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Doctrine for dummies
Doctrine for dummiesDoctrine for dummies
Doctrine for dummies
 
PHP e Mysql - INSERT
PHP e Mysql - INSERTPHP e Mysql - INSERT
PHP e Mysql - INSERT
 
PHP e Mysql - INSERT
PHP e Mysql - INSERTPHP e Mysql - INSERT
PHP e Mysql - INSERT
 

Mais de Carlos Santos

Is AI the Spice of our future?
Is AI the Spice of our future?Is AI the Spice of our future?
Is AI the Spice of our future?Carlos Santos
 
Mentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantesMentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantesCarlos Santos
 
1º Encontro Científico TCEdu
1º Encontro Científico TCEdu1º Encontro Científico TCEdu
1º Encontro Científico TCEduCarlos Santos
 
Tecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicialTecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicialCarlos Santos
 
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunosAVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunosCarlos Santos
 
AVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosAVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosCarlos Santos
 
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...Carlos Santos
 
Tecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho práticoTecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho práticoCarlos Santos
 
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)Carlos Santos
 
SAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning EnvironmentSAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning EnvironmentCarlos Santos
 
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO CampusRepensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO CampusCarlos Santos
 
A technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus projectA technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus projectCarlos Santos
 
SAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoSAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoCarlos Santos
 
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCARepensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCACarlos Santos
 
T20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidT20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidCarlos Santos
 
T19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoT19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoCarlos Santos
 
T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)Carlos Santos
 

Mais de Carlos Santos (20)

Is AI the Spice of our future?
Is AI the Spice of our future?Is AI the Spice of our future?
Is AI the Spice of our future?
 
Mentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantesMentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantes
 
1º Encontro Científico TCEdu
1º Encontro Científico TCEdu1º Encontro Científico TCEdu
1º Encontro Científico TCEdu
 
Tecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicialTecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicial
 
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunosAVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
 
AVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosAVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunos
 
chmod 777 education
chmod 777 educationchmod 777 education
chmod 777 education
 
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
 
Tecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho práticoTecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho prático
 
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
 
chmod 777 education
chmod 777 educationchmod 777 education
chmod 777 education
 
SAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning EnvironmentSAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning Environment
 
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO CampusRepensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
 
A technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus projectA technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus project
 
SAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoSAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativo
 
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCARepensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
 
T20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidT20_LM3: APIs e Scoreoid
T20_LM3: APIs e Scoreoid
 
T19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoT19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificação
 
T18_LM3: Ajax
T18_LM3: AjaxT18_LM3: Ajax
T18_LM3: Ajax
 
T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)
 

Último

activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADOcarolinacespedes23
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdfJorge Andrade
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.silves15
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMVanessaCavalcante37
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasCassio Meira Jr.
 
Orações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptxOrações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptxKtiaOliveira68
 
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...ArianeLima50
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasCasa Ciências
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxLuizHenriquedeAlmeid6
 

Último (20)

Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades Motoras
 
Orações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptxOrações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptx
 
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
Cultura e Literatura indígenas: uma análise do poema “O silêncio”, de Kent Ne...
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de Partículas
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
 

PHP + MySQL Introdução

  • 1. PHP + MySQL: Introdução Carlos Santos LabMM 4 - NTC - DeCA - UA Aula 16, 30-04-2013
  • 2. objetivos do módulo Criar sítios Web dinâmicos com informação armazenada em bases de dados • parte 1: visualização e navegação de informação armazenada em BD • visualizar dados de uma tabela • visualizar dados de várias tabelas ligadas entre si • visualizar detalhes de informação específica • parte 2: gestão da informação em BD • inserir novos dados • atualizar dados • apagar dados • parte 3: outras tecnologias interessantes para projetos finais • Encriptação, SVN, MVC, Ajax, APIs, JSON,...
  • 3. novidade do ano letivo anterior... ... sem rede de segurança :)
  • 4. etapas 1. estabelecer ligação com o MySQL 2. escolher a BD 3. extrair dados da BD através de uma query -> recordset 4. preparar dados para trabalhar no PHP -> fetch 5. mostrar dados 6. fechar ligação ao MySQL
  • 5. 1. estabelecer ligação ao MySQL mysql_connect() • abre uma ligação não persistente ao servidor • existe apenas no âmbito da página/script que a usa • deve ser terminada pela função mysql_close() mysql_pconnect() • abre uma ligação persistente ao servidor depois de aberta, esta será mantida para todas as páginas gestão destas ligações persistentes é feita através da configuração de parâmetros no próprio servidor MySQL • wait_timeout • max_connect_errors
  • 6. 1. estabelecer ligação ao MySQL $connection = mysql_connect(hostname, username, password); Boas práticas • criar uma pasta “connections” • criar um ficheiro “connection.php” com: <?php $hostname = “localhost"; $username = “nome_utilizador"; $password = “password_utilizador"; $connection = mysql_connect($hostname, $username, $password); ?> • incluir o ficheiro em todas as páginas que precisem de interagir com a BD require_once('connections/connection.php');
  • 7. 1. estabelecer ligação ao MySQL E se a ligação der erro? $connection = mysql_connect(hostname, username, password) or trigger_error(mysql_error(), E_USER_ERROR); • trigger_error() - dispara uma configuração de erro cujo comportamento pode ser controlado com set_error_handler() • mysql_error() - texto do último erro gerado pela última função do MySQL • E_USER_ERROR - “User-generated error message” $connection = mysql_connect(hostname, username, password) || die(‘Erro na ligação à base de dados’); • este método só deve ser utilizado para debug em desenvolvimento porque não permite um controlo dos erros enviados para o utilizador!
  • 8. 2. escolher a BD mysql_select_db(dbname); Incluir em “connection.php” <?php $hostname = “localhost"; $username = “nome_utilizador"; $password = “password_utilizador"; $dbname = “nome_basededados”; $connection = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(), E_USER_ERROR); mysql_select_db($dbname); ?>
  • 9. 3. extrair dados da BD a partir de uma query $query = "SELECT colunas FROM tabela"; $rsName = mysql_query($query , $connection); • $query só pode conter uma query e sem “;” no final. Não há suporte para múltiplos queries numa única chamada! • $rsName é uma variável do tipo “resource” que contem todos os valores resultantes da execução do query na respectiva base de dados • retorna FALSE se existiu um erro na execução do query Para saber o número total de registos do resultado • $totalrows_rsName = mysql_num_rows($rsName); Para libertar espaço de memória ocupado (pouco utilizado) • mysql_free_result($rsName);
  • 10. Um recordset é uma estrutura de dados sem índices • o acesso é realizado ao elemento apontado pelo ponteiro • os métodos de fetch fazem avançar o ponteiro para a próxima “linha” 3. recordset
  • 11. 4. preparar dados para trabalhar no PHP -> fetch Para utilizar a informação do recordset é necessário preparar (ir buscar) os dados através de um processo designado por fetch O fetch dos resultados é realizado linha a linha! Vários métodos disponíveis dependendo do modo como se prefere tratar os dados nos passos seguintes: • mysql_fetch_assoc(recorset) - “Fetch a result row as an associative array” • mysql_fetch_row(recordset) - “Get a result row as an enumerated array” • mysql_fetch_array(recordset) - “Fetch a result row as an associative array, a numeric array, or both”
  • 12. 4. preparar dados para trabalhar no PHP -> fetch $row_rsName = mysql_fetch_assoc($rsName); echo $row_rsName[“chave1"]; echo $row_rsName[“chaveN"]; • $row_rsName é um array associativo • o acesso aos valores é realizado através das chaves do array • as chaves são iguais aos nomes dos campos retornados pela query • retorna FALSE se já não existirem dados para fetch Para listar todos os resultados while ($row_rsName = mysql_fetch_assoc($rsName)){ echo $row_rsName[“campo1"]; echo $row_rsName[“campoN"]; }
  • 13. 4. preparar dados para trabalhar no PHP -> fetch $row_rsName = mysql_fetch_row($rsName); echo $row_rsName[0]; echo $row_rsName[N]; • $row_rsName é um array enumerado • o acesso aos valores é realizado através dos índices • retorna FALSE se já não existirem dados para fetch Para listar todos os resultados while ($row_rsName = mysql_fetch_row($rsName)){ echo $row_rsName[0]; echo $row_rsName[N]; }
  • 14. 5. mostrar dados Já foi exemplificados nos slides do ponto 4 :) É necessário aplicar os conhecimentos adquiridos no módulo anterior. Trata-se de utilizar o PHP para tratar os dados dos arrays e mostrar a informação na página.
  • 15. 6. fechar ligação ao MySQL mysql_close($connection); Boas práticas • o PHP fecha a ligação automaticamente quando o script é terminado • no entanto, é considerada uma boa prática incluir o método para fechar a ligação • a não utilização deste método é crítica quando existem scripts muito pesados, com longos tempos de processamento, que deixam as ligações “penduradas” durante muito tempo • um servidor de MySQL tem recursos limitados e não aguenta um número infinito de ligações em simultâneo!
  • 16. No final... // Ficheiro “connections/connection.php” <?php // Define variáveis $hostname = “localhost"; $username = “nome_utilizador"; $password = “password_utilizador"; $dbname = “nome_basededados”; // Estabelece ligação ao MySQL $connection = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(), E_USER_ERROR); // Estabelece ligação à BD mysql_select_db($dbname); mysql_set_charset(‘utf8’, $connection); ?>
  • 17. No final... <?php // Ligação à BD require_once('connections/connection.php'); // Extrair dados da BD $query = "SELECT colunas FROM tabela"; $rsName = mysql_query($query , $connection); // Mostrar dados while ($row_rsName = mysql_fetch_assoc($rsName)){ echo $row_rsName[“campo1"]; echo $row_rsName[“campoN"]; } // Fechar ligação à BD mysql_close($connection); ?>