RESUMO:
Este artigo orienta o leitor a elaborar uma listagem do banco de dados fazendo referencia ao formulário de cadastro através de link. O primeiro artigo desta série ensinou como desenhar o formulário e fazê-lo funcionar de forma a inserir dados na tabela de produtos do MySQL a partir do formulário HTML. O segundo artigo ensinou a listar estes produtos já cadastrados em uma tabela simples em HTML. Agora para completar, será mostrada esta mesma tabela, só que nos nomes dos produtos serão inseridos links, estes links levam ao cadastro do produto selecionado, a fim de fazer verificações ou correções.
As demais funções como os botões de alterar e excluir, serão por conta do leitor, mesmo porque estes outros métodos são iguais aos de cadastrar, apenas mudará os códigos de SQL, pois onde era insert na classe de produtos será update ou delete respectivamente.

PALAVRAS-CHAVE: Classe. Objeto. PHP. HTML. Produtos. Listagem. Formulário. Listagem de produtos.

1.      INTRODUÇÃO
Quando falamos em criar ligações ou links entre formulários, surgem diversas dúvidas, isso porque existem vários conceitos de envio de dados através de formulários, isso através de métodos POST ou GET, também de outras formas através de variáveis repassadas como parâmetros. O mais importante neste momento é entendermos a lógica do que será feito, assim será muito simples o entendimento.
O objetivo deste artigo é listar os produtos da tabela de produto, só que desta vez, onde aparece o nome do produto será também um link que levará ao cadastro do produto selecionado. Observe à lógica: Ao listar os produtos, será possível clicar sobre um dos produtos, pois eles serão links, depois de clicado será direcionado para a pagina de cadastro, com os dados preenchidos corretamente na tela, isso referente ao produto que clicamos anteriormente.
Para realizar esta tarefa será necessário ter conhecimento dos artigos anteriores, pois foram realizadas as seguintes alterações:

·         A classe produtos que é conteúdo do arquivo Produto.class.php, no diretório class, foi incluído uma clausula WHERE ao SELECT, isso quando houver dado no campo $this->codigo_barra.


        if ($this->codigo_barra){
        $sql .=  " where codigo_barra = ".$this->codigo_barra;   
        }
 
·         No formulário de cadastro de produto, conteúdo do arquivo produto.htm, foram adicionados valores para os campos:



  value="<? print $codigo_barra ?>"

·         Um arquivo editar.php foi criado para ser o arquivo que receberá o parâmetro do link que efetuará a consulta na tabela de produtos para imprimir no arquivo produto.htm
·         Criado um arquivo cadProduto.php, este arquivo apenas inclui o produto.htm a fim de não mostrar os códigos php inseridos nos valores dos campos.
Não se preocupe em realizar nada agora, os passos estão todos abaixo.
 
2.      PARA QUE SERVER
Este script serve para criar um link dos produtos listados com o formulário inicial de entrada, assim é possível entender como efetuar este tipo de ligação, sendo útil para utilizar em outras situações, como por exemplo: Caso esteja desenvolvendo um script em PHP para listar cursos e disciplinas, veja que para listar os cursos é bem simples, pois podemos utilizar o que já foi ensinado no segundo artigo desta série, contudo o usuário vai ter que clicar sobre um dos cursos e só após surgirão às disciplinas a ele associadas.
3.      EM QUE SITUAÇÃO O TEMA ÚTIL
Será útil para dividir a apresentação para o usuário, de forma que ele clica na primeira pagina e a segunda filtra as opções de acordo com o que foi clicado. Isso é importante, pois o usuário ao se deparar com uma pagina com muita informação, gera um ambiente poluído e sua saída é inevitável.
Prepare os artigos, assim para começar usaremos como editor PHP o IDE NetBeans.
 
 
Abrir um projeto existente em PHP no NetBeans
 
Abra o NetBeans, no menu Arquivo escolha Novo Projeto...
Na tela de Novo projeto, em categoria = PHP  em projetos = Aplicativo PHP com códigos-fontes existentes e clique em próximo.

Imagem
Figura 1 - Códigos existentes

Configure a tela, conforme tabela abaixo, os demais campos deixem os valores padrão:
Pasta de códigos-fontes:
 
