A página formulario.php inicia com três headers super importantes:
O primeiro header corrige o problema de acentuação dos caracteres e deve ser a primeira linha de código da página.
Já os dois headers seguintes tem a função de evitar que tal página seja armazenada no cache do navegador.
Em seguinda temos o seguinte código:
Esta página também utiliza o mesmo recurso que a actions.php, que é o de incluir as páginas class.MySQL.php e functions.php somente se estivermos trabalhando via Ajax.
Como já dito antes, a página index.php já incluiu essas páginas. Mas como a página formulario.php será acessada via Ajax e não pela index.php precisamos incluir as referidas páginas.
Em seguinda, verificamos se ocorrerá uma edição de dados - isset($_GET['editar']). Se houver, criamos um "recordset" filtrado pelo ID do contato, de forma que teremos os dados do cadastrado e o exibiremos no atributo value dos campos do formulário.
Com essas condições realizadas, podemos criar nosso formulário.
Vejamos:
Este formulário possui uma peculiaridade que é a atribuição da variável exibirFormulario na action do form e os códigos para exibição dos erros. Vamos compreender isso melhor:
Imagine que estamos utilizando nossa agenda de contato sem o suporte ao JavaScript, então, para exibirmos o formulário na página, precisamos que a URL contenha a variável exibirFormulario.
Assim, ao enviarmos os dados precisamos que, caso existam erros, os mesmos sejam exibidos. E, como os códigos para exibição dos erros está presente na página formulario.php e ela é exibida somente se houver a tal variável na URL, a colocamos juntamente da página para o qual enviaremos o formulario index.php?exibirFormulario=true no atributo action dele. Esse procedimento é para que a página permaneça em exibição e conseqüentemente indique os erros ocorridos ao usuário.
Agora, observe na imagem abaixo como o atributo value dos campos foram definidos:
Ou seja, verificamos se o processo será de edição de dados - isset($_GET['editar']). Se for, exibiremos o referido dado armazenado no banco de dados em seu respectivo campo no formulário.
Finalizando a página, temos significantes pecularidades que valem uma boa observação.
Vejamos os códigos:
Acima, exibiremos um botão que será utilizado caso o usuário desista do processo de cadastramento ou edição dos dados. Mas, repare que verificamos !isset($_GET['ajax']) se não estamos trabalhando com o Ajax.
Sendo assim, exibimos um link que redireciona o usuário para a página index.php sem a variável exibirFormulario, que neste caso ocultará o formulário da página. Caso contrário, exibiremos um campo do tipo reset e atribuiremos a ele uma função para fechar o formulário (você compreenderá isso melhor quando abordarmos o JavaScript com o Ajax).
Este código acima verifica se não estamos no processo de edição dos dados !isset($_GET['editar']). Com isso, atribuímos ao campo oculto - hidden - denominado como action, o valor cadastrar.
Se estivermos no processo de edição, atribuímos o valor editar e criamos outro campo oculto - hidden - denominado como ID e, atribuímos a ele como valor, o ID do contato da agenda em questão presente na URL através da variável ID.
Esse campo action lhe parece familiar? Sim, exatamente. Falamos sobre ele ao compreendermos a página actions.php. O valor dele será utilizado pelo switch, onde será cadastrado um contato se o valor for cadastrar e será editado os dados de um cadastrado se o valor for editar.
Seguimos agora para a compreensão da página com o relatório dos cadastrados.