/* veja :
O PHP não possui um comando específico para criação de bases de dados FireBird, mas é possível utilizarmos o cliente isql nativo para realizar esta função. Para isto, é preciso apenas criar um pequeno script, e executar o isq com este script como parâmetro.
Usando o isql
Para realizarmos nosso objetivo, vamos usar a opção de file input do comando isql para executar o script que contém os comandos SQL necessários para criação da base de dados.
isql -i filename
Nosso objetivo é criar um programa em PHP que aceite de um usuário um nome para a base de dados, e transforme esta informação em um pequeno script SQL que será passado como parâmetro para o comando isql.
Aceitando o Nome do Banco de Dados
O seguite script HTML aceita um nome para uma base de dados, e transfere esta informação para um script PHP que cria e executa o arquivo SQL:
<html>
<head>
<title>FireBird CREATE DATABASE</title>
</head>
<BODY bgcolor="#ffffff" text="black" link="#0000a0" alink="#0000a0" vlink="#0000a0"> <font face="arial,verdana,helvetica" size=3>
<b>FireBird CREATE DATABASE</b>
<p>
<table border=0 cellpadding=5 cellspacing=0 bgcolor="#6699cc">
<tr>
<td> <font face="arial,verdana,helvetica" size=2>
<FORM ACTION="ibcreate.php" METHOD="POST">
Database:<BR>
<INPUT NAME="ibname" TYPE=text SIZE=50 MAXSIZE=80 VALUE="">
<P>
<INPUT TYPE=submit VALUE="Send"> <INPUT VALUE="Clear" TYPE=reset>
</FORM>
</td>
</tr>
</table>
</body>
</html>
Testando a Existência do Banco de Dados
Antes de criarmos um novo banco de dados, é necessário checarmos se já existe alguma base com o mesmo nome. O método mais fácil para isso, é tentando realizar uma conexão com um banco de nome idêntico ao que queremos criar:
$ibname .=".gdb"; (opcionalmente podemos adicionar a extensão ".gdb" ao nome da base de dados)
$conn=ibase_connect("localhost:/home/firebird/$ibname", "SYSDBA", "masterkey");
if (!$conn) {
$ibok=true;
} else {
$ibok=false;
ibase_close($conn);
}
Caso a variável boolena $ibok retorne True, significa que a tentativa de conexão com o banco de dados falhou, provando assim que o mesmo não existe. Portanto, podemos usar o nome para criação de uma nova base de dados.
Criando o script SQL
$ibcreate="CREATE DATABASE "/home/firebird/$ibname" PASSWORD "masterkey";n";
$ibscript=fopen("/home/firebird/ibcreate.sql","w");
fwrite($ibscript,$ibcreate);
fclose($ibscript);
Obs:: É preciso ter permissão de escrita no diretório selecionado (/home/firebird/) para geração do arquivo. Caso o servidor Web seja o Apache, em ambiente Linux, normalmente os comandos:
chown -R apache /home/firebird
chgrp -R apache /home/firebird
chmod -R 0775 /home/firebird
Darão privilégios de escrita para o PHP executado via browser.
Executando o Comando isql
if (!exec("/opt/firebird/bin/isql -i /home/firebird/ibcreate.sql"))
die ("Erro executando isql");
echo "O Banco de Dados: $ibname, foi criado com sucesso!";
Se o comando exec encontrar erros, o comando die ("Erro executando isql") será executado, e o script PHP será finalizado.
É bom lembrar que nosso exemplo apenas cria o banco de dados. Muitos outros parâmetros podem ser utilizados (tais como: PAGE SIZE, DIALECT, USER, etc.) como argumentos na expressão CREATE DATABASE.
O fonte ibcreate.php:
<html>
<head>
<title>FireBird CREATE DATABASE</title>
</head>
<BODY bgcolor="#ffffff" text="black">
<font face="arial,verdana,helvetica" size=3>
<?
$ibname .=".gdb";
$conn=ibase_connect("localhost:/home/firebird/$ibname", "SYSDBA", "masterkey");
if (!$conn) {
$ibok=true;
} else {
$ibok=false;
ibase_close($conn);
}
if ($ibok) {
$ibcreate="CREATE DATABASE "/home/firebird/$ibname" PASSWORD "masterkey";n";
$ibscript=fopen("/home/firebird/ibcreate.sql","w");
fwrite($ibscript,$ibcreate);
fclose($ibscript);
if (!exec("/opt/firebird/bin/isql -i /home/firebird/ibcreate.sql"))
die ("Erro executando o comando isql");
echo "O Banco de D: $ibname, foi criado com sucesso!";
} else {
echo "Impossível criar o Banco de Dados: $ibname. Banco de Dados já existe!";
}
?>
</body>
</html>
Firebird */