%
function CalcBasePath()
{
var S = Request.ScriptName;
var R = '';
var I = S.length
while (I > 0)
{
if (S.charAt(I) == '/') {
R = S.substring(0,I);
break;
}
I--;
}
return "http://" + Request.Host + R + "/../fb/";
}
function GetBasePath()
{
if (Application.Designing)
return Application.QualifyFileName(' '); // relative directory
else
return CalcBasePath(); // virtual directory
}
%>
Untitled Document
VBMcgi é uma biblioteca multiplataforma para desenvolvimento de aplicações CGI, 100% open-source e muito fácil de ser utilizada. Com este recurso, podemos criar aplicações Web usando todos os recursos da linguagem C++, sem misticismo!
Introdução:
Neste documento, criaremos um CGI que consulta em uma tabela de telefone os números solicitados, usando os recursos básicos do SQL do banco InterBase/Firebird. Após a consulta ser efetuada com sucesso, será gerada uma saída em html, permitindo assim a consulta via web.
Neste momento, acabamos de criar a biblioteca VBMcgi, versão estática e dinâmica (libvbmcgi.a e vbmcgi.so). Agora copie estes dois arquivos para um dos diretórios encontrado no arquivo /etc/ld.so.conf, ou inclua o path das bibliotecas VBMcgi no arquivo ld.so.conf.
Se você optou em alterar o arquivo ld.so.conf, não esqueça de utilizar o comando ldconfig para atualizar o arquivo ld.so.cache. No meu caso decidi copiar as bibliotecas para o path padrão:
Neste ponto, temos a nossa biblioteca VBMcgi instalada e pronto para ser usada.
Criando o banco de dados:
Não é o objetivo deste tutorial explicar a instalação do banco de dados firebird ou InterBase/Firebird.
A instalação do firebird não tem segredo, pois após o comando rpm, tudo estará devidamente configurado e instalado. Agora se voce deseja instalar o InterBase/Firebird por algum motivo, será encontrado todos os procedimento de instalação deste pacote em http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=180
Segue abaixo o metadata do banco de dados que usaremos neste tutorial. Crie um banco dados com a estrutura abaixo:
CREATE TABLE TELEFONES
(
CODIGO INTEGER,
NOME VARCHAR(60),
DDD VARCHAR(2),
TELEFONE VARCHAR(8),
TIPO VARCHAR(15)
);
/* Index definitions for all user tables */
CREATE INDEX NOME ON TELEFONES(NOME);
CREATE GENERATOR SEQ_TELEFONE;
SET TERM ^ ;
/* Triggers only will work for SQL triggers */
CREATE TRIGGER SEQ_TELEFONE FOR TELEFONES
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.CODIGO = GEN_ID (SEQ_TELEFONE, 1);
END
^
COMMIT WORK ^
SET TERM ;^
Volto a mencionar que este tutorial não contempla conceitos básicos sobre o banco Firebird. Em caso de dúvida na criação do banco, solicite-me via e-mail o banco de dados em branco, ou consulte na internet como executar a criação do mesmo.
Interface em HTML:
Agora criaremos uma interface em html cujo o objetivo é de enviar para a aplicação CGI, o nome a ser consultado no banco de dados. Após a consulta o CGI irá gerar um o resultado em html. Segue abaixo o código em html:
Repare que a ação do botão buscar é enviar ao binário sel_usu a variável s_name, que contém o nome a ser pesquisado no banco. O binário deve estar nos diretórios padrão cgi-bin de sua distribuição, e irá receber esta variável como parâmetro .
Segue abaixo o resultado visual deste tutorial:
Criando o CGI em C++:
Abaixo encontra-se o código fonte CGI em C++. Em virtude da extensão do código fonte, irei disponibiliza-los para download no fim deste artigo. Para maiores detalhes no aspecto de aprendizado, consulte a documentação do Firebird/InterBase e da biblioteca VBMcgi.
O código abaixo é bem simples. Após receber a variável s_name da interface HTML, o select é executado no banco de dados usando a cláusula where do sql. Concluindo esta operação, o resultado é exibido em html construído pela nossa aplicação.
As bibliotecas a serem utilizadas, exceto a vbmcgi, deverão variar de acordo como a versão do banco de dados instalado. Para maiores informações, consulte a documentação.
Após a compilação, devemos copiar os arquivos select.html e logo_tel.jpg (imagem) para o diretório default do apache e o binário sel_usu para o diretório cgi-bin.
Não esqueça de ajustar o caminho do banco de dados no fonte, o IP do servidor e a senha do SYDBA caso não seja masterkey.
Para facilitar a execução deste tutorial, segue abaixo o link para o download dos fontes.