Conheça o Adianti Framework para PHP:

  • Desenvolvimento com componentes;
  • Formulários e datagrids.
  • Versão Web e Desktop (Gtk);
  • Multiplataforma;
  • Desenhe as interfaces;
  • IDE própria (Adianti Studio).
Ver detalhes...

PHP-GTK Conectando ao Banco de Dados

Para prosseguir com o download do artigo, é necessário realizar login utilizando o Facebook ou Google. Este procedimento é totalmente seguro e nossa aplicação é certificada por ambos os serviços. Após a autenticação, você será direcionado de volta à nossa página para continuar o download.

Login com Facebook Login com Google

Resumo

Introdução No artigo anterior estudamos as formas de se reagir às ações do usuário através da programação de sinais. Neste quarto artigo, estudaremos a conexão à bancos de dados. Em princípio, a conexão a bancos de dados em PHP-GTK funciona exatamente da mesma maneira que no ambiente web. A diferença é que em alguns casos precisaremos especificar o IP do servidor onde o banco de dados está localizado no momento de conexão, visto que o banco de dados não estará localizado na máquina cliente, que é onde o PHP-GTK está rodando. Neste artigo mostraremos a utilização do PHP-GTK juntamente com o SQLite, que é um banco de dados em forma de arquivo que dispensa a instalação de um servidor, permitindo que toda a aplicação rode na máquina cliente. SQLite 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 funções escritas em C por Richard Hipp que é parte integrande do PHP5, tornando seu uso extremamente simples e em muitas vezes mais veloz que bancos de dados como PostgreSQL e MySQL. A manipulação dos dados é realizada através da linguagem SQL. Você deve estar acostumado com bancos de dados relacionais cuja estrutura cliente-servidor exige a intalação do gerenciador de banco de dados, que irá se comunicar com a aplicação, geralmente através de uma porta específica, via protocolo TCP/IP. O SQLite não tem nada disto, pois o banco se resume a um arquivo com a extensão ".db", que contém todas as tabelas do seu sistema! Você só terá de compactar este arquivo junto com sua aplicação para distribuí-la. O SQLite funciona de maneira similar que os arquivos dbase (.dbf) ou access (.mdb), proporcionando uma estrutura simples de banco de dados em forma arquivo, porém é bem mais robusto que seus antecessores ;-) tendo em vista que implementa o padrão SQL92, permite transações, triggers e permite bancos de dados de até 2 tebibytes de tamanho (2 na 41), ou seja, é byte pra caramba. O banco de dados pode servir várias requisições de leitura (SELECT) ao mesmo tempo, entretanto um "lock" do arquivo é realizado em operações de escrita (INSERT, UPDATE, DELETE). Deve-se ressaltar que a utilização do SQLite é recomendada para ambientes onde existe pouca concorrência. Por isto, estamos indicando-o para o ambiente desktop. Em um ambiente web, onde temos vários usuários tentando realizar transações com o banco de dados, sua performance provavelmente será menor que os tradicionais bancos cliente-servidor. Criando o banco de dados A criação de um banco de dados SQLite é extremamente simples. Existe uma ferramenta de administração do banco de dados em linha de comando, chamada sqlite2 ou sqlite3, dependendo da versão utilizada, disponível no site do SQLite para várais plataformas. O banco de dados também poderá ser criado pelo próprio PHP, por meio da função sqlite_open(). Esta função é responsável por abrir a conexão a um banco de dados. Mas caso ele não exista, ela irá criá-lo. Neste mesmo exemplo, estamos criando uma tabela chamada "pessoas", com colunas para código, nome e email. Criando a interface O próximo passo é criar a interface da aplicação. Poderíamos criar a janela e os objetos manualmente, mas iremos aproveitar as facilidades que o Glade nos oferece. O Glade é uma ferramenta utilizada para criar o visual da aplicação e funciona da mesma maneira tanto no Linux quanto no Windows, como vimos no segundo artigo desta série. Para criar nossa interface iremos utilizar primeiramente o componente GtkWindow, que irá criar uma janela. Após isto, iremos colocar um GtkFrame com o título "Cadastro de Pessoas" dentro da janela. Então, dentro deste frame, iremos colocar um GtkFixed, que permite ancorarmos nossos objetos em coordenadas absolutas. Iremos criar três GtkLabel (Código, Nome e Email) e três GtkEntry para a digitação de valores. Observe na Figura1, que ao criarmos os objetos GtkEntry, damos nomes a eles pela janela de Propriedades. A janela de propriedades é utilizada também para regular tamanhos e posição dos objetos em tela. É importante utilizarmos nomes que serão facilmente lembrados posteriormente para que possamos capturar estes objetos na aplicação. Figura1. Janela no Glade Criando o programa Após criarmos a interface no passo anterior, salvaremos o arquivo com o nome "tela.glade". Este arquivo será utilizado agora em nossa aplicação. Não precisaremos criar a interface no código-fonte, mas sim, lembrarmos dos nomes dos objetos que demos no Glade (pela aba propriedades), para que possamos capturar estes objetos. A classe GladeXML realiza a leitura do arquivo ".glade" e disponibiliza o método get_widget(). Este método captura os objetos "desenhados" pelo glade e os disponibiliza na aplicação como objetos normais do Gtk. a partir daí só temos que capturá-los utilizando o seu nome. Criamos três objetos GtkEntry (codigo, nome, email) e um botão chamado "Salvar". Neste programa estamos conectando o botão "Salvar" à função onSave(). Sempre que o usuário clicar no botão "Salvar", esta função será executada, lendo os valores que foram digitados nos objetos GtkEntry e inserindo-os na tabela "pessoas" do banco de dados "meubanco.db". Na Figura2, você confere o programa rodando e um registro sendo inserido no banco de dados. Na seqüência, temos o código-fonte deste exemplo. Figura2. Programa em execução get_widget('codigo'); $nome =$glade->get_widget('nome'); $email =$glade->get_widget('email'); $salvar=$glade->get_widget('salvar'); // define a ação do botão $salvar->connect('clicked','onSave'); /* * função onSave * armazena os dados digitados * no banco de dados */ function onSave() { global $codigo,$nome,$email; // obtém valores dos objetos $valor1 = $codigo->get_text(); $valor2 = $nome->get_text(); $valor3 = $email->get_text(); // abre conexão com o banco $db=sqlite_open('meubanco.db'); // cria a string SQL $sql="insert into pessoas values (". "'$valor1','$valor2','$valor3')"; // executa o comando sqlite_query($db, $sql); // fecha conexão sqlite_close($db); // cria um diálogo de mensagem $dialog=new GtkMessageDialog( null, Gtk::DIALOG_MODAL, Gtk::MESSAGE_INFO, Gtk::BUTTONS_OK, 'Registro inserido !!'); // exibe o diálogo $dialog->run(); // destrói o diálogo $dialog->destroy(); } Gtk::Main(); ?> Conclusão Neste artigo vimos como armazenar as informações de nossa aplicação no banco de dados por meio de um formulário de entrada de dados. No próximo e último artigo da série, iremos estudar a interoperabilidade entre aplicações através da utilização de web services. Referências e links sugeridos [PHP-GTK Brasil] - http://www.php-gtk.com.br [Livro PHP-GTK] - http://www.php-gtk.com.br/book [Site do Autor] - http://www.pablo.blog.br [SQLite] - http://www.sqlite.org Sobre o Autor Pablo Dall'Oglio é bacharel em Informática pela UNISINOS. Autor dos projetos em software livre Agata Report e Tulip, além dos livros "PHP Programando com Orientação a Objetos" e "PHP-GTK Criando Aplicações Gráficas com PHP", pela editora Novatec. Mantenedor da comunidade brasileira de PHP-GTK. Atualmente, é diretor de tecnologia e proprietário da Adianti Solutions (www.adianti.com.br). Pode ser contatado pelo e-mail pablo@php.net.