SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
PHP + MySQL: insert, update e delete
Carlos Santos
LabMM 4 - NTC - DeCA - UA
Aula 21, 15-05-2013
Inserção complexa
Como inserir um novo CD na seguinte BD?
Formulário de inserção
Possível estrutura para o formulário:
• campo de texto: título CD
• drop down menu: editora
• drop down menu: interprete
• drop down menu: classificação
E os estilos a associar ao CD?
• relação de muitos para muitos
• na introdução o utilizador pode querer introduzir vários estilos
Formulário de inserção
Possível estrutura para o formulário:
• campo de texto: título CD
• drop down menu: editora
• drop down menu: interprete
• drop down menu: classificação
• check boxes: estilos
Formulário de inserção (HTML)
drop down menus (select ... option)
• value = valor da chave primária (id) do elemento
• label text = descrição do elemento
check boxes
• <input type=”checkbox” name=”campo[ ]” value=”idvalue1” />label1
<input type=”checkbox” name=”campo[ ]” value=”idvalue2” />label2
• nos resultados do post:
• $_POST[“campo”] é um array com todos os valores selecionados nas
checkboxes do formulário
• mais info: http://www.html-form-guide.com/php-form/php-form-
checkbox.html
Na inserção em PHP
Para cada instrução só é possível inserir um registo e numa única tabela!
• Inserir novo registo na tabela “cd”
• “titulo”, “editora_id”, “interprete_id” e “classificacao_id”
• obter chave primária do novo CD e guardar!
• mysqli->insert_id; // chamar logo a seguir ao insert
• Para cada estilo escolhido:
• inserir um novo registo na tabela “cd_estilo”
• utilizar sempre o id do CD introduzido anteriormente e o id de cada
uma das checkboxes selecionadas pelo utilizador no formulário
Remover registos
A remoção de um registo não pode violar as regras de integridade
referencial da BD
• se adequado, substituir a remoção pela colocação do registo num estado
inativo (através dum campo booleano na tabela)
• é necessário adequar todas as queries para terem em conta o estado dos
registos (para os mostrar ou não…)
Remover registos
Remoção de registos com a passagem de parâmetro/valor na Query
String
• id do registo a remover (apagar_familia.php?id=3)
• confirmar previamente a remoção por JS (client-side) -> “Quer mesmo
apagar a família X?”
Para uma maior segurança na remoção de registos da BD
• verificar sempre se o utilizador possui as necessárias permissões -> perfis
utilizadores
• não expor na Query String o parâmetro/valor que possibilita a edição ->
variáveis sessão ($_SESSION[“parametro”] = valor)
• qual a diferença entre uma variável “normal” e uma variável de sessão?
Remover registos
apagar_familia.php?id=3
• verificar a passagem do parâmetro/valor na Query String
• validar se é possível apagar (existe alguma chave estrangeira que tenha
uma referência a este valor?)
• apagar o registo
• dar feedback ao utilizador sobre o sucesso (ou não) da remoção!!
$idFam = $_GET["id"];
//Validações!
$query = "DELETE FROM Familia WHERE idFamilia =".$idFam;
$rsFami = mysqli->query($query);
//Feedback final
Editar registos
Edição de registos com a passagem de parâmetro/valor na Query String
• id do registo a editar (editar_familia.php?id=5)
• o id é obtido através do URL que se constrói na interface de escolha para
edição
Para uma maior segurança na edição de registos da BD
• Verificar sempre se o utilizador possui as necessárias permissões -> perfis
utilizadores
• Não expor na Query String o parâmetro/valor que possibilita a edição ->
variáveis sessão
Editar registos
O que é que tem de mudar entre um formulário para adicionar um registo
e um formulário para editar um registo?
• num formulário para adicionar
• não há um campo para a chave primária porque esse valor não existe e
não é escolhido pelo utilizador (auto incremento)
• por defeito, os campos devem estar vazios
• num formulário para editar
• o valor da chave primária é essencial para atualizar o registo correto na
BD!
• pode optar-se por ter um campo do tipo hidden no formulário para
armazenar o valor da chave primária
• os campos devem aparecer pré-preenchidos com os valores atuais do
registo
Formulário
Passos para construir um formulário de edição:
• construir um recordset com os valores do registo em edição
• adicionar todos os elementos como no formulário de inserção (drop down
menus)
• inicializar todos os campos com os valores do registo em edição
• adicionar um hidden field com o valor da chave primária do registo
$query = "UPDATE tabela
SET campo1 = "valor1", campo2 = valor2
WHERE chavePrimária = valorChavePrimária;;
$rsUpdate = mysqli->query($query);
Inserções em múltiplas tabelas
No formulário para adicionar um CD queremos permitir escolher um
interprete já existente ou adicionar um novo
• no formulário:
manter o drop down para escolher um interprete
adicionar um campo de texto para indicar um novo interprete
• no script de inserção
verificar se foi introduzido algo no campo do novo interprete
se foi -> verificar se esse interprete já existe na BD
se existir -> usar o ID (PK) do interprete já existente
se não existir -> inserir novo interprete na tabela “interprete”
obter o ID (PK) dessa inserção
se não foi -> utilizar a opção selecionada no dropdown menu
inserir o novo CD na tabela “cd”

