Você está na página 1de 2

PROGRAMAO

Marja Flick-Buijs - www.sxc.hu

Conectando PHP ao banco de dados

Fale com o banco

Usando PHP-GTK, fcil escrever programas grcos que se comunicam com bancos de dados.
por Pablo DallOglio

o artigo anterior[1] estudamos


as formas de se reagir s aes
do usurio atravs da programao de sinais. Neste quarto artigo,
estudaremos a conexo a bancos de
dados. Em princpio, a conexo a bancos de dados em PHP-GTK funciona
exatamente da mesma maneira que
no ambiente web. A diferena que,
em alguns casos, precisaremos especicar o IP do servidor onde o banco de
dados est localizado no momento de
conexo, visto que o banco no estar
localizado na mquina cliente, que
onde o PHP-GTK est rodando. Aqui,
mostraremos a utilizao do PHPGTK juntamente com o SQLite, um
banco de dados em forma de arquivo
que dispensa a instalao de servidor,
permitindo que toda a aplicao rode
na mquina cliente.

SQLite

O leitor talvez esteja acostumado a


bancos de dados relacionais cuja estrutura cliente-servidor exige a instalao do
gerenciador de banco de dados, que se
comunica com a aplicao, geralmente atravs de uma porta especca, via
protocolo TCP/IP. O SQLite no tem
esse comportamento, pois o banco se
resume a um nico arquivo com a extenso .db, que contm todas as tabelas
do sistema. Para distribuir uma aplicao que faa uso de um banco de dados
SQLite, basta compactar esse arquivo
.db e distribu-lo junto aplicao.
O SQLite funciona de maneira similar aos arquivos dBase (.dbf) ou Access
(.mdb), proporcionando uma estrutura
simples de banco de dados em forma
arquivo; porm, o SQLite bem mais
robusto que seus antecessores, tendo em
vista que implementa o padro SQL92,
permite transaes, triggers e bancos de
dados de at 2 TiB de tamanho, ou seja,
deve ser suciente para a grande maioria
dos usos. O banco de dados pode servir
vrias requisies de leitura (SELECT) ao
mesmo tempo. Entretanto, o arquivo

O SQLite um banco de dados


relacional cuja estrutura (tabelas,
ndices, dados) est contida em um
nico arquivo. O acesso aos
dados implementado por
uma biblioteca de funes
01 <?php
escritas em C por Richard
02 // abre|cria o banco de dados
03
Hipp, que parte integrante
04 $db = sqlite_open('meubanco.db');
do PHP5, tornando seu uso
05
06 $sql = 'create table pessoas (' .
extremamente simples e
07
' id integer, ' .
08
' nome varchar(80), ' .
em muitas vezes mais veloz
09
' email varchar(80) ) ';
que bancos de dados como
10
11 // cria tabela
PostgreSQL e MySQL. A
12 sqlite_query($db, $sql);
13 // fecha conexo
manipulao dos dados
14 sqlite_close($db);
realizada atravs da lingua15 ?>
gem SQL.
76

bloqueado com um lock em operaes


de escrita (INSERT, UPDATE, DELETE).
Deve-se ressaltar que a utilizao
do SQLite recomendada para ambientes onde existe pouca concorrncia. Por isso, ele indicado para o
ambiente desktop. Em ambiente web,
onde temos vrios usurios tentando
realizar transaes com o banco de
dados, seu desempenho provavelmente
ser bem inferior ao dos tradicionais
bancos cliente-servidor.

Criando o banco
de dados
A criao de um banco de dados SQLite
extremamente simples. Existe uma
ferramenta de administrao do banco
de dados em linha de comando, chamada sqlite2 ou sqlite3, dependendo
da verso utilizada, disponvel no site
do SQLite para vrias plataformas. O
banco de dados tambm poder ser
criado pelo prprio PHP, por meio da
funo sqlite_open(). Essa funo
responsvel por abrir a conexo a um

Figura 1 A criao de interfaces


GTK com o Glade muito
prtica.

http://www.linuxmagazine.com.br

PHP-GTK, parte 4 | PROGRAMAO

banco de dados ou, caso ele ainda no


exista, cri-lo. No exemplo 1, criamos
uma tabela chamada pessoas, com colunas para cdigo, nome e email.

Criando a interface

O prximo passo criar a interface


