18 - CRUD com php
Upcoming SlideShare
Loading in...5
×
 

18 - CRUD com php

on

  • 3,740 views

CRUD com php

CRUD com php

Statistics

Views

Total Views
3,740
Views on SlideShare
3,740
Embed Views
0

Actions

Likes
1
Downloads
56
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

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

18 - CRUD com php 18 - CRUD com php Presentation Transcript

  • CRUD com PHP 18 CRUD com PHP CRUD é o acrônimo da expressão em língua Inglesa Create, Retrieve, Update e Delete, usada para definir quatro operações básicas usadas em bancos de dados relacionais (RDBMS) ou em interface para usuários para criação, consulta, atualização e destruição de dados. pt.wikipedia.org/wiki/CRUD.
  • CRUD com PHP 18.1 Exercício com CRUD Para este exercício vamos alterar a tabela paises para incluir dois campo adicionais, a moeda e população. Alterar a tabela Paises Efectuamos a ligação à nossa base de dados, através da ligação pré-estabelcida no MySql Workbench.
  • CRUD com PHP 18.2 Exercício com CRUD Efectuamos um clique com o botão direito do rato sobre a tabela países e escolhemos “Alter Table”.
  • CRUD com PHP 18.3 Exercício com CRUD Escolhemos “Columns” e criamos os campos como no exemplo. Seguidamente, fazemos “Apply”, seguido de “Apply Sql” e depois “Finish” e “Close” para fechar a janela.
  • CRUD com PHP 18.4 Exercício com CRUD Fazemos refresh e verificamos as alterações efectuadas.
  • CRUD com PHP 18.5 Exercício com CRUD Criação do ficheiro index.php Este ficheiro vai conter o código inicial deste exemplo. Deve criar uma pasta chamada CRUD, e criar um ficheiro chamado index.php
  • CRUD com PHP 18.6 Exercício com CRUD <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body> Opções:<br/> <form action="introduzireditar.php" method="GET" name="paises"> <input type="submit" value="Introduzir" /> </form> <form action="listar.php" method="GET" name="paises"> <input type="submit" value="Listar" /> </form> </body> </html>
  • CRUD com PHP 18.7 Exercício com CRUD No slide anterior criamos uma página HTML básica que contém dois form, cada um com um botão, um para introduzir um novo país e outro para listar os países. Na opção de listar, vamos poder editar ou eliminar os países se o desejarmos. Deve criar uma pasta dentro da pasta CRUD, chamada “includes”, e copiar para dentro desta pasta o ficheiro config.php criado no último exemplo.
  • CRUD com PHP 18.8 Exercício com CRUD O exemplo do resultado do nosso código HTML para o ficheiro index.php é o seguinte:
  • CRUD com PHP 18.9 Exercício com CRUD Criar o ficheiro introduzireditar.php. Este ficheiro permitirá introduzir e editar novos países. O seu código HTML inicial é o seguinte: <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body> Introduzir os dados do País:<br />
  • CRUD com PHP 18.10 Exercício com CRUD <form action="introduzireditar.php" method="POST" name="introduzir"> <label for="nomepais">Nome País: </label> <input type="text" name="nomepais" value="" /> <br /> <label for="moedapais">Moeda: </label> <input type="text" name="moedapais" value="" /> <br /> <label for="populacaopais">População: </label> <input type="text" name="populacaopais" value="" /> <br /> <input type="submit" value="Gravar" />
  • CRUD com PHP 18.11 Exercício com CRUD </form> <a href="index.php">Voltar</a> </body> </html>
  • CRUD com PHP 18.12 Exercício com CRUD A nossa página ficará como o exemplo abaixo:
  • CRUD com PHP 18.13 Exercício com CRUD Introduzir o código PHP no ficheiro introduzireditar.php. Criar uma pasta chamada “include” e colocar dentro da pasta o ficheiro config.php. Introduzir o seguinte código no inicio do ficheiro introduzireditar.php, antes da primeira tag HTML e dentro das tags PHP <?php … ?>. <?php //inclui o ficheiro com as configurações da base de dados require_once("includes/config.php"); //efectua a conexão com os dados do ficheiro config.php $conexao = mysql_connect($dbhost, $dbuser, $dbpassword);
  • CRUD com PHP 18.14 Exercício com CRUD //testa se a conexão teve sucesso; se não teve dá erro e termina o script if (!$conexao) { die('Erro de conexão: ' . mysql_error()); } ?>
  • CRUD com PHP 18.15 Exercício com CRUD O código anterior efectua a ligação ao nosso servidor MySql usando as configurações do ficheiro config.php. A conexão é efectuada com a função mysql_connect(), que recebe os parâmetros para a ligação, o host onde reside a base de dados, o utilizador e password definidos. Um ponto importante é a verificação se a ligação foi bem sucedida, com a instrucção if (!conexao). Caso não tenha tido sucesso, o script é terminado com a mensagem „Erro de conexão‟ , seguido do respectivo erro do MySql.
  • CRUD com PHP 18.16 Exercício com CRUD Detectar um POST Como já deve ter reparado, o form contido no script introduzireditar.php, efectua um POST sobre si mesmo. A forma de sabermos que foi efectuado um POST e que o script deve recolher os valores de cada campo e efectuar a inserção dos dados na tabela é efectuado pela condição: if ($_SERVER["REQUEST_METHOD"] == "POST") { } Deve colocar a condição na segunda linha do script, logo a seguir a tag inicial do PHP <?php e fechar o if imediatamente antes da tag de fecho ?>.
  • CRUD com PHP 18.17 Exercício com CRUD Seleccionar a base de dados e o charset Devemos antes de manipular os nossos registos, seleccionar a base de dados com o comando: mysql_select_db($dbdatabase, $conexao); e definir o charset com a instrucção: mysql_set_charset('utf8',$conexao); Estas duas linhas devem ser colocadas a seguir à instrução: if (!$conexao) { die('Erro de conexão: ' . mysql_error()); }
  • CRUD com PHP 18.18 Exercício com CRUD Recolher os dados do array $_POST Neste passo vamos criar três variáveis auxiliares, que vão receber os dados do array $_POST, previamente “escapados” com a função mysql_real_escape_string() para prevenir sql injection. Colocar as instruções logo abaixo às do ponto anterior. $nomepais = mysql_real_escape_string($_POST["nomepais"]); $moedapais = mysql_real_escape_string($_POST["moedapais"]); $populacaopais = mysql_real_escape_string($_POST["populacaopais"]);
  • CRUD com PHP 18.19 Exercício com CRUD Criar o comando SQL para inserir os dados e testar se executou sem erros Inserir as intrucções abaixo, logo após as instrucções do ponto anterior. $sql = "INSERT INTO paises (nome_pais, moeda_pais, populacao_pais)" . " VALUES ('" . $nomepais . "', '" . $moedapais . "', " . $populacaopais . ")"; $insert = mysql_query($sql); if (!$insert) { echo $sql; echo 'Erro ao inserir o registo: ' . mysql_error(); }
  • CRUD com PHP 18.20 Exercício com CRUD Testar o script Nesta fase, já deve ser possível introduzir novos registos. Executar agora um teste.
  • CRUD com PHP 18.21 Exercício com CRUD Criar o script listar.php Este script mostrará uma lista dos países e as suas informações. Nesta lista será possível também efectuar a eliminação e edição de registos.
  • CRUD com PHP 18.22 Exercício com CRUD <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body> <table border="black"> <tr> <th>Nome País</th> <th>Moeda</th> <th>População</th> </tr>
  • CRUD com PHP 18.23 Exercício com CRUD <tr> <td></td> <td></td> <td></td> </tr> </table> <a href="index.php">Voltar</a> </body> </html>
  • CRUD com PHP 18.24 Exercício com CRUD Efectuar a ligação à base de dados Este passo é semelhante ao do exemplo anterior. Devem introduzir as instrucções abaixo dentro das tags do PHP: //inclui o ficheiro com as configurações da base de dados require_once("includes/config.php"); //efectua a conexão com os dados do ficheiro config.php $conexao = mysql_connect($dbhost, $dbuser, $dbpassword); //testa se a conexão teve sucesso; se não teve dá erro e termina o script if (!$conexao) { die('Erro de conexão: ' . mysql_error()); }
  • CRUD com PHP 18.25 Exercício com CRUD Seleccionar a base de dados e o charset À semelhança do ficheiro anterior, seleccionamos a base de dados e definimos o charset. Colocamos as instrucções abaixo logo a seguir às do ponto anterior: mysql_select_db("aulasphp", $conexao); mysql_set_charset('utf8',$conexao);
  • CRUD com PHP 18.26 Exercício com CRUD Definir o comando SQL a executar O comando que vamos executar deve mostrar todos os registos presentes na tabela paises. Para esse efecito, um simples select é suficiente. Colocar as intrucções a seguir às do ponto anterior. $sql = "SELECT * FROM paises"; $paises = mysql_query($sql);
  • CRUD com PHP 18.27 Exercício com CRUD Iterar sobre os registos Para iterarmos sobre os registos, necessitamos de um ciclo e de converter o resultado do nosso query sql num array associativo. Devem substituir o código HMTL seguinte: <tr> <td></td> <td></td> <td></td> </tr>
  • CRUD com PHP 18.28 Exercício com CRUD Iterar sobre os registos Para iterarmos sobre os registos, necessitamos de um ciclo e de converter o resultado do nosso query sql num array associativo. Devem substituir o código HMTL seguinte: <tr> <td></td> <td></td> <td></td> </tr>
  • CRUD com PHP 18.29 Exercício com CRUD Pelo seguinte código: <?php while($registos = mysql_fetch_array($paises)) { echo "<tr>n"; echo "<td>n"; echo $registos["nome_pais"]; echo "</td>n"; echo "<td>n"; echo $registos["moeda_pais"]; echo "</td>n"; echo "<td>n"; echo $registos["populacao_pais"]; echo "</td>n";
  • CRUD com PHP 18.30 Exercício com CRUD echo "<td>n"; echo "<form name="editar" action="editarpais.php" method="GET">"; echo "<input type="hidden" name="idpais" value="" . $registos["id_pais"] .""/>"; echo "<input type="submit" value="Editar"/>"; echo "</form>"; echo "</td>n"; echo "<td>n"; echo "<form name="eliminar" action="eliminarpais.php" method="GET">"; echo "<input type="hidden" name="idpais" value="" . $registos["id_pais"] .""/>"; echo "<input type="submit" value="Eliminar"/>"; echo "</form>"; echo "</td>n"; echo "</tr>n"; } ?>
  • CRUD com PHP 18.31 Exercício com CRUD Colocamos um novo header para a tabela com o texto opções. Onde temos o código: <tr> <th>Nome País</th> <th>Moeda</th> <th>População</th> </tr> Incluímos a linha: <th colspan="2">Opções</th> Imediatamente acima da tag </tr>. Com esta última linha de código, implementámos um método que permitirá efectuar a edição e eliminação de registos.
  • CRUD com PHP 18.32 Exercício com CRUD Criar o script editarpais.php Este script vai permitir que o registo seleccionado seja editado. Na prática, o utilizador ao seleccionar o botão “Editar” na página listar.php, vai chamar este script com o parâmetro do registo a editar. No script editar.php, vamos recuperar o id do registo, preencher os campos com o seu valor e permitir que o utilizador faça a respectiva alteração. A nível de SQL, será implementado um update ao registo.
  • CRUD com PHP 18.33 Exercício com CRUD Código do script editarpais.php Neste passo vamos criar um novo ficheiro editarpais.php e inluir o seguinte código HTML: <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF- 8"> </head> <body> Editar os dados do País:<br /> <form name="editar" action="introduzireditar.php" method="POST"> <label for="nomepais">Nome País: </label> <input type="text" name="nomepais" value="" /> <br />
  • CRUD com PHP 18.34 Exercício com CRUD <label for="moedapais">Moeda: </label> <input type="text" name="moedapais" value="" /> <br /> <label for="populacaopais">População: </label> <input type="text" name="populacaopais" value="" /> <br /> <input type="submit" name =“actualizar” value="Actualizar" /> </form> <a href="listar.php">Voltar</a> </body> </html>
  • CRUD com PHP 18.35 Exercício com CRUD Código PHP para extrair o ID do registo a editar Criar um bloco de código PHP logo acima da primeira linha HTML. Colocar o seguinte código: //testa se a variável superglobal foi inicializada if (!isset( $_GET["idpais"])) { die("Id do país não fornecido."); } //atribui o valor do campo escondido do form à variável $idPais = $_GET["idpais"]; //grava o id do pais numa sessão session_start(); $_SESSION["idpais"] = $idPais;
  • CRUD com PHP 18.36 Exercício com CRUD O código anterior primeiro testa se a variável idpais, do array superglobal existe. Se não existir, termina o script com erro. Se existir, o seu valor será guardado na sessão para mais tarde ser usado.
  • CRUD com PHP 18.37 Exercício com CRUD Seguidamente, colocamos o código abaixo: //inclui o ficheiro com as configurações da base de dados require_once("includes/config.php"); //efectua a conexão com os dados do ficheiro config.php $conexao = mysql_connect($dbhost, $dbuser, $dbpassword); //testa se a conexão teve sucesso; se não teve dá erro e termina o script if (!$conexao) { die('Erro de conexão: ' . mysql_error()); }
  • CRUD com PHP 18.38 Exercício com CRUD mysql_select_db("aulasphp", $conexao); mysql_set_charset('utf8',$conexao); $sql = "SELECT * FROM paises WHERE id_pais = " . mysql_real_escape_string($idPais); $paises = mysql_query($sql); if (mysql_num_rows($paises) == 0) { die("Registo não encontrado" ); } $registo = mysql_fetch_assoc($paises); $nomePais = $registo ["nome_pais"]; $moedaPais = $registo ["moeda_pais"]; $populacaoPais = $registo ["populacao_pais"];
  • CRUD com PHP 18.39 Exercício com CRUD Parte do código anterior já é conhecido. O query SQL executado pesquisa na tabela de países o país com o ID pretendido e atribui o resultado do query a um array associativo para podermos usar os campos.
  • CRUD com PHP 18.40 Exercício com CRUD Alteraçao dos inputs do formulário. Com os dados do registo já atribuídos a um array, podemos afixá-los no form, através do campo “value” de cada input do form. Alterar os inputs de acordo com as instrucções abaixo: <input type="text" name="nomepais" value="<?php echo $nomePais; ?>" /> <input type="text" name="moedapais" value="<?php echo $moedaPais; ?>" /> <input type="text" name="populacaopais" value="<?php echo $populacaoPais; ?>" />
  • CRUD com PHP 18.41 Exercício com CRUD Actualizar o script introduzireditar.php Este script deve ser alterado para servir não só para introduzir informação, mas também para permitir a edição dos mesmos. As alterações a efectuar são as seguintes: Detectar se foi efectuado um POST Como vamos usar o mesmo script para inserir e editar registos, necessitamos de testar se foi efectuado um POST. Caso não tenha sido feito um POST, o form é apresentado, se pelo contrário, tivermos efectuado um POST, vamos detectar se devemos fazer um insert ou um update. inserir o código seguinte no início do script introduzireditar.php:
  • CRUD com PHP 18.42 Exercício com CRUD if ($_SERVER["REQUEST_METHOD"] == "POST") { //inclui o ficheiro com as configurações da base de dados require_once("includes/config.php"); //efectua a conexão com os dados do ficheiro config.php $conexao = mysql_connect($dbhost, $dbuser, $dbpassword); //testa se a conexão teve sucesso; se não teve dá erro e termina o script if (!$conexao) { die('Erro de conexão: ' . mysql_error()); } mysql_select_db("aulasphp", $conexao); mysql_set_charset('utf8',$conexao);
  • CRUD com PHP 18.43 Exercício com CRUD O código anterior testa se foi efectuado um POST, efectua o require das configurações da ligação à base de dados, e termina o script se a ligação não for efectuada, é feita também a selecção da base de dados e definido o charset da ligação.
  • CRUD com PHP 18.44 Exercício com CRUD Efectuar insert ou update? O próximo bloco de código vai permitir efectuar um insert ou update, dependendo de uma condição. Vejamos o código seguinte, que deve ser inserido logo após a última instrucção do código anterior.
  • CRUD com PHP 18.45 Exercício com CRUD if (array_key_exists("actualizar", $_POST)) { session_start(); $idPais = mysql_real_escape_string($_SESSION["idpais"]); $nomepais = mysql_real_escape_string($_POST["nomepais"]); $moedapais = mysql_real_escape_string($_POST["moedapais"]); $populacaopais = mysql_real_escape_string($_POST["populacaopais"]); $sql = "UPDATE paises SET nome_pais = '" . $nomepais . "', moeda_pais = " . $moedapais . " , populacao_pais = " . $populacaopais . " WHERE id_pais = " . $idPais; $update = mysql_query($sql); if (!$update) { echo $sql; echo 'Erro ao actualizar o registo: ' . mysql_error(); } }
  • CRUD com PHP 18.46 Exercício com CRUD else { $nomePais = mysql_real_escape_string($_POST["nomepais"]); $moedaPais = mysql_real_escape_string($_POST["moedapais"]); $populacaoPais = mysql_real_escape_string($_POST["populacaopais"]); $sql = "INSERT INTO paises (nome_pais, moeda_pais, populacao_pais)" . " VALUES ('" . $nomePais . "', '" . $moedaPais . "', " . $populacaoPais . ")"; $insert = mysql_query($sql); if (!$insert) { echo $sql; echo 'Erro ao inserir o registo: ' . mysql_error(); } }
  • CRUD com PHP 18.47 Exercício com CRUD Este código que introduzimos é responsável pelo seguinte: Testar de onde vem o POST Testa se no array superglobal $_POST existe uma chave com o nome “actualizar”. Isto é efectuado com a função array_key_exists(). Se existir esta chave, significa que o POST foi efectuado do form no script editarpais.php. O código HTML responsável por esta acção é seguinte: <input type="submit" name="actualizar" value="Actualizar" /> O POST contém a chave “actualizar” Se o POST contém a chave actualizar, devemos recuperar os dados submetidos pelo form do array $_POST, e recuperar também da sessão o ID do registo que desejamos alterar, que foi guardado préviamente no script editarpais.php.O código responsável por estas acções é o exposto abaixo: session_start(); $idPais = mysql_real_escape_string($_SESSION["idpais"]); $nomepais = mysql_real_escape_string($_POST["nomepais"]); $moedapais = mysql_real_escape_string($_POST["moedapais"]); $populacaopais = mysql_real_escape_string($_POST["populacaopais"]);
  • CRUD com PHP 18.48 Exercício com CRUD Construir o query SQL e efectuar o UPDATE No código abaixo, vamos construir o nosso query SQL e executá-lo: $sql = "UPDATE paises SET nome_pais = '" . $nomepais . "', moeda_pais = " . $moedapais . " , populacao_pais = " . $populacaopais . “ WHERE id_pais = " . $idPais; $update = mysql_query($sql); if (!$update) { echo 'Erro ao actualizar o registo: ' . mysql_error(); } } E assim conclui a parte do código para editar um registo. Seguidamente vamos verificar como podemos inserir um novo registo.
  • CRUD com PHP 18.49 Exercício com CRUD Inserir um novo registo A inserção de um novo registo será efectuada sempre como alternativa à condição. Resumidamente o que será efectuado será uma edição de um registo, caso no array $_POST exista a chave “actualizar”, se não existir, será efectuado uma inserção de um novo registo. if (array_key_exists("actualizar", $_POST)) { // Editar o registo } else { // inserir o registo }
  • CRUD com PHP 18.50 Exercício com CRUD Devemos introduzir o código abaixo no “else” da condição: $nomePais = mysql_real_escape_string($_POST["nomepais"]); $moedaPais = mysql_real_escape_string($_POST["moedapais"]); $populacaoPais = mysql_real_escape_string($_POST["populacaopais"]); $sql = "INSERT INTO paises (nome_pais, moeda_pais, populacao_pais)" . " VALUES ('" . $nomePais . "', '" . $moedaPais . "', " . $populacaoPais . ")"; $insert = mysql_query($sql); if (!$insert) { echo 'Erro ao inserir o registo: ' . mysql_error(); } } Este pedaço de código é semelhante ao anterior, sendo que a principal diferença situa-se no facto de ser efectuado um INSERT em vez de um UPDATE.
  • CRUD com PHP 18.51 Exercício com CRUD Devemos introduzir o código abaixo no “else” da condição: $nomePais = mysql_real_escape_string($_POST["nomepais"]); $moedaPais = mysql_real_escape_string($_POST["moedapais"]); $populacaoPais = mysql_real_escape_string($_POST["populacaopais"]); $sql = "INSERT INTO paises (nome_pais, moeda_pais, populacao_pais)" . " VALUES ('" . $nomePais . "', '" . $moedaPais . "', " . $populacaoPais . ")"; $insert = mysql_query($sql); if (!$insert) { echo 'Erro ao inserir o registo: ' . mysql_error(); } } Este pedaço de código é semelhante ao anterior, sendo que a principal diferença situa-se no facto de ser efectuado um INSERT em vez de um UPDATE.
  • CRUD com PHP 18.52 Exercício com CRUD O script eliminarpais.php Para completar o nosso exercício, falta implementar uma forma de eliminar registos. A implementação desta funcionalidade ficará a cargo dos formandos. Nota: a solução será fornecida com o material deste curso.