PHP MySQL Aula 04
Upcoming SlideShare
Loading in...5
×
 

PHP MySQL Aula 04

on

  • 1,502 views

 

Statistics

Views

Total Views
1,502
Views on SlideShare
1,502
Embed Views
0

Actions

Likes
0
Downloads
101
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

PHP MySQL Aula 04 PHP MySQL Aula 04 Presentation Transcript

  • PHP + MySQL: insert, update e deleteCarlos SantosLabMM 4 - NTC - DeCA - UAAula PHP+MySQL 04, 10-05-2012
  • inserção complexaComo inserir um novo CD na seguinte BD?
  • FormulárioPossível estrutura para o formulário: • campo de texto: título CD • drop down menu: editora • drop down menu: interprete • drop down menu: classificaçãoE os estilos a associar ao CD? • relação de muitos para muitos • na introdução o utilizador pode querer selecionar logo vários estilos
  • FormulárioPossí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áriodrop down menus (select ... option) • value = valor da chave primária (id) do elemento • label text = descrição do elementocheck 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 no formulário • mais info: http://www.html-form-guide.com/php-form/php-form- checkbox.html
  • na inserção em PHPPara 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! • mysql_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 registosA remoção de um registo não pode violar as regras de integridadereferencial 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 registosRemoção de registos com a passagem de parâmetro/valor na QueryString • 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 registosapagar_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 = mysql_query($query , $connection);//Feedback final
  • Editar registosEdiçã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çãoPara 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 registosO que é que tem de mudar entre um formulário para adicionar um registoe 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 preenchidos com os valores atuais do registo
  • FormulárioPassos 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 = mysql_query($query , $connection);
  • Inserções em múltiplas tabelasNo formulário para adicionar um CD pretende-se permitir escolher uminterprete 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”