Mais conteúdo relacionado

Mais procurados

Aula 05 banco de dados em asp.net (site do administrador - alterar e excluir)
Aula 05   banco de dados em asp.net (site do administrador - alterar e excluir)Aula 05   banco de dados em asp.net (site do administrador - alterar e excluir)
Aula 05 banco de dados em asp.net (site do administrador - alterar e excluir)
Gabriel Bugano
 
Etec ai -32- teclas de atalho
Etec   ai -32- teclas de atalhoEtec   ai -32- teclas de atalho
Etec ai -32- teclas de atalho
Nutsha De luca
 
Formulários para Plone: um passeio pelo framework z3c.form
Formulários para Plone: um passeio pelo framework z3c.formFormulários para Plone: um passeio pelo framework z3c.form
Formulários para Plone: um passeio pelo framework z3c.form
Ruda Filgueiras
 

Mais procurados (14)

Teclas de-atalho-access
Teclas de-atalho-accessTeclas de-atalho-access
Teclas de-atalho-access
 
Principais atalhos do windows
Principais atalhos do windowsPrincipais atalhos do windows
Principais atalhos do windows
 
Aula 250309
Aula 250309Aula 250309
Aula 250309
 
Teclas de atalho
Teclas de atalho Teclas de atalho
Teclas de atalho
 
Teclas de atalho para o microsoft word
Teclas de atalho para o microsoft wordTeclas de atalho para o microsoft word
Teclas de atalho para o microsoft word
 
Atalhos de teclado
Atalhos de tecladoAtalhos de teclado
Atalhos de teclado
 
Teclas de atalho
Teclas de atalhoTeclas de atalho
Teclas de atalho
 
Workshop totvs report
Workshop totvs reportWorkshop totvs report
Workshop totvs report
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos Comandos
 
Aula 05 banco de dados em asp.net (site do administrador - alterar e excluir)
Aula 05   banco de dados em asp.net (site do administrador - alterar e excluir)Aula 05   banco de dados em asp.net (site do administrador - alterar e excluir)
Aula 05 banco de dados em asp.net (site do administrador - alterar e excluir)
 
Criando um banco de dados com MySQL Workbench
Criando um banco de dados com MySQL WorkbenchCriando um banco de dados com MySQL Workbench
Criando um banco de dados com MySQL Workbench
 
Norato Framework
Norato FrameworkNorato Framework
Norato Framework
 
Etec ai -32- teclas de atalho
Etec   ai -32- teclas de atalhoEtec   ai -32- teclas de atalho
Etec ai -32- teclas de atalho
 
Formulários para Plone: um passeio pelo framework z3c.form
Formulários para Plone: um passeio pelo framework z3c.formFormulários para Plone: um passeio pelo framework z3c.form
Formulários para Plone: um passeio pelo framework z3c.form
 

Semelhante a LabMM4 (T21 - 12/13) - insert, delete e update