da aplicao. Poderamos criar a
janela e os objetos manualmente,
mas vamos aproveitar as facilidades
que o Glade nos oferece. O Glade
uma ferramenta utilizada para criar
o visual da aplicao, e funciona da
mesma maneira tanto no Linux quanto no Windows, como vimos no
segundo artigo desta srie[2].
Para criar nossa interface (gura 1)
vamos utilizar primeiramente o componente GtkWindow, que ir criar uma
janela. Aps isso, vamos colocar um GtkFrame com o ttulo Cadastro de Pessoas

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

dentro da janela. Ento, dentro desse


frame, vamos colocar um GtkFixed, que
permite ancorarmos nossos objetos em
coordenadas absolutas. Vamos criar trs
GtkLabel (Cdigo, Nome e Email) e trs
GtkEntry para a digitao de valores.
Observe na gura1 que, ao criarmos os
objetos GtkEntry, damos nomes a eles
pela janela Propriedades. A janela de
propriedades utilizada tambm para
regular tamanhos e posies dos objetos em tela. importante utilizarmos
nomes que sero facilmente lembrados
posteriormente para que possamos capturar esses objetos na aplicao.

Criando o programa

Aps criarmos a interface no passo anterior, salvaremos o arquivo com o nome


tela.glade. Esse arquivo ser utilizado
agora em nossa aplicao. No precisaremos criar a interface no
cdigo-fonte, mas sim
lembrarmos dos nomes
que atribumos aos ob<?php
jetos no Glade (pela aba
// l objeto glade
Propriedades), para que
$glade=new GladeXML('tela.glade');
// captura objetos
possamos capturar esses
$codigo=$glade->get_widget('codigo');
$nome =$glade->get_widget('nome');
objetos. No exemplo 2,
$email =$glade->get_widget('email');
a classe GladeXML reali$salvar=$glade->get_widget('salvar');
// define a ao do boto
za a leitura do arquivo
$salvar->connect('clicked','onSave');
/* funo onSave
.glade e disponibiliza o
* armazena os dados digitados
* no banco de dados */
mtodo get_widget().
function onSave()
Esse mtodo captura
{
global $codigo,$nome,$email;
os objetos desenhados
// obtm valores dos objetos
$valor1 = $codigo->get_text();
pelo Glade e disponi$valor2 = $nome->get_text();
biliza-os na aplicao
$valor3 = $email->get_text();
// abre conexo com o banco
como objetos normais
$db=sqlite_open('meubanco.db');
// cria a string SQL
do GTK. A partir da,
$sql="insert into pessoas values (".
s temos que captu"'$valor1','$valor2','$valor3')";
// executa o comando
r-los utilizando o seu
sqlite_query($db, $sql);
// fecha conexo
nome. Criamos trs obsqlite_close($db);
jetos GtkEntry (codigo,
// cria um dilogo de mensagem
$dialog=new GtkMessageDialog(
nome, email) e um boto
null, Gtk::DIALOG_MODAL,
Gtk::MESSAGE_INFO,
chamado Salvar. Nesse
Gtk::BUTTONS_OK,
programa, estamos co'Registro inserido !!');
// exibe o dilogo
nectando o boto Salvar
$dialog->run();
// destri o dilogo
funo onSave(). Sem$dialog->destroy();
}
pre que o usurio clicar
Gtk::Main();
no boto Salvar, essa
?>
funo ser executada,

Linux Magazine #40 | Maro de 2008

Figura 2 Execuo do programa


escrito no exemplo 2.

lendo os valores que foram digitados


nos objetos GtkEntry e inserindo-os na
tabela pessoas do banco de dados meubanco.db. A gura 2 mostra o programa
rodando e um registro sendo inserido no
banco de dados. Na seqncia, temos
o cdigo-fonte desse exemplo.

Concluso

Neste artigo, vimos como armazenar as


informaes de nossa aplicao no banco
de dados por meio de um formulrio de
entrada de dados. No prximo e ltimo
artigo da srie, iremos estudar a interoperabilidade entre aplicaes atravs da
utilizao de web services.

Mais informaes
[1] Programao de sinais,
Linux Magazine 39: http://
www.linuxmagazine.
com.br/article/
programacao_de_sinais
[2] Hora de Construir, Linux
Magazine 38: http://www.
linuxmagazine.com.br/
article/hora_de_construir
[3] PHPO-GTK Brasil:
http://www.php-gtk.com.br
[4] Livro PHP-GTK: http://
www.php-gtk.com.br/book
[5] Site do autor:
http://www.pablo.blog.br
[6] SQLite:
http://www.sqlite.org

77

Você também pode gostar