c:\xampp\htdocs\exercicio1
Nome projeto:
exercicio1_parte3
 
 
Clique em próximo para continuar.
Configure a tela, conforme tabela abaixo, os demais campos deixem os valores padrão:
URL do projeto:
 
http://localhost/exercicio1
 
O projeto abrirá conforme pagina abaixo:

Imagem
Figura 2 - Visão do projeto aberto
 
O projeto em PHP foi aberto no NetBeans, agora será possível navegar entre os arquivos e executar ações como alterar, excluir.
Um ponto fraco do NetBeans para projetos WEB é a interface gráfica para desenhar, pois não é uma das melhores, ou diria...que nem existe.

 

Criar um arquivo PHP a partir do NetBeans

 
O NetBeans possibilita a criação de vários tipos de arquivos ou classes em diversas linguagens de programação, veja como é criado e editado um arquivo na linguagem PHP.
Clique sobre a pasta “Arquivos de código-fontes” com o botão direito, selecione Novo >> Arquivo PHP...
Configure a tela, conforme tabela abaixo, os demais campos deixem os valores padrão:
Nome do arquivo:
 
editar.php
 
Clique no botão <Finalizar>
 
Após este procedimento, um arquivo será criado com o seguinte conteúdo:

<?php
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
?>

 

Entendendo o conteúdo do arquivo PHP criado “editar.php”

 
Para que o script funcione corretamente, não basta apenas criarmos o arquivo editar.php, é preciso entender o código dentro dele.
Não faça nada ainda, apenas analise e entenda:
 
a.       //incluir a classe produtos
b.      include_once('class/Produto.class.php');
 
c.       //Criando e Instanciando o objeto
d.      $oProduto             = new Produto;
e.      //Salvando o resultado da consulta getProduto na variavel rs
f.        $rs                   = $oProduto->getProduto();
g.       //Define a variavel registro = ao conteudo em array do resultado da consulta rs
h.      $registro = mysql_fetch_array( $rs );
i.         //Pegar os registros por vetores na variavel registro e armazenar temporariamente em outra variavel
j.        $codigo_barra     = $registro["codigo_barra"];
k.       $produto          = $registro["produto"];
l.         //Inclui o formulário de entrada de dados do produto
m.    include('produto.htm');
 

 

Inserindo o código no arquivo “editar.php”

 
Copie todo código abaixo e cole sobre todo o conteúdo do existente no arquivo editar.php


 //incluir a classe produtos
include_once('class/Produto.class.php');
 
//Criando e Instanciando o objeto
$oProduto             = new Produto;
//Salvando o resultado da consulta getProduto na variavel rs
$rs                   = $oProduto->getProduto();
//Define a variavel registro = ao conteudo em array do resultado da consulta rs
$registro = mysql_fetch_array( $rs );
//Pegar os registros por vetores na variavel registro e armazenar temporariamente em outra variavel
$codigo_barra     = $registro["codigo_barra"];
$produto          = $registro["produto"];
include('produto.htm');

Ficará conforme imagem abaixo:
Imagem
Figura 3 - Arquivo editar.php

 

Alterar o método getProduto da classe Produtos

 
O arquivo referente à classe de produtos está no seguinte caminho: c:\xampp\exercicio1\class\Produto.class.php
Acesse através do NetBeans, apenas expandindo a pasta de class, conforme imagem abaixo:

Imagem
Figura 4 - Classe Produtos
 
Vá ao final do arquivo e procure pela função (método) getProduto, substitua todo o código por este abaixo:
 



 


    function getProduto(){
        //Armazena na variável
        $sql       = "select * from produtos ";
        //Se o código de barra tiver conteúdo, adiciona um filtro no select
        if ($this->codigo_barra){
        $sql .=  " where codigo_barra = ".$this->codigo_barra;   
        }
 
        //realiza o select no banco de dados, seleciona e guarda as informações 
        //na variável $resultSet
        $resultSet = mysql_query($sql) or die (mysql_error());
        return $resultSet;
 
    }


 
Seu código deverá ficar conforme imagem abaixo no trecho selecionado:

Imagem
Figura 5 - Método getProduto
 

