| // |
| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| // |
| |
| = Criando uma Aplicação Orientada pelo Banco de Dados com o PHP |
| :jbake-type: tutorial |
| :jbake-tags: tutorials |
| :jbake-status: published |
| :icons: font |
| :syntax: true |
| :source-highlighter: pygments |
| :toc: left |
| :toc-title: |
| :description: Criando uma Aplicação Orientada pelo Banco de Dados com o PHP - Apache NetBeans |
| :keywords: Apache NetBeans, Tutorials, Criando uma Aplicação Orientada pelo Banco de Dados com o PHP |
| |
| = Lição 7: Atualizando e Deletando Entradas no Banco de Dados |
| :jbake-type: tutorial |
| :jbake-tags: tutorials |
| :jbake-status: published |
| :icons: font |
| :syntax: true |
| :source-highlighter: pygments |
| :toc: left |
| :toc-title: |
| :description: Lição 7: Atualizando e Deletando Entradas no Banco de Dados - Apache NetBeans |
| :keywords: Apache NetBeans, Tutorials, Lição 7: Atualizando e Deletando Entradas no Banco de Dados |
| |
| |
| Nesta lição, você expandirá a funcionalidade da aplicação com duas funcionalidades: |
| |
| |
| Para implementar essas funcionalidades, edite os arquivos `editWishList.php` e `editWish.php` . Crie também um novo arquivo chamado `deleteWish.php` . |
| |
| image::images/page-flow-diagram-l7.png[] |
| |
| O documento atual é uma parte do tutorial Criando uma Aplicação CRUD no NetBeans IDE para PHP. |
| |
| |
| == Código-fonte da Aplicação da Lição Anterior |
| |
| Usuários MySQL: clique link:https://netbeans.org/files/documents/4/1932/lesson6.zip[+aqui+] para fazer o download do código-fonte que reflete o estado do projeto depois que a lição anterior estiver concluída. |
| |
| Usuários do banco de dados Oracle: clique link:https://netbeans.org/projects/www/downloads/download/php%252Foracle-lesson6.zip[+aqui+] para fazer o download do código-fonte que reflete o estado do projeto depois que a lição anterior for concluída. |
| |
| |
| == Editando um Desejo |
| |
| A funcionalidade suporta o seguinte caso de uso: |
| |
| * Na página `editWishList.php` , o usuário pressiona o botão Editar à direita de um desejo. A página `editWish.php` com os dados do desejo selecionado abre. |
| * O usuário altera a descrição e/ou a data de vencimento do desejo e pressiona o botão Salvar Alterações. |
| * Se a descrição _não_ for preenchida, uma mensagem de erro é exibida e o usuário retorna para a página `editWish.php` . |
| * Se a descrição for preenchida, a aplicação retorna à página `editWishList.php` , onde o desejo é atualizado. |
| |
| A implementação consiste nas seguintes etapas: |
| |
| * <<_implementing_the_edit_button,Adicionar um botão Editar na página editWishList>> |
| * <<_expanding_the_code_wish_code_array,Na página editWish.php, atualizar o array $wish para armazenar os dados do desejo>> |
| * <<_updating_the_html_input_form,Atualizar o form de entrada na página editWish.php>> |
| * <<_updating_the_wish_in_the_database,Validar os dados enviados e atualizar o desejo no banco de dados>> |
| |
| |
| === Implementando o Botão Editar |
| |
| Em `editWishList.php` , uma tabela com os desejos de um wisher é implementada por um loop (uma instrução `while` ) que exibe linhas com desejos enquanto os desejos são selecionados no banco de dados. Adicione um botão Editar como a célula da extrema direita em uma linha. |
| |
| 1. Para transferir o ID de um desejo usando o form de entrada HTML, armazene-o em uma variável. Insira a seguinte linha de código no fim do loop `while` : |
| |
| [source,php] |
| ---- |
| while ($row = mysqli_fetch_array($result)): |
| echo "<tr><td>" . htmlentities($row['description']) . "</td>"; |
| echo "<td>" . htmlentities($row['due_date']) . "</td>"; |
| $wishID = $row['id']; |
| echo "<td>WishID=" . $wishID . "</td>"; |
| //The loop is left open |
| ?> |
| ---- |
| |
| [start=2] |
| . Implemente o botão Editar. Adicione outra célula à tabela antes de fechar a tag </table> com o form editWish. Esse form contém um componente botão e um componente oculto que envia o valor `$wishID` ao clicar no botão. (O código para o banco de dados MySQL é mostrado, mas o código adicionado é o mesmo, no mesmo local, para o banco de dados Oracle). |
| |
| [source,php] |
| ---- |
| |
| Hello <?php echo $_SESSION["user"]; ?><br/> |
| <table border="black"> |
| <tr><th>Item</th><th>Due Date</th></tr> |
| <?php |
| require_once("Includes/db.php"); |
| $wisherID = WishDB::getInstance()->get_wisher_id_by_name($_SESSION["user"]); |
| $result = WishDB::getInstance()->get_wishes_by_wisher_id($wisherID); |
| while ($row = mysqli_fetch_array($result)) { |
| echo "<tr><td>" . htmlentities($row["description"]) . "</td>"; |
| echo "<td>" . htmlentities($row["due_date"]) . "</td></tr>\n"; |
| } |
| mysqli_free_result($result); |
| ?> |
| <td> |
| <form name="editWish" action="editWish.php" method="GET"> |
| <input type="hidden" name="wishID" value="<?php echo $wishID; ?>"> |
| <input type="submit" name="editWish" value="Edit"> |
| </form> |
| </td> |
| </table> |
| ---- |
| |
| |
| [start=3] |
| . Altere o loop `while` para usar a link:http://www.php.net/manual/en/control-structures.alternative-syntax.php[+sintaxe alternativa+]. Isso facilita a execução de blocos HTML dentro do loop `while` . Na sintaxe alternativa do loop `while` , as chaves de abertura { são substituídas por dois-pontos : e as chaves de fechamento } são substituídas pela instrução `endwhile;` . Substitua as chaves de abertura por dois-pontos, delete as chaves de fechamento e adicione um novo bloco PHP antes da tag de fechamento </table> com a instrução `endwhile;` . Isso incorpora a nova célula da tabela para o loop `while` . Mova o código instrução livre/resultado para após a instrução `endwhile.` (O código para o MySQL é exibido novamente, mas o código muda e o local é o mesmo para o banco de dados da Oracle). |
| |
| [source,php] |
| ---- |
| |
| while ($row = mysqli_fetch_array($result)){: |
| echo "<tr><td>" . htmlentities($row["description"]) . "</td>"; |
| echo "<td>" . htmlentities($row["due_date"]) . "</td></tr>\n"; |
| } |
| mysqli_free_result($result); |
| ?> |
| <td> |
| <form name="editWish" action="editWish.php" method="GET"> |
| <input type="hidden" name="wishID" value="<?php echo $wishID; ?>"> |
| <input type="submit" name="editWish" value="Edit"> |
| </form> |
| </td> |
| <?php |
| endwhile; |
| mysqli_free_result($result); |
| ?> |
| </table> |
| ---- |
| |
| [start=4] |
| . |
| Conserte a sintaxe da linha da tabela. Mova os caracteres de final de linha </tr>\n da instrução de exibição de data de vencimento para a nova instrução logo acima do `endwhile;` . |
| |
| |
| [source,php] |
| ---- |
| |
| while ($row = mysqli_fetch_array($result)): |
| echo "<tr><td>" . htmlentities($row["description"]) . "</td>"; |
| echo "<td>" . htmlentities($row["due_date"]) . "</td></tr>\n"; |
| ?> |
| <td> |
| <form name="editWish" action="editWish.php" method="GET"> |
| <input type="hidden" name="wishID" value="<?php echo $wishID; ?>"> |
| <input type="submit" name="editWish" value="Edit"> |
| </form> |
| </td> |
| <?php |
| echo "</tr>\n"; |
| endwhile; |
| mysqli_free_result($result); |
| ?> |
| </table> |
| ---- |
| |
| [start=5] |
| . |
| A tabela inteira, incluindo o form com o botão Editar dentro do loop `while ` , agora tem a seguinte aparência: |
| |
| *Para o banco de dados MySQL:* |
| |
| |
| [source,php] |
| ---- |
| |
| <table border="black"> |
| <tr><th>Item</th><th>Due Date</th></tr> |
| <?php |
| require_once("Includes/db.php"); |
| $wisherID = WishDB::getInstance()->get_wisher_id_by_name($_SESSION["user"]); |
| $result = WishDB::getInstance()->get_wishes_by_wisher_id($wisherID); |
| while($row = mysqli_fetch_array($result)): |
| echo "<tr><td>" . htmlentities($row['description']) . "</td>"; |
| echo "<td>" . htmlentities($row['due_date']) . "</td>"; |
| $wishID = $row["id"]; |
| ?> |
| <td> |
| <form name="editWish" action="editWish.php" method="GET"> |
| <input type="hidden" name="wishID" value="<?php echo $wishID; ?>"/> |
| <input type="submit" name="editWish" value="Edit"/> |
| </form> |
| </td> |
| <?php |
| echo "</tr>\n"; |
| endwhile; |
| mysqli_free_result($result); |
| ?> |
| </table> |
| ---- |
| |
| *Para banco de dados Oracle:* |
| |
| |
| [source,php] |
| ---- |
| |
| <table border="black"> |
| <tr><th>Item</th><th>Due Date</th></tr> |
| <?php |
| require_once("Includes/db.php"); |
| $wisherID = WishDB::getInstance()->get_wisher_id_by_name($_SESSION["user"]); |
| $stid = WishDB::getInstance()->get_wishes_by_wisher_id($wisherID); |
| while ($row = oci_fetch_array($stid)): |
| echo "<tr><td>" . htmlentities($row["DESCRIPTION"]) . "</td>"; |
| echo "<td>" . htmlentities($row["DUE_DATE"]) . "</td>"; |
| $wishID = $row["ID"]; |
| ?> |
| <td> |
| <form name="editWish" action="editWish.php" method="GET"> |
| <input type="hidden" name="wishID" value="<?php echo $wishID; ?>"/> |
| <input type="submit" name="editWish" value="Edit"/> |
| </form> |
| </td> |
| <td> |
| <form name="deleteWish" action="deleteWish.php" method="POST"> |
| <input type="hidden" name="wishID" value="<?php echo $wishID; ?>"/> |
| <input type="submit" name="deleteWish" value="Delete"/> |
| </form> |
| </td> |
| <?php |
| echo "</tr>\n"; |
| endwhile; |
| oci_free_statement($stid); |
| ?> |
| </table> |
| ---- |
| |
| |
| === Expandindo o Array `$wish` |
| |
| Quando o botão Editar é pressionado na página `editWishList.php` , o wisher ID selecionado é transferido para a página `editWish.php` usando o método de Solicitação de Servidor GET. Para armazenar o wisher ID, você precisa adicionar um novo elemento ao array `$wish` . |
| |
| Como acontece quando um novo desejo é adicionado, o form de entrada pode ser acessado da página `editWishList.php` e da página `editWish.php` após uma tentativa malsucedida de salvar. Os casos são distinguidos pelo método de Solicitação de Servidor por meio do qual os dados são transferidos. O GET indica que o form é exibido quando o usuário chega pela primeira vez à página, pressionando Editar Desejo. O POST indica que o usuário é redirecionado para o form após tentar salvar um desejo sem uma descrição. |
| |
| Em `editWish.php` , substitua o bloco PHP na tag HTML <body> acima do form de entrada `EditWish` com o código expandido para o array `$wish` . |
| |
| *Para o banco de dados MySQL:* |
| |
| |
| [source,php] |
| ---- |
| |
| <?php |
| if ($_SERVER["REQUEST_METHOD"] == "POST") |
| $wish = array("id" => $_POST["wishID"], "description" => |
| $_POST["wish"], "due_date" => $_POST["dueDate"]); |
| else if (array_key_exists("wishID", $_GET)) |
| $wish = mysqli_fetch_array(WishDB::getInstance()->get_wish_by_wish_id($_GET["wishID"])); |
| else |
| $wish = array("id" => "", "description" => "", "due_date" => ""); |
| ?> |
| ---- |
| |
| *Para o banco de dados Oracle:* |
| |
| |
| [source,php] |
| ---- |
| |
| <?php |
| if ($_SERVER["REQUEST_METHOD"] == "POST") |
| $wish = array("id" => $_POST["wishID"], "description" => |
| $_POST["wish"], "due_date" => $_POST["dueDate"]); |
| else if (array_key_exists("wishID", $_GET)) { |
| $stid = WishDB::getInstance()->get_wish_by_wish_id($_GET["wishID"]); |
| $row = oci_fetch_array($stid, OCI_ASSOC); |
| $wish = array("id" => $row["ID"], "description" => |
| $row["DESCRIPTION"], "due_date" => $row["DUE_DATE"]); |
| oci_free_statement($stid); |
| } else |
| $wish = array("id" => "", "description" => "", "due_date" => ""); |
| ?> |
| ---- |
| |
| O código inicializa o array `$wish` com três elementos: `id` , `description` e `due_date` . Os valores desses elementos dependem do método de Solicitação de Servidor. Se o método de Solicitação de Servidor for POST, os valores serão recebidos do form de entrada. Caso contrário, se o método de Solicitação de Servidor for GET e o array $_GET contiverem um elemento com a chave "wishID", os valores serão recuperados do banco de dados pela função get_wish_by_wish_id. Finalmente, se o método de Solicitação do Servidor não for POST nem GET, o que significa que o caso de uso Adicionar Novo Desejo acontece, os elementos ficam vazios. |
| |
| O código precedente cobre os casos de criação e edição de desejos. Agora você precisa atualizar o form de entrada para que ele possa ser usado por ambos os casos. |
| |
| |
| === Atualizando o Form de Entrada HTML |
| |
| Atualmente, o form de entrada funciona quando você quer criar um novo desejo e não há id de desejo. Para que o form funcione ao editar um desejo existente, é necessário adicionar um campo oculto para transferir o ID de um desejo. O valor do campo oculto deve ser recuperado no array $wish. O valor deve ser uma string vazia durante a criação de um novo desejo. Se o desejo for editado, o valor do campo oculto deve ser alterado para o wisher ID. Para criar esse campo oculto, adicione a linha seguinte à parte superior do form de entrada `EditWish` em `editWish.php` : |
| |
| [source,php] |
| ---- |
| |
| <input type="hidden" name="wishID" value="<?php echo `$wish` ["id"];?>" /> |
| ---- |
| |
| |
| === Atualizando o Desejo no Banco de Dados |
| |
| Agora você precisa atualizar o código que verifica os dados de entrada e insere o desejo no banco de dados. O código atual não distingue entre a criação de um novo caso de desejo e a atualização de um existente. Na implementação atual, um novo registro sempre é adicionado ao banco de dados porque o código não verifica o valor do wisher ID transferido do form de entrada. |
| |
| Você precisa adicionar as seguintes funções: |
| |
| * Se o elemento transferido "wishID" for uma string vazia, crie um novo desejo. |
| * Caso contrário, se o elemento "wishID" não for uma string vazia, atualize o desejo. |
| |
| *Para atualizar o editWish.php para que ele verifique se um desejo é novo e atualizá-lo caso não seja novo:* |
| |
| 1. Adicione a função `update_wish` ao `db.php` . |
| |
| *Para o banco de dados MySQL:* |
| |
| |
| [source,php] |
| ---- |
| |
| public function update_wish($wishID, $description, $duedate) { |
| $description = $this->real_escape_string($description); |
| if ($duedate==''){ |
| $this->query("UPDATE wishes SET description = '" . $description . "', |
| due_date = NULL WHERE id = " . $wishID); |
| } else |
| $this->query("UPDATE wishes SET description = '" . $description . |
| "', due_date = " . $this->format_date_for_sql($duedate) |
| . " WHERE id = " . $wishID); |
| } |
| ---- |
| *Para o banco de dados Oracle:* |
| |
| |
| [source,php] |
| ---- |
| |
| public function update_wish($wishID, $description, $duedate) { |
| $query = "UPDATE wishes SET description = :desc_bv, due_date = to_date(:due_date_bv, 'YYYY-MM-DD') |
| WHERE id = :wish_id_bv"; |
| $stid = oci_parse($this->con, $query); |
| oci_bind_by_name($stid, ':wish_id_bv', $wishID); |
| oci_bind_by_name($stid, ':desc_bv', $description); |
| oci_bind_by_name($stid, ':due_date_bv', $this->format_date_for_sql($duedate)); |
| oci_execute($stid); |
| |
| } |
| ---- |
| |
| [start=2] |
| . |
| Adicione a função `get_wish_by_wish_id` ao `db.php` . |
| |
| *Para o banco de dados MySQL:* |
| |
| |
| [source,php] |
| ---- |
| |
| public function get_wish_by_wish_id ($wishID) { |
| return $this->query("SELECT id, description, due_date FROM wishes WHERE id = " . $wishID); |
| } |
| ---- |
| |
| *Para o banco de dados Oracle:* |
| |
| |
| [source,php] |
| ---- |
| |
| public function get_wish_by_wish_id($wishID) { |
| $query = "SELECT id, description, due_date FROM wishes WHERE id = :wish_id_bv"; |
| $stid = oci_parse($this->con, $query); |
| oci_bind_by_name($stid, ':wish_id_bv', $wishID); |
| oci_execute($stid); |
| return $stid; |
| } |
| ---- |
| |
| [start=3] |
| . Na parte principal, no bloco PHP superior do `editWish.php` , adicione uma condição para a instrução`else` final. Esta é a instrução `else` que insere o desejo no banco de dados. Trocar para instrução `else if` : |
| |
| [source,php] |
| ---- |
| |
| else if ($_POST["wishID"]=="") { |
| WishDB::getInstance()->insert_wish($wisherID, $_POST["wish"], $_POST["dueDate"]); |
| header('Location: editWishList.php' ); |
| exit; |
| } |
| ---- |
| |
| [start=4] |
| . Digite ou cole outra instrução `else if` abaixo daquela que você acabou de editar: |
| |
| [source,php] |
| ---- |
| |
| else if ($_POST["wishID"]!="") { |
| WishDB::getInstance()->update_wish($_POST["wishID"], $_POST["wish"], $_POST["dueDate"]); |
| header('Location: editWishList.php' ); |
| exit; |
| } |
| ---- |
| |
| O código verifica se o elemento `wishID` no array `$_POST` não é uma string vazia, o que significa que o usuário foi redirecionado da página `editWishList.php` , pressionando o botão Editar, e se o usuário preencheu a descrição do desejo. Se a verificação for bem-sucedida, o código chamará a função `update_wish` com os parâmetros de entrada `wishid` , `description` e `duedate. ` Esses parâmetros são recebidos do form de entrada HTML usando o método post. Depois que o `update_wish` for chamado, a aplicação será redirecionada para a página `editWishList.php` e o processamento de PHP será cancelado. |
| |
| |
| == Testando a Funcionalidade Editar Desejo |
| |
| 1. Execute a aplicação. Na página index.php, preencha os campos: no campo Nome do Usuário, digite "Tom", e no campo Senha, digite "tomcat". |
| |
| image::images/user-logon-to-edit-wish-list.png[] |
| |
| |
| [start=2] |
| . Pressione o botão Editar Minha Lista de Desejos. A página `editWishList.php` abre. |
| |
| image::images/edit-wish-list-edit-wish.png[] |
| |
| |
| [start=3] |
| . Clique em Editar ao lado de Icecream. A página `editWish.php` abre. |
| |
| image::images/edit-wish.png[] |
| |
| |
| [start=4] |
| . Edite os campos e pressione Voltar à Lista. A página `editWishList.php` abre, mas as alterações não são salvas. |
| |
| [start=5] |
| . Pressione Editar ao lado de Icecream. Limpe o campo Descreva seu desejo e pressione Salvar Alterações. Uma mensagem de erro é exibida. |
| |
| image::images/editWishEmptyDescription.png[] |
| |
| |
| [start=6] |
| . Insira Chocolate Icecream no campo Descreva seu desejo e pressione Salvar Alterações. A página `editWishList.php` abre com uma lista atualizada. |
| |
| image::images/editWishListWishAdded.png[] |
| |
| |
| == Deletando um Desejo |
| |
| Agora que você pode criar, ler e editar desejos, adicione um método para deletar um desejo. |
| |
| *Para permitir que o usuário delete desejos:* |
| |
| 1. Adicione uma função ` delete_wish` ao `db.php` . |
| |
| *Para o banco de dados MySQL:* |
| |
| |
| [source,php] |
| ---- |
| |
| function delete_wish ($wishID){ |
| $this->query("DELETE FROM wishes WHERE id = " . $wishID); |
| } |
| |
| ---- |
| |
| *Para o banco de dados Oracle:* |
| |
| |
| [source,php] |
| ---- |
| |
| public function delete_wish($wishID) { |
| $query = "DELETE FROM wishes WHERE id = :wish_id_bv"; |
| $stid = oci_parse($this->con, $query); |
| oci_bind_by_name($stid, ':wish_id_bv', $wishID); |
| oci_execute($stid); |
| } |
| ---- |
| |
| [start=2] |
| . Crie um novo arquivo PHP chamado `deleteWish.php` e insira o seguinte código no <? php?>: |
| |
| [source,php] |
| ---- |
| |
| require_once("Includes/db.php"); |
| WishDB::getInstance()->delete_wish ($_POST["wishID"]); |
| header('Location: editWishList.php' ); |
| ---- |
| O código permite o uso do arquivo `db.php` . Em seguida, ele chama a função `delete_wish` a partir de uma instância do WishDB, com o `wishID` como o parâmetro de entrada. Finalmente, a aplicação é redirecionada para a página `editWishList.php` . |
| |
| [start=3] |
| . Para implementar o botão Deletar, adicione outra célula da tabela ao loop `while` no `editWishList.php` , diretamente abaixo do código do bloco para o botão `editWish` . O form de entrada HTML contém um campo oculto para `wishID` e um botão de envio chamado Deletar. (O código para o banco de dados MySQL é mostrado, mas o código adicionado é o mesmo, no mesmo local, para o banco de dados Oracle). |
| |
| [source,php] |
| ---- |
| |
| while ($row = mysqli_fetch_array($result)): |
| echo "<tr><td>" . htmlentities($row["description"]) . "</td>"; |
| echo "<td>" . htmlentities($row["due_date"]) . "</td></tr>\n"; |
| ?> |
| <td> |
| <form name="editWish" action="editWish.php" method="GET"> |
| <input type="hidden" name="wishID" value="<?php echo $wishID; ?>"> |
| <input type="submit" name="editWish" value="Edit"> |
| </form> |
| </td> |
| <td> |
| <form name="deleteWish" action="deleteWish.php" method="POST"> |
| <input type="hidden" name="wishID" value="<?php echo $wishID; ?>"/> |
| <input type="submit" name="deleteWish" value="Delete"/> |
| </form> |
| </td> |
| <?php |
| echo "</tr>\n"; |
| endwhile; |
| mysqli_free_result($result); |
| ?> |
| </table> |
| ---- |
| |
| A tabela inteira, incluindo o form com o botão Editar dentro do loop `while ` , agora tem a seguinte aparência: |
| |
| *Para o banco de dados MySQL:* |
| |
| |
| [source,php] |
| ---- |
| |
| <table border="black"> |
| <tr><th>Item</th><th>Due Date</th></tr> |
| <?php |
| require_once("Includes/db.php"); |
| $wisherID = WishDB::getInstance()->get_wisher_id_by_name($_SESSION["user"]); |
| $result = WishDB::getInstance()->get_wishes_by_wisher_id($wisherID); |
| while($row = mysqli_fetch_array($result)): |
| echo "<tr><td>" . htmlentities($row['description']) . "</td>"; |
| echo "<td>" . htmlentities($row['due_date']) . "</td>"; |
| $wishID = $row["id"]; |
| ?> |
| <td> |
| <form name="editWish" action="editWish.php" method="GET"> |
| <input type="hidden" name="wishID" value="<?php echo $wishID; ?>"/> |
| <input type="submit" name="editWish" value="Edit"/> |
| </form> |
| </td> |
| <td> |
| <form name="deleteWish" action="deleteWish.php" method="POST"> |
| <input type="hidden" name="wishID" value="<?php echo $wishID; ?>"/> |
| <input type="submit" name="deleteWish" value="Delete"/> |
| </form> |
| </td> |
| <?php |
| echo "</tr>\n"; |
| endwhile; |
| mysqli_free_result($result); |
| ?> |
| </table> |
| ---- |
| |
| *Para banco de dados Oracle:* |
| |
| |
| [source,php] |
| ---- |
| |
| <table border="black"> |
| <tr><th>Item</th><th>Due Date</th></tr> |
| <?php |
| require_once("Includes/db.php"); |
| $wisherID = WishDB::getInstance()->get_wisher_id_by_name($_SESSION["user"]); |
| $stid = WishDB::getInstance()->get_wishes_by_wisher_id($wisherID); |
| while ($row = oci_fetch_array($stid)): |
| echo "<tr><td>" . htmlentities($row["DESCRIPTION"]) . "</td>"; |
| echo "<td>" . htmlentities($row["DUE_DATE"]) . "</td>"; |
| $wishID = $row["ID"]; |
| ?> |
| <td> |
| <form name="editWish" action="editWish.php" method="GET"> |
| <input type="hidden" name="wishID" value="<?php echo $wishID; ?>"/> |
| <input type="submit" name="editWish" value="Edit"/> |
| </form> |
| </td> |
| <td> |
| <form name="deleteWish" action="deleteWish.php" method="POST"> |
| <input type="hidden" name="wishID" value="<?php echo $wishID; ?>"/> |
| <input type="submit" name="deleteWish" value="Delete"/> |
| </form> |
| </td> |
| <?php |
| echo "</tr>\n"; |
| endwhile; |
| oci_free_statement($stid); |
| ?> |
| </table> |
| ---- |
| |
| |
| == Testando a Funcionalidade Deletar Desejo |
| |
| Para verificar se a funcionalidade foi implementada corretamente, pressione Deletar ao lado de qualquer item na página `editWishList.php` . O item não está mais na lista. |
| |
| image::images/deleteWish.png[] |
| |
| |
| == O código-fonte da Aplicação após a Lição Atual está Concluído |
| |
| Usuários MySQL: clique link:https://netbeans.org/files/documents/4/1933/lesson7.zip[+aqui+] para fazer o download do código-fonte que reflete o estado do projeto depois que a lição estiver concluída. |
| |
| Usuários do banco de dados Oracle: clique link:https://netbeans.org/projects/www/downloads/download/php%252Foracle-lesson7.zip[+aqui+] para fazer o download do código-fonte que reflete o estado do projeto depois que a lição for concluída. |
| |
| |
| == Próximas Etapas |
| |
| link:wish-list-lesson6.html[+<< Lição anterior+] |
| |
| link:wish-list-lesson8.html[+Próxima lição >>+] |
| |
| link:wish-list-tutorial-main-page.html[+Voltar à página principal do Tutorial+] |
| |
| |
| link:/about/contact_form.html?to=3&subject=Feedback:%20PHP%20Wish%20List%20CRUD%207:%20Updating%20and%20Deleting%20DB%20Entries[+Enviar Feedback neste Tutorial+] |
| |
| |
| Para enviar comentários e sugestões, obter suporte e manter-se informado sobre os desenvolvimentos mais recentes das funcionalidades de desenvolvimento PHP do NetBeans IDE, link:../../../community/lists/top.html[+junte-se à lista de correspondência users@php.netbeans.org+]. |
| |
| link:../../trails/php.html[+Voltar à Trilha de Aprendizado PHP+] |
| |