(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript
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
 
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptxintroduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
SaraR49
 
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
 
T04_LM3: Javascript (2013-2014)
T04_LM3: Javascript (2013-2014)T04_LM3: Javascript (2013-2014)
T04_LM3: Javascript (2013-2014)
Carlos Santos
 
Criação de log de ações através do banco
Criação de log de ações através do bancoCriação de log de ações através do banco
Criação de log de ações através do banco
Marcos Thomaz
 

Semelhante a LabMM4 (T21 - 12/13) - insert, delete e update (20)

Html5 Aula 4
Html5 Aula 4Html5 Aula 4
Html5 Aula 4
 
07 sql - parte 01
07   sql - parte 0107   sql - parte 01
07 sql - parte 01
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript
 
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
 
SQL.ppt
SQL.pptSQL.ppt
SQL.ppt
 
Otimizando a performance com in memory no sql 2016
Otimizando a performance com in memory no sql 2016Otimizando a performance com in memory no sql 2016
Otimizando a performance com in memory no sql 2016
 
PHP MySQL Aula 07
PHP MySQL Aula 07PHP MySQL Aula 07
PHP MySQL Aula 07
 
Banco de dados comandos sql
Banco de dados   comandos sqlBanco de dados   comandos sql
Banco de dados comandos sql
 
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptxintroduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
 
Modulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptxModulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptx
 
Produtividade com Eclipse IDE
Produtividade com Eclipse IDEProdutividade com Eclipse IDE
Produtividade com Eclipse IDE
 
LabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaLabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurança
 
Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
 
Boas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de DadosBoas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de Dados
 
Replicação Lógica no PostgreSQL 10
Replicação Lógica no PostgreSQL 10Replicação Lógica no PostgreSQL 10
Replicação Lógica no PostgreSQL 10
 
Curso HTML 5 - Aula com Formulários, Imagens, Áudio e Vídeo
Curso HTML 5 - Aula com Formulários, Imagens, Áudio e VídeoCurso HTML 5 - Aula com Formulários, Imagens, Áudio e Vídeo
Curso HTML 5 - Aula com Formulários, Imagens, Áudio e Vídeo
 
T04_LM3: Javascript (2013-2014)
T04_LM3: Javascript (2013-2014)T04_LM3: Javascript (2013-2014)
T04_LM3: Javascript (2013-2014)
 
Criação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQLCriação de log de ações através do banco - PostgreSQL
Criação de log de ações através do banco - PostgreSQL
 
Criação de log de ações através do banco
Criação de log de ações através do bancoCriação de log de ações através do banco
Criação de log de ações através do banco
 
Agbd aula4 sql_ddl
Agbd aula4 sql_ddlAgbd aula4 sql_ddl
Agbd aula4 sql_ddl
 

Mais de 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
 

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

Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
rfmbrandao
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
Autonoma
 
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
 
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
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 

Último (20)

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
 
Novena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João EudesNovena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João Eudes
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
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...
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
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
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx
 
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...
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)
 
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çã...
 
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...
 
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
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União Europeia
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
 