Criar arquivo para chamar o formulário de entrada de dados do produto

 
Em detrimento a este link que criaremos até o formulário, não será mais possível o acesso direto a ele, pois serão colocados códigos nos valores dos campos do formulário produto.htm. Estes códigos não serão executados em HTML, ficando visível se não for chamado a partir de um arquivo PHP. Um programador pode usar de diversas formas para implementar esta solução, neste artigo será usado a maneira mais simples.
·         Crie um novo arquivo PHP (já explicado como), com o seguinte conteúdo:






<?php
include('produto.htm');
?>


 
O código acima inclui os códigos HTML do arquivo produto.htm, dando a impressão de ser aberto diretamente.
 

 

Alterar os valores dos campos do formulário de entrada de dados para receber variáveis em PHP

 
Para que o arquivo produto.htm, imprima nos campos, os valores passados pelo arquivo editar.php, é necessário colocarmos um print(comando em PHP para imprimir conteúdo de uma variável, semelhante ao echo) em cada campo do formulário, abaixo segue as instruções.
 
1.      Execute o aplicativo FrontPage e abra o arquivo: c:\xampp\exercicio1\produto.htm
2.      No FrontPage, clique com o botão direito sobre o campo codigo_barra e escolha a opção “Propriedade do campo de formulário...”

Imagem

Figura 6 - Propriedade do campo codigo_barra

3.      Preencha conforme imagem tabela abaixo:
Nome:
 
codigo_barra
Valor Inicial:
<? print $codigo_barra ?>
 
Pressione o botão <OK> para confirmar.


Imagem
Figura 7 - Valor Inicial

4.      Faça o mesmo para o próximo campo produtos, clique com botão direito do mouse e escolha “Propriedade do campo de formulário...”, preencha os campos conforme tabela:
Nome:
 
produto
Valor Inicial:
<? print $produto ?>
 
 
 
 

Conteúdo dos arquivos modificados

Sabemos que este exercício é continuação do primeiro e segundo artigo, então para as alterações é necessário que tenhamos todos os arquivos anteriores, principalmente as classes.
editar.php








<?php
                  //incluir a classe produtos
                  include_once('class/Produto.class.php');
 
                  //Criando e Instanciando o objeto
                  $oProduto             = new Produto;
                  //Salvando o resultado da consulta getProduto na variavel rs
                  $rs                   = $oProduto->getProduto();
                  //Define a variavel registro = ao conteudo em array do 
                  //resultado da consulta rs
                  $registro = mysql_fetch_array( $rs );
                  //Pegar os registros por vetores na variavel registro e 
                  //armazenar temporariamente em outra variavel
                  $codigo_barra     = $registro["codigo_barra"];
                  $produto          = $registro["produto"];
 
          include('produto.htm');
 
?>
 
cadProduto.php






<?php
include('produto.htm');
?>

 

 

Efetuar os testes

Observe que os demais códigos dos outros arquivos continuam os mesmos:
1.       Para efetuar o teste, acesse o link a seguir no browser: http://localhost/exercicio1/produtos.php
2.       O resultado será parecido com a imagem abaixo:
 
Imagem
Figura 8 - Tabela com os links
3.      Clique sobre o link de um dos produtos:

Imagem

Figura 9 - Formulário entrada com o produto preenchido
 
Veja que o objetivo proposto foi alcançado, o formulário abriu com os dados do produto clicado.

 

CONCLUSÃO

 
O formulário de entrada de dados após ter clicado no link lista o produto nos campos, contudo não surge botão de alterar ou excluir, muito menos o botão cadastrar não ficou invisível.
Será necessário criar novos métodos na classe de produtos e chamá-los através dos botões do formulário de entrada HTML.
Mesmo sem estas opções informadas acima, foi visto no artigo como chamar outro formulário através de um link passando parâmetro e não usando os métodos POST e GET.
 

REFERÊNCIAS

Melo, Ana Cristina. Desenvolvendo Aplicações com UML, 1 º Edição, Brasport, 2002.
 
Melo, Ana Cristina. Desenvolvimento aplicações com UML 2.0: do conceitual à implementação / Ana Cristina Melo. – 2. Ed. – Rio de Janeiro : Brasport, 2004.
 
Gonçalves, Edson. Dominando NetBeans, Rio de Janeiro: Editora Ciência Moderna Ltda., 2006.