Olá pessoal, meu primeiro post aqui no guia do php! Ele esta reservado a uma função que me ajudou bastante e quero compartilhá-la com vocês. Ela executa uma consulta ao banco de dados via HTTPRequest e preenche o formulário automaticamente sem refresh na página a partir de um campo preenchido.
Essa função é viável em casos específicos onde a busca pode ser filtrada por uma identificação que não se repetirá no banco de dados e que possua uma quantidade certa de caracteres, como por exemplo, a id do produto.
Primeiro começaremos com a criação da tabela:
- Tabela: teste
create table teste (
id integer not null primary key,
descricao character varying(20) not null,
preco integer not null,
quantidade integer not null
)
- Inserindo dados na tabela
insert into teste2 (id,descricao,preco,quantidade) values (11111,‘caneta’,2.50,10);
insert into teste2 (id,descricao,preco,quantidade) values (22222,‘lápis’,1.20,15);
insert into teste2 (id,descricao,preco,quantidade) values (33333,‘borracha’,1.00,10);
logo após é criada uma pasta com nome ajax onde será colocada a pagina ajax.js que contem a função sack.
- ajax.js
download do arquivo
agora, criaremos a pagina principal do formulário:
- index.html
method=“POST”>
id: | “text” size=“15″ maxlength=“5″> |
descrição: | “text” size=“15″ maxlength=“15″> |
preço: | “text” size=“15″ maxlength=“6″> |
quantidade: | “text” size=“15″ maxlength=“6″> |
E agora, a pagina getID que irá fazer a consulta ao banco de dados. - getID.php
$host = ‘localhost’;
$bdname = ‘banco’;
$user = ”;
$password = ”;
$conexao = pg_connect(“host=$host dbname=$dbname user=$user password=$password”) or die (“Não foi possível conectar ao Banco de dados.”);
if ( isset( $_GET[ 'id' ] ) ){ $res = pg_query(“SELECT * FROM teste2 WHERE id=’” . $_GET[ 'id' ] . “‘”);
// caso haja retorno na consulta, irá preencher os campos do formulário, senão irá apagar seu conteúdo.
if ( $inf = pg_fetch_array( $res ) ){
echo “formObj.descricao.value = ‘” . $inf[ "descricao" ] . “‘;n”;
echo “formObj.preco.value = ‘” . $inf[ "preco" ] . “‘;n”;
echo “formObj.quantidade.value = ‘” . $inf[ "quantidade" ] . “‘;n”;
}else{
echo “formObj.descricao.value = ”;n”;
echo “formObj.preco.value = ”;n”;
echo “formObj.quantidade.value = ”;n”;
}
}
?>
O sistema interage da seguinte maneira, ao perder o foco do campo ID do formulário através do onblur na função initFormEvents, a função getClientData fará a verificação do valor quando este não estiver nulo ou diferente da quantidade estipulada, caso esteja correto ele executa a função requestFile na pagina getID.php onde é feita a consulta através da variável id, em seguida ele retorna as respostas no formulário especificado na função showClientData e assim são executadas todas as funções da classe contidas na pagina Ajax.php que são responsáveis por todo o processo em execução sem refresh na página.
Caso seja necessária a utilização de mais de uma variável para realizar a consulta, basta acrescentar uma variável em Ajax que pegue o valor do campo especifico, adicioná-lo a url da função ajax.requestFile e fazer o tratamento dela na pagina getID.php.
Bom pessoal, espero que essa função ajude vocês tanto quanto me ajudou.
Até a próxima!
por: Alonso
em: Guia do PHP
Nenhum comentário:
Postar um comentário