SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
PHP + MySQL: navegação/paginação, insert
Carlos Santos
LabMM 4 - NTC - DeCA - UA
Aula 17, 07-05-2013
Navegação e paginação
Vamos supor que uma família pode ter centenas de mariachis!
• faz sentido mostrar numa página uma listagem com um número ilimitado
de itens?
navegação
• permite navegar sequencialmente nas páginas
• exemplo: previous - next (página 3 de 6)
paginação
• mais complexa e permite navegar diretamente para uma página
• exemplo: 1 ... 5 6 7 8 9 ... 20
Navegação
Para construir um sistema idêntico ao exemplo anterior é necessário
saber:
• número total de registos
• número de itens por página
• número da página atual
• registos para mostrar na página atual
Navegação - número total de registos
Recordset com query de COUNT de registos da tabela
Navegação - número de itens por página
É um valor definido pelo programador e pode simplesmente ser guardado
numa variável ou numa constante
Se o utilizador tiver a possibilidade de alterar esse valor podemos
necessitar de uma das seguintes soluções:
• cookie
• variável de sessão
• parâmetro adicional na querystring
Navegação - número da página atual
Normalmente é um valor passado na querystring
• next -> lê página atual e soma 1
• previous -> lê página atual e subtrai 1
• chama novamente a página com o novo id da página a visualizar
• é necessário ter em atenção as condições para não permitir clicar nas
opções quando não existem mais páginas para trás ou para a frente
• se não há valor da página deve assumir-se que é a primeira que deve ser
mostrada
• verificar sempre os valores passados porque podem facilmente ser
introduzidos manualmente no URL
Navegação - registos para mostrar na página atual
NUNCA fazer uma query a pedir todos os registos!
Na query do pedido deve ser especificado o LIMIT (length e offset)
• SELECT .... LIMIT offset, length
• length é o valor do número de itens por página
• offset é calculado com base na página atual e o número de itens por
página
Inserção simples numa tabela
Para inserir um novo registo numa tabela é necessário:
• criar um formulário com os campos a inserir
• se necessário, validar dados por javascript
• submeter dados por POST
• receber dados e voltar a validar
• inserir dados na tabela da BD
• dar feedback ao utilizador
PHP -> BD
Para inserir um novo registo numa tabela:
• $qFami = "INSERT INTO tabela (campo1, campo2, campo3)
VALUES ('valor1', 'valor2', valor3)";
form.php insert.php result.php
POST querystring(?)
Base de dados para exemplos
Inserir uma nova família - formFamilia.php
<html>
<body>
<form action="insert_familia.php" method="post">
Nome Família: <input type="text" name="nomeFamilia" />
<input type="submit" />
</form>
</body>
</html>
As chaves primárias com auto-incremento não precisam de um campo no
formulário...
Inserir uma nova família - insert_familia.php
$nomeFamilia = $_POST[“nomeFamilia”];
//Validação de dados de entrada em falta...
$query="INSERT INTO Familia (nomeFamilia) VALUES
('$nomeFamilia')";
if (!mysqli->query($query)) {
// tratar condição de erro
} else {
// o que fazer se correr bem?
}
Feedback!
Mostrar feedback na página de inserção
• a utilizar com moderação na estrutura indicada anteriormente
• tende a criar situações com um passo extra de navegação
Redirecionar para outra página automaticamente
• página do próprio sítio web onde o utilizador pode continuar a navegar
“normalmente”
• header('Location: proxPagina.php');
• a própria página do formulário de inserção permitindo adicionar mais
elementos de um modo muito simples
• feedback pode ser passado por querystring
PHP -> BD
Outra solução: as operações podem ser todas realizadas na mesma
página!
• no início da página verifica se há dados por post: isset(...) (+ verificações
de segurança)
• se há dados executa a inserção na BD e dá feedback
• se não há dados mostra o formulário
form.php
POST
Inserir um novo mariachi - formMariachi.php
<html>
<body>
<form action="insert_mariachi.php" method="post">
Nome: <input type="text" name="nome" />
Alcunha: <input type="text" name="alcunha" />
Família: <input type="text" name="Familia_idFamilia" />
<input type="submit" />
</form>
</body>
</html>
Esta solução tem sentido para o utilizador final?
Inserir um novo mariachi - formMariachi.php
<html>
<body>
<form action="insert_mariachi.php" method="post">
Nome: <input type="text" name="nome" />
Alcunha: <input type="text" name="alcunha" />
Família: <input type="text" name="Familia_idFamilia" />
<input type="submit" />
</form>
</body>
</html>
Nunca se deve pedir ao utilizador para inserir valores de chaves!
Para as chaves estrangeiras de uma tabela temos de criar
elementos de interação adequados ao utilizador final.
Inserir um novo mariachi - formMariachi.php
<html>
<body>
<form action="insert_mariachi.php" method="post">
Nome: <input type="text" name="nome" />
Alcunha: <input type="text" name="alcunha" />
Família:
<select name="Familia_idFamilia”>
<option value="1">Menezes</option>
<option value="2">Rodriguez</option>
<option value="3">Costa</option>
</select>
<input type="submit" />
</form>
</body>
</html>
Os elementos de interação criados têm de ser gerados
dinamicamente porque a informação pode mudar na BD!
Drop down menu
Para adicionar um drop down menu num formulário é necessário:
• criar um recordset com os valores das chave primária e respetivos labels a
listar no drop down menu
• num ciclo, adicionar todas as opção ao elemento do tipo select, sendo:
• o value é o valor da chave primária
• o texto é o label extraído da BD
Inserir um novo mariachi - formMariachi.php
<?php
$qFami = "SELECT * FROM Familia";
$rsFami = mysqli->query($qFami);
?>
<form action="insert_mariachi.php" method="post">
Família:
<select name="Familia_idFamilia”>
<?php
while ($row_rsFami = $rsFami->fetch_assoc()){
$option = ‘<option value=”‘
. $row_rsFami[“idFamilia"]
. ’”>’
. $row_rsFami[“nomeFamilia"]
. ‘</option>’;
echo $option
}
?>
</select>
Inserir um novo mariachi - formMariachi.php
<form action="insert_mariachi.php" method="post">
Família:
<select name="Familia_idFamilia”>
<option value="0" selected>Escolha uma família</option>
<?php
while ($row_rsFami = $rsFami->fetch_assoc()){
$option = ‘<option value=”‘
. $row_rsFami[“idFamilia"]
. ’”>’
. $row_rsFami[“nomeFamilia"]
. ‘</option>’;
echo $option
}
</select>
?>
Neste exemplo, é obrigatório validar se o utilizador
escolheu uma opção e nunca tentar inserir se isso não
aconteceu!
Inserir um novo mariachi
$nome = $_POST[“nome”];
$alcunha = $_POST[“alcunha”];
$Familia_idFamilia = $_POST[“Familia_idFamilia”];
//Validação de dados de entrada em falta
$query="INSERT
INTO Mariachi (nome, alcunha, Familia_ifFamilia)
VALUES ('$nome', '$alcunha', $Familia_idFamilia)";
if (!mysqli->query($query)) {
// tratar condição de erro
} else {
// o que fazer se correr bem?
}
Problemas com encoding?
na inserção na BD
• utf8_encode($_POST['...'])
na visualização na página
• utf8_decode($row_rs['...'])
E para inserir um novo relacionamento?
Inserção em tabelas de M:N
Regras a seguir
• criar um recordset com elementos do lado M
• criar um recordset com elementos do lado N
• no formulário
• utilizar esses recordsets para construir os drop down menus para cada
uma das chaves estrangeiras da tabela
Ou...
• o processo de inserção pode ter passos anteriores que permitam saber à
partida um dos elementos. Por exemplo, podia existir uma página anterior
que obriga a escolher o mariachi.

Weitere ähnliche Inhalte

Was ist angesagt?

Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2Altair Borges
 
Cobol Web com Net Express 5.1 - Parte 3
Cobol Web com Net Express 5.1 - Parte 3Cobol Web com Net Express 5.1 - Parte 3
Cobol Web com Net Express 5.1 - Parte 3Altair Borges
 
Programação web ii aulas 08 e 09
Programação web ii   aulas 08 e 09Programação web ii   aulas 08 e 09
Programação web ii aulas 08 e 09Yuri Bispo
 
Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4Carlos Santos
 
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
 

Was ist angesagt? (10)

Java script aula 08 - formulários
Java script   aula 08 - formuláriosJava script   aula 08 - formulários
Java script aula 08 - formulários
 
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
 
Cobol Web com Net Express 5.1 - Parte 3
Cobol Web com Net Express 5.1 - Parte 3Cobol Web com Net Express 5.1 - Parte 3
Cobol Web com Net Express 5.1 - Parte 3
 
Ajax como comecar
Ajax como comecarAjax como comecar
Ajax como comecar
 
Programação web ii aulas 08 e 09
Programação web ii   aulas 08 e 09Programação web ii   aulas 08 e 09
Programação web ii aulas 08 e 09
 
Phpex2
Phpex2Phpex2
Phpex2
 
Java script aula 09 - JQuery
Java script   aula 09 - JQueryJava script   aula 09 - JQuery
Java script aula 09 - JQuery
 
Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4
 
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
 
Java script aula 05 - funções
Java script   aula 05 - funçõesJava script   aula 05 - funções
Java script aula 05 - funções
 

Andere mochten auch

04 LabMM4 - Bases de dados
04 LabMM4 - Bases de dados04 LabMM4 - Bases de dados
04 LabMM4 - Bases de dadosCarlos Santos
 
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 dadosCarlos Santos
 
06 LabMM4 - Bases de dados
06 LabMM4 - Bases de dados06 LabMM4 - Bases de dados
06 LabMM4 - Bases de dadosCarlos Santos
 
Banco II - PostgreSQL - Funções
Banco II - PostgreSQL - FunçõesBanco II - PostgreSQL - Funções
Banco II - PostgreSQL - FunçõesGustavo Sávio
 
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 - PHPCarlos 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áveisCarlos Santos
 
03 LabMM4 - Bases de dados
03 LabMM4 - Bases de dados03 LabMM4 - Bases de dados
03 LabMM4 - Bases de dadosCarlos Santos
 

Andere mochten auch (8)

04 LabMM4 - Bases de dados
04 LabMM4 - Bases de dados04 LabMM4 - Bases de dados
04 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
 
06 LabMM4 - Bases de dados
06 LabMM4 - Bases de dados06 LabMM4 - Bases de dados
06 LabMM4 - Bases de dados
 
Banco II - PostgreSQL - Funções
Banco II - PostgreSQL - FunçõesBanco II - PostgreSQL - Funções
Banco II - PostgreSQL - Funções
 
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 (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
 
03 LabMM4 - Bases de dados
03 LabMM4 - Bases de dados03 LabMM4 - Bases de dados
03 LabMM4 - Bases de dados
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 

Ähnlich wie LabMM4 (T18 - 12/13) - Navegação e insert

Workshop Web e WordPress
Workshop Web e WordPressWorkshop Web e WordPress
Workshop Web e WordPressHaste Design
 
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
 
Desevolvimento Web Client-side - HTML
Desevolvimento Web Client-side - HTMLDesevolvimento Web Client-side - HTML
Desevolvimento Web Client-side - HTMLGuilherme
 
LabMM4 (T17 - 12/13)
LabMM4 (T17 - 12/13)LabMM4 (T17 - 12/13)
LabMM4 (T17 - 12/13)Carlos Santos
 
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
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisDaniel Brandão
 
Sistema de Login php.pptx
Sistema de Login php.pptxSistema de Login php.pptx
Sistema de Login php.pptxJosivaldoFrana1
 
LabMM4 (T21 - 12/13) - insert, delete e update
LabMM4 (T21 - 12/13) - insert, delete e updateLabMM4 (T21 - 12/13) - insert, delete e update
LabMM4 (T21 - 12/13) - insert, delete e updateCarlos Santos
 
WordPress além dos blogs #fisl14
WordPress além dos blogs #fisl14WordPress além dos blogs #fisl14
WordPress além dos blogs #fisl14Tatiane Pires
 
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
 

Ähnlich wie LabMM4 (T18 - 12/13) - Navegação e insert (20)

Aula 5 php
Aula 5 phpAula 5 php
Aula 5 php
 
Sistema php
Sistema phpSistema php
Sistema php
 
Html5 Aula 4
Html5 Aula 4Html5 Aula 4
Html5 Aula 4
 
Workshop Web e WordPress
Workshop Web e WordPressWorkshop Web e WordPress
Workshop Web e WordPress
 
Aula 8 php
Aula 8 phpAula 8 php
Aula 8 php
 
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
 
Desevolvimento Web Client-side - HTML
Desevolvimento Web Client-side - HTMLDesevolvimento Web Client-side - HTML
Desevolvimento Web Client-side - HTML
 
LabMM4 (T17 - 12/13)
LabMM4 (T17 - 12/13)LabMM4 (T17 - 12/13)
LabMM4 (T17 - 12/13)
 
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
 
PHP MySQL Aula 07
PHP MySQL Aula 07PHP MySQL Aula 07
PHP MySQL Aula 07
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas Condicionais
 
o que é ajax
o que é ajaxo que é ajax
o que é ajax
 
Sistema de Login php.pptx
Sistema de Login php.pptxSistema de Login php.pptx
Sistema de Login php.pptx
 
Python 07
Python 07Python 07
Python 07
 
Html - Aula 3
Html - Aula 3Html - Aula 3
Html - Aula 3
 
LabMM4 (T21 - 12/13) - insert, delete e update
LabMM4 (T21 - 12/13) - insert, delete e updateLabMM4 (T21 - 12/13) - insert, delete e update
LabMM4 (T21 - 12/13) - insert, delete e update
 
WordPress além dos blogs #fisl14
WordPress além dos blogs #fisl14WordPress além dos blogs #fisl14
WordPress além dos blogs #fisl14
 
Php Básico - Parte 2
Php Básico - Parte 2Php Básico - Parte 2
Php Básico - Parte 2
 
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
 
Php aula1
Php aula1Php aula1
Php aula1
 

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

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

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
 
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
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
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
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasillucasp132400
 
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
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
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.
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasRosalina Simão Nunes
 
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
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptxthaisamaral9365923
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSilvana Silva
 
Orações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptxOrações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptxKtiaOliveira68
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManuais Formação
 
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
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
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
 

Kürzlich hochgeladen (20)

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
 
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
 
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
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
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
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasil
 
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.
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
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
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
 
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
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptx
 
Orações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptxOrações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptx
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envio
 
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
 
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
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
 

LabMM4 (T18 - 12/13) - Navegação e insert

  • 1. PHP + MySQL: navegação/paginação, insert Carlos Santos LabMM 4 - NTC - DeCA - UA Aula 17, 07-05-2013
  • 2. Navegação e paginação Vamos supor que uma família pode ter centenas de mariachis! • faz sentido mostrar numa página uma listagem com um número ilimitado de itens? navegação • permite navegar sequencialmente nas páginas • exemplo: previous - next (página 3 de 6) paginação • mais complexa e permite navegar diretamente para uma página • exemplo: 1 ... 5 6 7 8 9 ... 20
  • 3. Navegação Para construir um sistema idêntico ao exemplo anterior é necessário saber: • número total de registos • número de itens por página • número da página atual • registos para mostrar na página atual
  • 4. Navegação - número total de registos Recordset com query de COUNT de registos da tabela
  • 5. Navegação - número de itens por página É um valor definido pelo programador e pode simplesmente ser guardado numa variável ou numa constante Se o utilizador tiver a possibilidade de alterar esse valor podemos necessitar de uma das seguintes soluções: • cookie • variável de sessão • parâmetro adicional na querystring
  • 6. Navegação - número da página atual Normalmente é um valor passado na querystring • next -> lê página atual e soma 1 • previous -> lê página atual e subtrai 1 • chama novamente a página com o novo id da página a visualizar • é necessário ter em atenção as condições para não permitir clicar nas opções quando não existem mais páginas para trás ou para a frente • se não há valor da página deve assumir-se que é a primeira que deve ser mostrada • verificar sempre os valores passados porque podem facilmente ser introduzidos manualmente no URL
  • 7. Navegação - registos para mostrar na página atual NUNCA fazer uma query a pedir todos os registos! Na query do pedido deve ser especificado o LIMIT (length e offset) • SELECT .... LIMIT offset, length • length é o valor do número de itens por página • offset é calculado com base na página atual e o número de itens por página
  • 8. Inserção simples numa tabela Para inserir um novo registo numa tabela é necessário: • criar um formulário com os campos a inserir • se necessário, validar dados por javascript • submeter dados por POST • receber dados e voltar a validar • inserir dados na tabela da BD • dar feedback ao utilizador
  • 9. PHP -> BD Para inserir um novo registo numa tabela: • $qFami = "INSERT INTO tabela (campo1, campo2, campo3) VALUES ('valor1', 'valor2', valor3)"; form.php insert.php result.php POST querystring(?)
  • 10. Base de dados para exemplos
  • 11. Inserir uma nova família - formFamilia.php <html> <body> <form action="insert_familia.php" method="post"> Nome Família: <input type="text" name="nomeFamilia" /> <input type="submit" /> </form> </body> </html> As chaves primárias com auto-incremento não precisam de um campo no formulário...
  • 12. Inserir uma nova família - insert_familia.php $nomeFamilia = $_POST[“nomeFamilia”]; //Validação de dados de entrada em falta... $query="INSERT INTO Familia (nomeFamilia) VALUES ('$nomeFamilia')"; if (!mysqli->query($query)) { // tratar condição de erro } else { // o que fazer se correr bem? }
  • 13. Feedback! Mostrar feedback na página de inserção • a utilizar com moderação na estrutura indicada anteriormente • tende a criar situações com um passo extra de navegação Redirecionar para outra página automaticamente • página do próprio sítio web onde o utilizador pode continuar a navegar “normalmente” • header('Location: proxPagina.php'); • a própria página do formulário de inserção permitindo adicionar mais elementos de um modo muito simples • feedback pode ser passado por querystring
  • 14. PHP -> BD Outra solução: as operações podem ser todas realizadas na mesma página! • no início da página verifica se há dados por post: isset(...) (+ verificações de segurança) • se há dados executa a inserção na BD e dá feedback • se não há dados mostra o formulário form.php POST
  • 15. Inserir um novo mariachi - formMariachi.php <html> <body> <form action="insert_mariachi.php" method="post"> Nome: <input type="text" name="nome" /> Alcunha: <input type="text" name="alcunha" /> Família: <input type="text" name="Familia_idFamilia" /> <input type="submit" /> </form> </body> </html> Esta solução tem sentido para o utilizador final?
  • 16. Inserir um novo mariachi - formMariachi.php <html> <body> <form action="insert_mariachi.php" method="post"> Nome: <input type="text" name="nome" /> Alcunha: <input type="text" name="alcunha" /> Família: <input type="text" name="Familia_idFamilia" /> <input type="submit" /> </form> </body> </html> Nunca se deve pedir ao utilizador para inserir valores de chaves! Para as chaves estrangeiras de uma tabela temos de criar elementos de interação adequados ao utilizador final.
  • 17. Inserir um novo mariachi - formMariachi.php <html> <body> <form action="insert_mariachi.php" method="post"> Nome: <input type="text" name="nome" /> Alcunha: <input type="text" name="alcunha" /> Família: <select name="Familia_idFamilia”> <option value="1">Menezes</option> <option value="2">Rodriguez</option> <option value="3">Costa</option> </select> <input type="submit" /> </form> </body> </html> Os elementos de interação criados têm de ser gerados dinamicamente porque a informação pode mudar na BD!
  • 18. Drop down menu Para adicionar um drop down menu num formulário é necessário: • criar um recordset com os valores das chave primária e respetivos labels a listar no drop down menu • num ciclo, adicionar todas as opção ao elemento do tipo select, sendo: • o value é o valor da chave primária • o texto é o label extraído da BD
  • 19. Inserir um novo mariachi - formMariachi.php <?php $qFami = "SELECT * FROM Familia"; $rsFami = mysqli->query($qFami); ?> <form action="insert_mariachi.php" method="post"> Família: <select name="Familia_idFamilia”> <?php while ($row_rsFami = $rsFami->fetch_assoc()){ $option = ‘<option value=”‘ . $row_rsFami[“idFamilia"] . ’”>’ . $row_rsFami[“nomeFamilia"] . ‘</option>’; echo $option } ?> </select>
  • 20. Inserir um novo mariachi - formMariachi.php <form action="insert_mariachi.php" method="post"> Família: <select name="Familia_idFamilia”> <option value="0" selected>Escolha uma família</option> <?php while ($row_rsFami = $rsFami->fetch_assoc()){ $option = ‘<option value=”‘ . $row_rsFami[“idFamilia"] . ’”>’ . $row_rsFami[“nomeFamilia"] . ‘</option>’; echo $option } </select> ?> Neste exemplo, é obrigatório validar se o utilizador escolheu uma opção e nunca tentar inserir se isso não aconteceu!
  • 21. Inserir um novo mariachi $nome = $_POST[“nome”]; $alcunha = $_POST[“alcunha”]; $Familia_idFamilia = $_POST[“Familia_idFamilia”]; //Validação de dados de entrada em falta $query="INSERT INTO Mariachi (nome, alcunha, Familia_ifFamilia) VALUES ('$nome', '$alcunha', $Familia_idFamilia)"; if (!mysqli->query($query)) { // tratar condição de erro } else { // o que fazer se correr bem? }
  • 22. Problemas com encoding? na inserção na BD • utf8_encode($_POST['...']) na visualização na página • utf8_decode($row_rs['...'])
  • 23. E para inserir um novo relacionamento?
  • 24. Inserção em tabelas de M:N Regras a seguir • criar um recordset com elementos do lado M • criar um recordset com elementos do lado N • no formulário • utilizar esses recordsets para construir os drop down menus para cada uma das chaves estrangeiras da tabela Ou... • o processo de inserção pode ter passos anteriores que permitam saber à partida um dos elementos. Por exemplo, podia existir uma página anterior que obriga a escolher o mariachi.