LabMM4 (T21 - 12/13) - insert, delete e update

  • 1. PHP + MySQL: insert, update e delete Carlos Santos LabMM 4 - NTC - DeCA - UA Aula 21, 15-05-2013
  • 2. Inserção complexa Como inserir um novo CD na seguinte BD?
  • 3. Formulário de inserção Possível estrutura para o formulário: • campo de texto: título CD • drop down menu: editora • drop down menu: interprete • drop down menu: classificação E os estilos a associar ao CD? • relação de muitos para muitos • na introdução o utilizador pode querer introduzir vários estilos
  • 4. Formulário de inserção Possível estrutura para o formulário: • campo de texto: título CD • drop down menu: editora • drop down menu: interprete • drop down menu: classificação • check boxes: estilos
  • 5. Formulário de inserção (HTML) drop down menus (select ... option) • value = valor da chave primária (id) do elemento • label text = descrição do elemento check boxes • <input type=”checkbox” name=”campo[ ]” value=”idvalue1” />label1 <input type=”checkbox” name=”campo[ ]” value=”idvalue2” />label2 • nos resultados do post: • $_POST[“campo”] é um array com todos os valores selecionados nas checkboxes do formulário • mais info: http://www.html-form-guide.com/php-form/php-form- checkbox.html
  • 6. Na inserção em PHP Para cada instrução só é possível inserir um registo e numa única tabela! • Inserir novo registo na tabela “cd” • “titulo”, “editora_id”, “interprete_id” e “classificacao_id” • obter chave primária do novo CD e guardar! • mysqli->insert_id; // chamar logo a seguir ao insert • Para cada estilo escolhido: • inserir um novo registo na tabela “cd_estilo” • utilizar sempre o id do CD introduzido anteriormente e o id de cada uma das checkboxes selecionadas pelo utilizador no formulário
  • 7. Remover registos A remoção de um registo não pode violar as regras de integridade referencial da BD • se adequado, substituir a remoção pela colocação do registo num estado inativo (através dum campo booleano na tabela) • é necessário adequar todas as queries para terem em conta o estado dos registos (para os mostrar ou não…)
  • 8. Remover registos Remoção de registos com a passagem de parâmetro/valor na Query String • id do registo a remover (apagar_familia.php?id=3) • confirmar previamente a remoção por JS (client-side) -> “Quer mesmo apagar a família X?” Para uma maior segurança na remoção de registos da BD • verificar sempre se o utilizador possui as necessárias permissões -> perfis utilizadores • não expor na Query String o parâmetro/valor que possibilita a edição -> variáveis sessão ($_SESSION[“parametro”] = valor) • qual a diferença entre uma variável “normal” e uma variável de sessão?
  • 9. Remover registos apagar_familia.php?id=3 • verificar a passagem do parâmetro/valor na Query String • validar se é possível apagar (existe alguma chave estrangeira que tenha uma referência a este valor?) • apagar o registo • dar feedback ao utilizador sobre o sucesso (ou não) da remoção!! $idFam = $_GET["id"]; //Validações! $query = "DELETE FROM Familia WHERE idFamilia =".$idFam; $rsFami = mysqli->query($query); //Feedback final
  • 10. Editar registos Edição de registos com a passagem de parâmetro/valor na Query String • id do registo a editar (editar_familia.php?id=5) • o id é obtido através do URL que se constrói na interface de escolha para edição Para uma maior segurança na edição de registos da BD • Verificar sempre se o utilizador possui as necessárias permissões -> perfis utilizadores • Não expor na Query String o parâmetro/valor que possibilita a edição -> variáveis sessão
  • 11. Editar registos O que é que tem de mudar entre um formulário para adicionar um registo e um formulário para editar um registo? • num formulário para adicionar • não há um campo para a chave primária porque esse valor não existe e não é escolhido pelo utilizador (auto incremento) • por defeito, os campos devem estar vazios • num formulário para editar • o valor da chave primária é essencial para atualizar o registo correto na BD! • pode optar-se por ter um campo do tipo hidden no formulário para armazenar o valor da chave primária • os campos devem aparecer pré-preenchidos com os valores atuais do registo
  • 12. Formulário Passos para construir um formulário de edição: • construir um recordset com os valores do registo em edição • adicionar todos os elementos como no formulário de inserção (drop down menus) • inicializar todos os campos com os valores do registo em edição • adicionar um hidden field com o valor da chave primária do registo $query = "UPDATE tabela SET campo1 = "valor1", campo2 = valor2 WHERE chavePrimária = valorChavePrimária;; $rsUpdate = mysqli->query($query);
  • 13. Inserções em múltiplas tabelas No formulário para adicionar um CD queremos permitir escolher um interprete já existente ou adicionar um novo • no formulário: manter o drop down para escolher um interprete adicionar um campo de texto para indicar um novo interprete • no script de inserção verificar se foi introduzido algo no campo do novo interprete se foi -> verificar se esse interprete já existe na BD se existir -> usar o ID (PK) do interprete já existente se não existir -> inserir novo interprete na tabela “interprete” obter o ID (PK) dessa inserção se não foi -> utilizar a opção selecionada no dropdown menu inserir o novo CD na tabela “cd”