POR HELIO SILVA
TUTORIAL/FIREBIRD
C O L E Ç Ã O I N F O>105
uantas vezes você em- prestou um livro e se es- queceu para quem? E quantas vezes o amigo que tomou o livro emprestado se lembrou de devolver? Nesses casos em que a memória não passa de uma vaga lembrança, o jeito é montar um banco de dados de sua biblioteca, com direito ao controle dos títulos emprestados. É o que faremos nes- te tutorial. Para acompanhá-lo, vo- cê vai precisar de servidor web com PHP 4.x, banco de dados Firebird 1.5.3 (www.info.abril.com.br/
download/2108.shtml) e o IBEx-
pert (www.info.abril.com.br/down
load/4047.shtml) como ferramen-
ta de administração. Com apenas dois programas em PHP faremos a admi- nistração das informações.
1.
O BANCOInstalados os programas necessários, abra o IBExpert e acione o menu Da- tabase > Create Database. Crie o ban- co de dados com o nome Biblioteca e clique no botão OK.
Será necessário registrar o banco no IBExpert. Assim, no campo data- base alias, digite o nome Biblioteca e, em seguida, acione no botão Register. (Clique no ícone do lado esquerdo da tela, onde aparece o nome de nosso banco de dados Biblioteca. Com o botão direito do mouse, es- colha a opção Conect to database.
2.
A TABELAAgora que estamos conectados ao novo banco de dados, va- mos criar a tabela do sistema. Tecle F12 pa-
Q
Biblioteca: crie o
banco de dados com o IBExpert 105_AGENDA_FIREBIRD 26/02/2006 00:42 Page 105
TUTORIAL/FIREBIRD
C O L E Ç Ã O I N F O>107
TUTORIAL/FIREBIRD
106<C O L E Ç Ã O I N F O
ra que se abra uma tela para a cria- ção de consultas SQL. Dentro da te- la de consulta, criaremos o banco de dados com o comando:
CREATE TABLE TB_LIVROS ( CODIGO INTEGER NOT NULL, TITULO VARCHAR(50) NOT NULL, STATUS VARCHAR(20) NOT NULL, ASSOCIADO VARCHAR(40) CHARACTER SET NONE COLLATE NONE);
Logo depois, determinaremos que o código do livro será a chave pri- mária de acesso ao banco com o se- guinte comando:
ALTER TABLE TB_LIVROS ADD CONSTRAINT PK_TB_LIVROS PRIMARY KEY (CODIGO);
3.
O CÓDIGO DOS LIVROSAgora vamos aproveitar um dos re- cursos do Firebird e transportar pa- ra o banco a responsabilidade de criar sequencialmente o código dos livros na medida em que forem inseridos. Ainda em nossa tela de consulta va- mos inserir o seguinte comando:
CREATE TRIGGER AI_TB_ LIVROS_ CODIGO FOR TB_
LIVROS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.CODIGO IS NULL) THEN NEW.CODIGO = GEN_ID(TB_ LIVROS_CODIGO_GEN, 1); END
Este gatilho será acionado auto- maticamente a cada inclusão para gerar o código do livro.
4.
SCRIPT EM PHPFaça o download do arquivo biblio- teca.zip no endereço ftp://ftp.info.
abril.com.br/biblioteca.zip. Des-
compacte-o na pasta onde opera o seu servidor web e terá os arquivos index.php e processa.php.
Nosso primeiro programa, o in- dex.php, lista a quantidade de livros disponíveis e em que status se en- contram (Emprestado, Disponível ou Encomendado). O script faz também uma pesquisa no banco de dados e monta uma lista do tipo combo com todos os livros disponíveis.
Por fim, apresenta uma série de cin- co botões para que você possa esco- lher entre listar os livros disponíveis e seu status, Incluir e Excluir livros. As outras duas opções são de registrar empréstimos e/ou devoluções.
5.
REQUISIÇÕES DO USUÁRIONosso segundo programa, o pro- cessa.php, é que fará o trabalho to- do. Ele é um pouco extenso, mas não é complexo.
Em princípio, o segundo progra- ma se caracteriza por uma árvore de decisão usando if e elseif, sen- do que cada ação solicitada pelo usuário vai determinar um compor- tamento diferente.
A primeira providência do pro- grama para atender qualquer que seja a necessidade do usuário é abrir uma conexão com o banco de dados. Em seguida, ele registra qual a operação o usuário solicitou, e, por conta disso, determina se ele terá que ser executado mais uma vez ou se deve retornar ao in- dex.php. O programa toma essa de- cisão ao definir qual ação deve ser acionada pelo formulário, se exe- cuta o index.php ou ele mesmo (processa.php) com um novo parâ- metro de operação.
A primeira ação do programa é listar. Essa ação
monta uma tabela com todos os livros do banco ordenados pelo título.
Quando acionado pelo botão Incluir do index.php, a ação desse programa é abrir uma tela de for-
mulário para que seja digitado o no- me do novo livro do acervo e mon- tar um combo para que seja defini- do qual o seu status (Disponível, Em- prestado, Encomendado).
Quando o botão “Excluir” é aciona- do é há um livro selecionado no com- bo do index.php, o programa reage excluindo aquele título selecionado. Para a operação de empréstimo, o programa abre um formulário pe- dindo o nome do associado que es- tá emprestando o livro. Na seqüên- cia, faz a atualização das informa- ções trocando o status do livro pa- ra Emprestado e registrando o no- me do associado que retirou o livro. A operação final é a devolução do livro que, quando acionada, al- tera o status do livro para Disponí- vel e elimina o nome do associado. É evidente que outras imple- mentações e validações são ne- cessárias, mas este exemplo já per- mite vislumbrar um pouco da efi- ciência do Firebird usado em com- binação com o PHP.
Gatilho: gerador
automático do código de cada um dos livros
Resultado: controle
dos livros emprestados e dos disponíveis 105_AGENDA_FIREBIRD 26/02/2006 00:42 Page 106
TUTORIAL/FIREBIRD
C O L E Ç Ã O I N F O>107
TUTORIAL/FIREBIRD
106<C O L E Ç Ã O I N F O
ra que se abra uma tela para a cria- ção de consultas SQL. Dentro da te- la de consulta, criaremos o banco de dados com o comando:
CREATE TABLE TB_LIVROS ( CODIGO INTEGER NOT NULL, TITULO VARCHAR(50) NOT NULL, STATUS VARCHAR(20) NOT NULL, ASSOCIADO VARCHAR(40) CHARACTER SET NONE COLLATE NONE);
Logo depois, determinaremos que o código do livro será a chave pri- mária de acesso ao banco com o se- guinte comando:
ALTER TABLE TB_LIVROS ADD CONSTRAINT PK_TB_LIVROS PRIMARY KEY (CODIGO);
3.
O CÓDIGO DOS LIVROSAgora vamos aproveitar um dos re- cursos do Firebird e transportar pa- ra o banco a responsabilidade de criar sequencialmente o código dos livros na medida em que forem inseridos. Ainda em nossa tela de consulta va- mos inserir o seguinte comando:
CREATE TRIGGER AI_TB_ LIVROS_ CODIGO FOR TB_
LIVROS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.CODIGO IS NULL) THEN NEW.CODIGO = GEN_ID(TB_ LIVROS_CODIGO_GEN, 1); END
Este gatilho será acionado auto- maticamente a cada inclusão para gerar o código do livro.
4.
SCRIPT EM PHPFaça o download do arquivo biblio- teca.zip no endereço ftp://ftp.info.
abril.com.br/biblioteca.zip. Des-
compacte-o na pasta onde opera o seu servidor web e terá os arquivos index.php e processa.php.
Nosso primeiro programa, o in- dex.php, lista a quantidade de livros disponíveis e em que status se en- contram (Emprestado, Disponível ou Encomendado). O script faz também uma pesquisa no banco de dados e monta uma lista do tipo combo com todos os livros disponíveis.
Por fim, apresenta uma série de cin- co botões para que você possa esco- lher entre listar os livros disponíveis e seu status, Incluir e Excluir livros. As outras duas opções são de registrar empréstimos e/ou devoluções.
5.
REQUISIÇÕES DO USUÁRIONosso segundo programa, o pro- cessa.php, é que fará o trabalho to- do. Ele é um pouco extenso, mas não é complexo.
Em princípio, o segundo progra- ma se caracteriza por uma árvore de decisão usando if e elseif, sen- do que cada ação solicitada pelo usuário vai determinar um compor- tamento diferente.
A primeira providência do pro- grama para atender qualquer que seja a necessidade do usuário é abrir uma conexão com o banco de dados. Em seguida, ele registra qual a operação o usuário solicitou, e, por conta disso, determina se ele terá que ser executado mais uma vez ou se deve retornar ao in- dex.php. O programa toma essa de- cisão ao definir qual ação deve ser acionada pelo formulário, se exe- cuta o index.php ou ele mesmo (processa.php) com um novo parâ- metro de operação.
A primeira ação do programa é listar. Essa ação
monta uma tabela com todos os livros do banco ordenados pelo título.
Quando acionado pelo botão Incluir do index.php, a ação desse programa é abrir uma tela de for-
mulário para que seja digitado o no- me do novo livro do acervo e mon- tar um combo para que seja defini- do qual o seu status (Disponível, Em- prestado, Encomendado).
Quando o botão “Excluir” é aciona- do é há um livro selecionado no com- bo do index.php, o programa reage excluindo aquele título selecionado. Para a operação de empréstimo, o programa abre um formulário pe- dindo o nome do associado que es- tá emprestando o livro. Na seqüên- cia, faz a atualização das informa- ções trocando o status do livro pa- ra Emprestado e registrando o no- me do associado que retirou o livro. A operação final é a devolução do livro que, quando acionada, al- tera o status do livro para Disponí- vel e elimina o nome do associado. É evidente que outras imple- mentações e validações são ne- cessárias, mas este exemplo já per- mite vislumbrar um pouco da efi- ciência do Firebird usado em com- binação com o PHP.
Gatilho: gerador
automático do código de cada um dos livros
Resultado: controle
dos livros emprestados e dos disponíveis 105_AGENDA_FIREBIRD 26/02/2006 00:42 Page 106