Sie sind auf Seite 1von 4

Acessando o MySQL com PHP-GTK

por Bruno Rodrigues Silva

Nos últimos meses, assisti à uma revolução no que diz respeito à programação utilizando
php. Os que já se acostumavam com a linguagem e pensavam até que já sabiam tudo de
PHP estão "um pouco frustrados". Tudo isso ocorre em virtude da extensão PHP-GTK,
criada recentemente, que possibilita utilizar as funções da biblioteca GTK em ambiente de
programação PHP.

Com essa extensão podemos criar janelas etc. Seria como programar em Delphi, mas usando as
facilidades da linguagem PHP.

Nesse artigo demonstrarei como criar uma pequena aplicação PHP-GTK, armazendo informação em um
banco de dados.

Para os que estão acostumados com o Delphi e similares, estes ficarão um pouco aterrorizados em ter
que fazer tudo em linha de código, mas num próximo artigo demonstrarei como utilizar a ferramenta
GLADE para auxiliar no trabalho mais árduo (criar e formatar as janelas, botões etc..).

Descrição da aplicação

Vamos desenvolver uma aplicação baseada em PHP-GTK, que armazena informação em um banco de
dados MySQL. Não abordarei o processo de instalação e configuração do PHP-GTK e MySQL, pois o
mesmo pode ser encontrado em http://gtk.php.net e http://www.mysql.com.

A aplicação servirá para armazenar os produtos vendidos em um estabelecimento comercial.

Criando a base de dados no MySQL

Execute a SQL abaixo para criar a base de dados e a tabela.

# Cria a base dados apl_gtk


CREATE DATABASE apl_gtk;

# Seta a base de dados criada


USE apl_gtk;

# Cria a tabela produtos, com os campos cód, descrição e preço


CREATE TABLE produtos (
cod int(2) not null auto_increment,
descricao varchar(50) not null,
preco float (5,2) not null,
PRIMARY KEY (cod)
);
Abra seu editor favorito e vamos ao trabalho. O código da aplicação PHP-GTK está abaixo com os
devidos comentários.

<?php
// carrega a extenssão PHP-GTK, de acordo com sistema operacional utilizado
if (strtoupper(substr(PHP_OS, 0, 3))=='WIN') {
dl('php_gtk.dll');
} else {
dl('php_gtk.so');
}

// essa função é chamada quando o usuário clica


// no botão fechar ( X ) da janela principal
function destroy()
{
Gtk::main_quit(); //Fecha a aplicação
}

// essa função é chamada toda vez que é inserido


// algo no banco de dados - serve como confirmação
function nova_janela()
{
$janela = &new GtkWindow; //Instancia a classe GtkWindow e cria o objeto
$janela
$janela->set_title('Aviso'); //Seta um título para a janela secundária
$janela->set_default_size(250,95); //Define o tamanho da janela
$janela->set_position (GTK_WIN_POS_CENTER); //Define a posição da janela,
quando criada
$texto= &new GtkLabel('Sucesso no insert'); //Define um texto para a janela
$janela->add($texto); //Adiciona o objeto texto ao objeto janela
$janela->show_all(); //Mostra o objeto janela e seu conteúdo
}

// essa função é chamada para armazena


// o registro no banco de dados
function armazena ()
{
global $entrada; // reaproveita o objeto $entrada do programa principal;
global $entrada2; // reaproveita o objeto $entrada2 do programa principal;

$v1 = $entrada->get_text(); // captura o valor do primeiro campo


$v2 = $entrada2->get_text(); // captura o valor do segundo campo

$sql = "INSERT INTO produtos (descricao, preco) values ('$v1', '$v2')"; //Cria
a query sql
$con = mysql_connect("localhost", "root", "123456") or print mysql_error(); //
cria uma conexão com o banco de dados. Substitua localhost, root e 123456, pelas
configurações de acesso do seu banco de dados.
$db = mysql_select_db("apl1_gtk", $con); // seleciona o banco de dados
$exec = mysql_query($sql, $con); // executa o query sql
mysql_close($con); // fecha a conexão
$entrada->set_text(''); // esvazia o campo
$entrada2->set_text(''); // esvazia o campo
nova_janela(); // chama a função de confirmação
}

$janela = &new GtkWindow; // instancia a classe GtkWindow e cria o objeto $janela


$janela->set_title('Aplicação GTK acessando banco de dados'); // define o título da
janela principal
$janela->set_default_size(500,150); // define o tamanho da janela principal
$janela->set_position (GTK_WIN_POS_CENTER); // define a posição da janela principal

$janela->connect_object('destroy', 'destroy'); // chama a função destroy, quando o


evento destroy é aberto.

$tabela = &new GtkTable(6,4); // cria uma tabela com 6 linhas e 4 colunas


$janela->add($tabela); // adiciona o objeto tabela ao objeto janela

$botao = &new GtkButton('Armazenar'); // cria o objeto botão


$botao->connect_object ("clicked", "armazena"); // chama a função armazena quando o
evento clicked é aberto

$entrada = &new GtkEntry (); // cria o objeto caixa de texto

$entrada2 = &new GtkEntry (); // cria a segunda caixa de texto

$texto1 = &new GtkLabel ('Descrição'); // cria um objeto label

$texto2 = &new GtkLabel ('Preço'); // cria um segundo label

// define a posição dos objeto (Labels, caixa de textos e botão) dentro da tabela
$tabela->attach($texto1, 0, 1, 0, 1);
$tabela->attach($texto2, 0, 1, 2, 3);
$tabela->attach($entrada2, 2, 3, 2, 3);
$tabela->attach($entrada, 2, 3, 0, 1);
$tabela->attach($botao, 2, 3, 4, 5);
$janela->show_all(); // mostra a janela e seu conteúdo

Gtk::main(); // entra em loop para mostrar a aplicação


?>

Abra um terminal, entre no diretório da sua aplicação e digite "php nome_da_aplicacao.php". O fonte
será então interpretado pelo php-gtk e sua aplicação deverá se parecer com o screenshot abaixo.

Referências:

http://www.php.net - Site oficial do PHP


http://gtk.php.net - Site oficial do PHP-GTK
http://www.mysql.com - Site oficial do MySQL
http://www.ficmg.edu.br - Site da FIC/Caratinga-MG

Bruno Rodrigues Silva


Centro Doctum de Tecnologia Linux/MG
Ciência da Computação - FIC/MG