Sie sind auf Seite 1von 4

Inserindo e recuperando imagem no Firebird com PHP ================================================== Este artigo visa mostrar, atravs de um exemplo simples, como

inserir uma imagem (figura ou foto) em uma tabela do Firebird e posteriormente como recuperar essa imagem e mostr-la na tela, atravs de um formulrio feito em PHP. Para isso, ser necessrio j estar com o Apache, PHP e Firebird instalados. Caso ainda no os possua os softwares necessrios, os mesmos podem ser obtidos em: PHP: http://www.php.net/downloads.php Apache: http://www.apache.org/dist/httpd/binaries/win32 Firebird: http://sourceforge.net/projects/firebird Para iniciantes, no site http://www.hotscripts.com/Detailed/34825.html existe um Kit chamado "ApachePhpMysql" que instala e configura automaticamente o Apache e o PHP. Aps essa instalao, para que o Firebird possa executar no php, necessrio editar o arquivo php.ini tirando o comentrio da linha extension=php_interbase.dll e incluir em extension_dir o diretorio onde estaro as extenses (dll) que o PHP utiliza (extension_dir = "C:\PHP\extensions"). Neste exemplo, em ambiente Windows, ser considerado que o Apache est instalado no endereo C:\Apache2\WWW\localhost. Assim, os arquivos devero ser salvos dentro da pasta considerada, e executados atravs do browser pelo comando http://localhost/Inserefig.php . Este artigo est dividido em trs partes: 1) Criar uma tabela com um campo para armazenar o cdigo ou nome da imagem e outro onde ser armazenada a imagem propriamente dita; 2) Criar um formulrio PHP que solicitar o cdigo ou nome da imagem e ir inserir os mesmos (cdigo e imagem) na tabela; 3) Criar um formulrio que ir solicitar o cdigo ou nome da imagem e a recuperar da tabela, mostrando-a na tela.

======= Parte 1: criar a tabela no banco C:\EXEMPLO.GDB ======= CREATE TABLE IMAGE_DATA ( FILENAME CHAR(12) NOT NULL, IMAGEM BLOB SUB_TYPE -2 SEGMENT SIZE 80, PRIMARY KEY (FILENAME) );

======= Parte 2: ======= a) Criar o formulrio PHP que receber os parmetros (C:\Apache2\WWW\localhost\Inserefig.php) <html> <head> <title>PHP Teste</title> </head> <body> <?php echo "<p>Digite o Codigo e o Endereco da imagem</p>"; ?> <form action="inserefig_form.php" method="POST"> Codigo <input type="text" name="V_FILENAME" /> Endereco <input type="text" name="V_IMAGEM" /> <input type="submit"> </form> </body> </html> b) Criar o formulrio que far a insero no banco (C:\Apache2\WWW\localhost\Inserefig_form.php) <? $conexao = ibase_connect ("localhost:C:\EXEMPLO.GDB","SYSDBA","masterkey"); if ($conexao){ // tem de abrir um arquivo desse modo $file = fopen($_POST["V_IMAGEM"], "r"); // o blob_import s recupera arquivos de fopen (na realidade o handle dele) $blob = ibase_blob_import($file); // inicia transacao $trans=ibase_trans(); // necessrio passar $conexao antes da query $sql = ibase_prepare($conexao, "INSERT INTO IMAGE_DATA (FILENAME, IMAGEM) VALUES (?, ?)"); // passagem dos parmetros $resultado = ibase_execute($sql,$_POST["V_FILENAME"], $blob); // fecha transacao ibase_commit($trans); // liberar recursos ibase_free_query($sql); // checagem de erro $err_msg=ibase_errmsg(); if ($err_msg=="") { echo "Imagem gravada com sucesso !"; } else { echo "Imagem pode nao ter sido gravada : $err_msg "; } } else { echo("Erro ao conectar-se a base"); }

ibase_close($conexao); ?> ======= Parte 3: ======= a) Criar o formulrio PHP que receber o cdigo da imagem a ser pesquisada (C:\Apache2\WWW\localhost\Mostrafig.php) <html> <head> <title>PHP Teste</title> </head> <body> <?php echo "<p>Digite o Codigo da imagem</p>"; ?> <form action="Mostrafig_form.php" method="POST"> Codigo <input type="text" name="V_FILENAME" /> <input type="submit"> </form> </body> </html> b) Criar o formulrio que pesquisar a imagem no banco e a exibir na tela (C:\Apache2\WWW\localhost\Mostrafig_form.php) <? $conexao = ibase_connect ("localhost:C:\EXEMPLO.GDB","SYSDBA","masterkey"); $par = $_POST["V_FILENAME"]; $sql = "select IMAGEM from IMAGE_DATA where FILENAME = $par"; $result = ibase_query($conexao, $sql); $data = ibase_fetch_object( $result ); $blob_data = ibase_blob_info( $data->IMAGEM); $blob_hndl = ibase_blob_open( $data->IMAGEM); print ibase_blob_get( $blob_hndl, $blob_data[0] ); ibase_close($conexao); ?>

Artigo Original Marcel Francisco Mota marcel.mota@comunidade-firebird.org


Comunidade Firebird de Lngua Portuguesa Visite a Comunidade em: http://www.comunidade-firebird.org A Comunidade Firebird de Lngua Portuguesa foi autorizada pelo Autor do Original para divulgar este trabalho

Das könnte Ihnen auch gefallen