SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
PHP + MySQL: diferentes métodos de acesso ao
MySQL + master-detail
Carlos Santos
LabMM 4 - NTC - DeCA - UA
Aula 17, 02-05-2013
Diferentes métodos de acesso ao MySQL
Em PHP existem pelo 3 métodos principais de acesso ao MySQL:
• PHP’s MySQL Extension: é o método “histórico” e só permite acesso
procedimental. Já não é atualizado e vai deixar de ser suportado em
futuras versões do PHP (v5.5);
• PHP’s mysqli Extension: é uma versão para substituir a versão “histórica”
e disponibiliza versões procedimental e orientada a objetos. Tem uma
melhor performance e mais métodos;
• PDO (PHP Data Objects): é uma camada de abstração para bases de
dados com suporte para MySQL e muitos outros SGBDR. Só tem versão
orientada a objetos. Em teoria, permite mudar de SGBDR sem ser
necessário alterar o código...
http://www.php.net/manual/en/mysqli.overview.php
Diferenças entre as APIs
http://www.php.net/manual/en/mysqlinfo.api.choosing.php
Diferenças entre as APIs
Visualizar dados de várias tabelas
Quando queremos visualizar dados que estão distribuídos por duas
tabelas ligadas entre si, podemos:
• criar uma query baseado num JOIN que permita obter todos os dados;
• criar vários recordsets de acordo com a informação necessária a mostrar
na página
A solução adequada depende da situação a que se aplica!
Base de dados para exemplos seguintes
Listar os mariachis
$query = "SELECT idMariachi, nome FROM Mariachi";
$rsMari = mysql_query($query , $connection);
while ($row_rsMari = mysql_fetch_assoc($rsMari)){
echo $row_rsMari[“nome"];
}
Listar os mariachis com a respetiva família
$query = "SELECT Mariachi.idMariachi, Mariachi.nome,
Familia.nomeFamilia FROM Mariachi INNER JOIN Familia ON
Mariachi.Familia_idFamilia = Familia.idFamilia";
$rsMari = mysql_query($query , $connection);
while ($row_rsMari = mysql_fetch_assoc($rsMari)){
echo $row_rsMari[“nome"].” - “.
$row_rsMari[“nomeFamilia”].”<br/>”;
}
Listar os mariachis com família (not so good)
$query = "SELECT idMariachi, nome, Familia_idFamilia FROM
Mariachi";
$rsMari = mysql_query($query , $connection);
while ($row_rsMari = mysql_fetch_assoc($rsMari)){
$qFami = "SELECT nomeFamilia FROM Familia WHERE
idFamilia = ".$row_rsMari[“Familia_idFamilia”];
$rsFami = mysql_query($qFami , $connection);
$row_rsFami = mysql_fetch_assoc($rsFami);
echo $row_rsMari[“nome"].” - “.
$row_rsFami[“nomeFamilia].”<br/>”;
}
Observações
Uma página pode ter muitos recordsets
Os valores obtidos num recordset podem ser utilizados para filtrar
resultados a obter noutro recordset
Soluções com múltiplos acessos há BD são, normalmente, mais lentas
No entanto, existem circunstâncias em que a quantidade de informação
resultante de um INNER JOIN pode justificar a opção por múltiplos
queries!
master - detail
Nesta estrutuura de informação temos:
• uma página master que lista vários tópicos de um modo genérico;
• uma página detail que permite ver os detalhes do tópico escolhido na
página master
Que informação é necessário transferir entre as páginas?
master
item1
item2
item3
detail
detalhes do item
escolhido na página
master
voltar
querystring: id_item
.../page.php?a=5
Exemplo: master-detail
master: listar todas as famílias
detail: listar os mariachis dessa família
Exemplo: master > familias.php
$qFami = "SELECT * FROM Familia";
$rsFami = mysql_query($qFami , $connection);
while ($row_rsFami = mysql_fetch_assoc($rsFami)){
$line = ‘<p><a href=”mariachisFamilia.php?id=’.
$row_rsFami[“idFamilia”].
’”>’.
$row_rsFami[“nomeFamilia"].
‘</a></p>’;
echo $line;
}
os URLs na página ficam com o formato: “mariachisFamilia.php?id=3”
Exemplo: detail > mariachisFamilia.php
$idValue = intval($_GET['id']);
$qMari = "SELECT * FROM Mariachi
WHERE Familia_idFamilia = ".$idValue;
$rsMari = mysql_query($qMari , $connection);
while ($row_rsMari = mysql_fetch_assoc($rsMari)){
$line = ‘<p>$row_rsMari[“nome”]</p>’;
echo $line;
}
Como mostrar nesta página o nome da família?
• um recordset baseado numa query com join ou dois recordsets?
Exemplo: master-detail (parte 2)
master: listar todas as famílias
detail: listar os mariachis dessa família
e incluir o número de relacionamentos com chicas
Exemplo: master-detail (parte 2)
Soluções a discutir:
• um query único baseado num INNER JOIN entre Mariachis e
Mariachi_has_chica com operação de COUNT e filtragem pelo Mariachi?
• um query para o nome do Mariachi e um query para contar o número de
registos do Mariachi em Mariachi_has_Chica?
Exemplo: master-detail (parte 2)
Problema com query único, típico destas situações:
• se um Mariachi não tiver uma ocorrência em Mariachi_has_Chica o
resultado será um recordset vazio! Porquê?
• logo, não será possível mostrar os dados da informação pessoal do
Mariachi
Neste cenário, a solução a adotar deve ser a segunda!
... ou ainda melhor... uma solução com OUTER JOIN
• TPC -> implementar esta solução :)
Exemplo: master-detail (parte 2)
Por vezes é necessário ter partes do código que só são executadas se um
determinado recordset está ou não vazio. Essas zonas são designadas
por zonas condicionais.
Por exemplo:
• se o mariachi nunca teve relacionamentos devemos apresentar uma
mensagem adequada: “este mariachi não é um bom exemplo :(”
• nos outros casos mostrar o número de relacionamentos
como implementar este tipo de condição?
• if ($rsName) ... // se existirem resultados ...

Weitere ähnliche Inhalte

Andere mochten auch

LabMM4 (T02 - 12/13) - Bases de dados
LabMM4 (T02 - 12/13) - Bases de dadosLabMM4 (T02 - 12/13) - Bases de dados
LabMM4 (T02 - 12/13) - Bases de dados
Carlos Santos
 
06 LabMM4 - Bases de dados
06 LabMM4 - Bases de dados06 LabMM4 - Bases de dados
06 LabMM4 - Bases de dados
Carlos Santos
 
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPLabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
Carlos Santos
 
LabMM4 (T18 - 12/13) - Navegação e insert
LabMM4 (T18 - 12/13) - Navegação e insertLabMM4 (T18 - 12/13) - Navegação e insert
LabMM4 (T18 - 12/13) - Navegação e insert
Carlos Santos
 
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisLabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
Carlos Santos
 
LabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesLabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - Funções
Carlos Santos
 
LabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaLabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurança
Carlos Santos
 
04.30.2013.ground truth.interaction
04.30.2013.ground truth.interaction04.30.2013.ground truth.interaction
04.30.2013.ground truth.interaction
ericahagen
 

Andere mochten auch (14)

03 LabMM4 - Bases de dados
03 LabMM4 - Bases de dados03 LabMM4 - Bases de dados
03 LabMM4 - Bases de dados
 
LabMM4 (T02 - 12/13) - Bases de dados
LabMM4 (T02 - 12/13) - Bases de dadosLabMM4 (T02 - 12/13) - Bases de dados
LabMM4 (T02 - 12/13) - Bases de dados
 
04 LabMM4 - Bases de dados
04 LabMM4 - Bases de dados04 LabMM4 - Bases de dados
04 LabMM4 - Bases de dados
 
06 LabMM4 - Bases de dados
06 LabMM4 - Bases de dados06 LabMM4 - Bases de dados
06 LabMM4 - Bases de dados
 
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPLabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
 
LabMM4 (T18 - 12/13) - Navegação e insert
LabMM4 (T18 - 12/13) - Navegação e insertLabMM4 (T18 - 12/13) - Navegação e insert
LabMM4 (T18 - 12/13) - Navegação e insert
 
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisLabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
 
LabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesLabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - Funções
 
LabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaLabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurança
 
Infor.procesado de plastico
Infor.procesado de plasticoInfor.procesado de plastico
Infor.procesado de plastico
 
04.30.2013.ground truth.interaction
04.30.2013.ground truth.interaction04.30.2013.ground truth.interaction
04.30.2013.ground truth.interaction
 
Syrian Telecentre Project: A Model for Sustainable Development
Syrian Telecentre Project: A Model for Sustainable DevelopmentSyrian Telecentre Project: A Model for Sustainable Development
Syrian Telecentre Project: A Model for Sustainable Development
 
Social Meida For Project Success - PMI Australia Conference 2013 Presentation
Social Meida For Project Success - PMI Australia Conference 2013 PresentationSocial Meida For Project Success - PMI Australia Conference 2013 Presentation
Social Meida For Project Success - PMI Australia Conference 2013 Presentation
 
纽约旅游景点
纽约旅游景点纽约旅游景点
纽约旅游景点
 

Ähnlich wie LabMM4 (T17 - 12/13)

3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29
Juliana Nascimento
 
Apontamentos psi m18
Apontamentos psi m18Apontamentos psi m18
Apontamentos psi m18
tomascarol2
 
Progweb Aula8
Progweb Aula8Progweb Aula8
Progweb Aula8
softeam
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01
julianabdpaiva
 

Ähnlich wie LabMM4 (T17 - 12/13) (20)

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
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
 
3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29
 
3260 php truquesmagicos
3260 php truquesmagicos3260 php truquesmagicos
3260 php truquesmagicos
 
Apontamentos psi m18
Apontamentos psi m18Apontamentos psi m18
Apontamentos psi m18
 
Sistema de Login php.pptx
Sistema de Login php.pptxSistema de Login php.pptx
Sistema de Login php.pptx
 
Sistema php
Sistema phpSistema php
Sistema php
 
Php12
Php12Php12
Php12
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day Workshop
 
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
 
Banco de dadados MySQL com PHP
Banco de dadados MySQL com PHPBanco de dadados MySQL com PHP
Banco de dadados MySQL com PHP
 
WordPress além dos blogs #fisl14
WordPress além dos blogs #fisl14WordPress além dos blogs #fisl14
WordPress além dos blogs #fisl14
 
Progweb Aula8
Progweb Aula8Progweb Aula8
Progweb Aula8
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniter
 
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
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portais
 
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
 
PHP MySQL Aula 03
PHP MySQL Aula 03PHP MySQL Aula 03
PHP MySQL Aula 03
 

Mehr von Carlos 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 alunos
Carlos Santos
 
SAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoSAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativo
Carlos Santos
 
T20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidT20_LM3: APIs e Scoreoid
T20_LM3: APIs e Scoreoid
Carlos 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ção
Carlos 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
 

Mehr von 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)
 

Kürzlich hochgeladen

Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
sh5kpmr7w7
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
azulassessoria9
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 

Kürzlich hochgeladen (20)

Acessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeAcessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidade
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdfMESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
Questões de Língua Portuguesa - gincana da LP
Questões de Língua Portuguesa - gincana da LPQuestões de Língua Portuguesa - gincana da LP
Questões de Língua Portuguesa - gincana da LP
 
INTERTEXTUALIDADE atividade muito boa para
INTERTEXTUALIDADE   atividade muito boa paraINTERTEXTUALIDADE   atividade muito boa para
INTERTEXTUALIDADE atividade muito boa para
 

LabMM4 (T17 - 12/13)

  • 1. PHP + MySQL: diferentes métodos de acesso ao MySQL + master-detail Carlos Santos LabMM 4 - NTC - DeCA - UA Aula 17, 02-05-2013
  • 2. Diferentes métodos de acesso ao MySQL Em PHP existem pelo 3 métodos principais de acesso ao MySQL: • PHP’s MySQL Extension: é o método “histórico” e só permite acesso procedimental. Já não é atualizado e vai deixar de ser suportado em futuras versões do PHP (v5.5); • PHP’s mysqli Extension: é uma versão para substituir a versão “histórica” e disponibiliza versões procedimental e orientada a objetos. Tem uma melhor performance e mais métodos; • PDO (PHP Data Objects): é uma camada de abstração para bases de dados com suporte para MySQL e muitos outros SGBDR. Só tem versão orientada a objetos. Em teoria, permite mudar de SGBDR sem ser necessário alterar o código... http://www.php.net/manual/en/mysqli.overview.php
  • 3. Diferenças entre as APIs http://www.php.net/manual/en/mysqlinfo.api.choosing.php
  • 5. Visualizar dados de várias tabelas Quando queremos visualizar dados que estão distribuídos por duas tabelas ligadas entre si, podemos: • criar uma query baseado num JOIN que permita obter todos os dados; • criar vários recordsets de acordo com a informação necessária a mostrar na página A solução adequada depende da situação a que se aplica!
  • 6. Base de dados para exemplos seguintes
  • 7. Listar os mariachis $query = "SELECT idMariachi, nome FROM Mariachi"; $rsMari = mysql_query($query , $connection); while ($row_rsMari = mysql_fetch_assoc($rsMari)){ echo $row_rsMari[“nome"]; }
  • 8. Listar os mariachis com a respetiva família $query = "SELECT Mariachi.idMariachi, Mariachi.nome, Familia.nomeFamilia FROM Mariachi INNER JOIN Familia ON Mariachi.Familia_idFamilia = Familia.idFamilia"; $rsMari = mysql_query($query , $connection); while ($row_rsMari = mysql_fetch_assoc($rsMari)){ echo $row_rsMari[“nome"].” - “. $row_rsMari[“nomeFamilia”].”<br/>”; }
  • 9. Listar os mariachis com família (not so good) $query = "SELECT idMariachi, nome, Familia_idFamilia FROM Mariachi"; $rsMari = mysql_query($query , $connection); while ($row_rsMari = mysql_fetch_assoc($rsMari)){ $qFami = "SELECT nomeFamilia FROM Familia WHERE idFamilia = ".$row_rsMari[“Familia_idFamilia”]; $rsFami = mysql_query($qFami , $connection); $row_rsFami = mysql_fetch_assoc($rsFami); echo $row_rsMari[“nome"].” - “. $row_rsFami[“nomeFamilia].”<br/>”; }
  • 10. Observações Uma página pode ter muitos recordsets Os valores obtidos num recordset podem ser utilizados para filtrar resultados a obter noutro recordset Soluções com múltiplos acessos há BD são, normalmente, mais lentas No entanto, existem circunstâncias em que a quantidade de informação resultante de um INNER JOIN pode justificar a opção por múltiplos queries!
  • 11. master - detail Nesta estrutuura de informação temos: • uma página master que lista vários tópicos de um modo genérico; • uma página detail que permite ver os detalhes do tópico escolhido na página master Que informação é necessário transferir entre as páginas? master item1 item2 item3 detail detalhes do item escolhido na página master voltar querystring: id_item .../page.php?a=5
  • 12. Exemplo: master-detail master: listar todas as famílias detail: listar os mariachis dessa família
  • 13. Exemplo: master > familias.php $qFami = "SELECT * FROM Familia"; $rsFami = mysql_query($qFami , $connection); while ($row_rsFami = mysql_fetch_assoc($rsFami)){ $line = ‘<p><a href=”mariachisFamilia.php?id=’. $row_rsFami[“idFamilia”]. ’”>’. $row_rsFami[“nomeFamilia"]. ‘</a></p>’; echo $line; } os URLs na página ficam com o formato: “mariachisFamilia.php?id=3”
  • 14. Exemplo: detail > mariachisFamilia.php $idValue = intval($_GET['id']); $qMari = "SELECT * FROM Mariachi WHERE Familia_idFamilia = ".$idValue; $rsMari = mysql_query($qMari , $connection); while ($row_rsMari = mysql_fetch_assoc($rsMari)){ $line = ‘<p>$row_rsMari[“nome”]</p>’; echo $line; } Como mostrar nesta página o nome da família? • um recordset baseado numa query com join ou dois recordsets?
  • 15. Exemplo: master-detail (parte 2) master: listar todas as famílias detail: listar os mariachis dessa família e incluir o número de relacionamentos com chicas
  • 16. Exemplo: master-detail (parte 2) Soluções a discutir: • um query único baseado num INNER JOIN entre Mariachis e Mariachi_has_chica com operação de COUNT e filtragem pelo Mariachi? • um query para o nome do Mariachi e um query para contar o número de registos do Mariachi em Mariachi_has_Chica?
  • 17. Exemplo: master-detail (parte 2) Problema com query único, típico destas situações: • se um Mariachi não tiver uma ocorrência em Mariachi_has_Chica o resultado será um recordset vazio! Porquê? • logo, não será possível mostrar os dados da informação pessoal do Mariachi Neste cenário, a solução a adotar deve ser a segunda! ... ou ainda melhor... uma solução com OUTER JOIN • TPC -> implementar esta solução :)
  • 18. Exemplo: master-detail (parte 2) Por vezes é necessário ter partes do código que só são executadas se um determinado recordset está ou não vazio. Essas zonas são designadas por zonas condicionais. Por exemplo: • se o mariachi nunca teve relacionamentos devemos apresentar uma mensagem adequada: “este mariachi não é um bom exemplo :(” • nos outros casos mostrar o número de relacionamentos como implementar este tipo de condição? • if ($rsName) ... // se existirem resultados ...