Patrocínio Natura

Formulários com XAJAX

20 de março de 2009

Olá Pessoal. Obrigado pelos comentários e pelos e-mails recebidos nas últimas semanas. Neste artigo iremos estudar como enviar as informações de vários campos em nosso formulário, para nossa função PHP, sem que haja um submit.

No artigo anteior vimos podemos fazer isso utilizando-se comando em javascript que pegam o conteúdo(value) do campo e passa para função, mas temos que concordar que se nosso formulário tiver uma quantidade grande de campos isso fica inviável, já que a quantidade de parametros na chamada da função xajax_() irá ficar enorme. O XAJAX então tem uma função para contornar isso: xajax.getFormValues(‘formID’).

Esta função pega todos os campos com seus valores atuais e retorna um array com essas informações. Após isso é só tratar esse array e extrair as informações que são de nosso interesse. Vamos ao exemplo.

Interface do formulário form.php
 

form.php

<?php
require “./library/xajax/xajax_core/xajax.inc.php”;
require “./library/validacoes.php”;
?>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>FORMULÁRIOS COM XAJAX – PARTE 2</title>
<?php ajax->printJavascript(‘./library/xajax/’); ?>
</head>
<body>
    <form id=”form” name=”form” method=”post” action=””>
       <table width=”300″ border=”0″ align=”center” cellpadding=”1″ cellspacing=”1″>
          <tr>
             <td colspan=”2″><p>FORMULÁRIOS COM XAJAX – PARTE 2</p>
                 <p>Validado o formulário </p></td>
          </tr>
          <tr>
             <td width=”73″>nbsp;</td>
             <td width=”220″><label id=”resultado”></label></td>
          </tr>
          <tr>
              <td align=”right”>Nome:</td>
              <td><input name=”nome” type=”text” id=”nome” size=”25″ maxlength=”50″ /></td>
          </tr>
          <tr>
               <td align=”right”>Sexo:</td>
               <td><input name=”sexo” type=”radio” value=”Masculino”>
                   Masculino
                   <input name=”sexo” type=”radio” value=”Feminino”>
                   Feminino </td>
          </tr>
          <tr>
                <td align=”right”>E-Mail:</td>
                <td><input name=”email” type=”text” id=”email” size=”25″ maxlength=”75″ /></td>
          </tr>
          <tr>
                <td align=”right”>Telefone:</td>
                <td><input name=”telefone” type=”text” id=”telefone” size=”25″ maxlength=”75″ /></td>
          </tr>
          <tr>
                <td>nbsp;</td>
                <td><input name=”btn” type=”button” value=”Enviar Dados”=”xajax_enviarDados(xajax.getFormValues(‘form’));”/></td>
          </tr>
       </table>
</form>
</body>
</html>


Nesse formulário com o name = “form”, nós temos 4 campos, com os respectivos name’s:

-> nome

-> email
-> sexo

-> telefone
Linha 42

-> Essa é a linha na qual tem a chamada da função xajax_enviarDados(xajax.getFormValues(‘form’));, onde a função xajax.getFormValues(‘form’) irá pegar todos os campos e valores e retornar esse array de informações para uma variável que está lá na nossa função em PHP, que veremos a seguir.

validacoes.php

<?php
ajax = new xajax();

// Registra as funções no javascript
ajax->registerFunction(“enviarDados”);

// FUNÇÕES JAVASCRIPT REGISTRADAS PELO XAJAX

function enviarDados(formData){

// Instancia o objeto XAJAX response com
// codificação padrão ISO-8859-1
objResponse = new xajaxResponse(‘ISO-8859-1’);

// Inicializa a variável de resultado
res = “”;

// Cria uma variável para cada campo
// com o nome do ID do campo, ex.: nome, email
foreach(formData as chave => valor){
chave = valor;
}

// Verifica os campos e atribui strings a res
if(nome == false)
res .= “Preencha o campo nome<br />\n”;
if(sexo == false)
res .= “Selecione um sexo<br />\n”;
if(email == false)
res .= “Preencha o campo e-mail<br />\n”;
if(telefone == false)
res .= “Preencha o campo telefone<br />\n”;

// Verifica res
if(empty(res))
res = “<font color=green>Formulário preenchido com sucesso!</font>”;
else
res = “<font color=red>”.res.”</font>”;

// Atribui a variável res ao label resultado
objResponse->assign(‘resultado’, ‘innerHTML’, res);

// Retorna a resposta de XML gerada pelo
// objeto do xajaxResponse
return objResponse;
}

// Manda o ajax processar os pedidos acima
ajax->processRequest();
?>

Linhas 2 e 5

-> Instânciamos o objeto do XAJAX e registramos a função enviarDados no XAJAX;

Linha 11

-> Declaramos a função enviarDados, e no parametro a variável formData quer irá receber o array com todos os campos e informações do formulário;

Linha 15

-> Instancia o objeto XAJAX response com codificação padrão ISO-8859-1;

Linhas 19 a 21

-> Com um foreach() nós percorremos o array formData e criamos as variáveis de cada campo do formulário, com nomes iguais ao dos campos. Conseguimos isso utilizando o recurso de “”, mais conhecido como variável da variável.

-> formData[‘nome’] = “André Luiz”;

-> Olhem isso! ‘nome’ é uma chave (índice) da variável formData, e ‘André Luiz’ um valor dentro da chave (índice) ‘nome’.

-> Então isso: chave = valor;, seria o mesmo que: nome = ‘André Luiz’; Todos concordam? Se não concorda, leia tudo de novo! Isso é feito para todos os campos do formulário.

Linhas 24 a 40

-> Nestas linhas fazemos somente a verificação se os campos estão vázios e montamos na variável res a mensagem de resposta;

Linha 43

-> Atribuimos a variável res ao label resultado;

Linhas 47 a 52

-> Finalizamos o código com as respostas processadas.

Espero que tenha esclarecido algumas dúvidas. Para baixar o código desse artigo clique aqui. Nos próximos artigos iremos tratar mais funções de resposta, como o assign.

Um abraço!
 

André Rodrigues

Analista desenvolvedor de sites e sistemas web com o Grupo Host-Up.com

 

Ilustrações retiradas do artigo original do site www.imasters.com.br

Compatilhe esse artigo!

Nenhum Comentário

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.