+4

Trabalhando com Banco de Dados DBASE

criado por Leonardo Caitano em 24/08/2003 11:43am
Criando um banco de dados

int dbase_create (string filename, array fields)

A função dbase_create() cria um bando de dados do dbase a partir de um vetor que possui a estrutura do banco, e seu nome é especificado por filename. A função retorna um identificador de arquivo dbase, ou seja, um dbase_identifier em caso de sucesso, ou FALSE caso falhar.

Exemplo:
<?php
dbase_create('clientes.dbf', $estruct);
?>

Será criado um banco de dados chamado clientes.dbf baseado na estrutura definida por $estruct.

Antes de usar a função dbase_create você deve definir a estrutura do banco. Essa estrutura é um vetor contendo sub-vetores, onde cada sub-vetor contém a definição dos atributos de um campo do banco de dados.

Exemplo:
<?php
$estruct = array("idade", "N", 3, 0);
?>

A primeira posição do vetor especifica o nome do campo, a segunda especifica o tipo de dados do campo, a terceira especifica o tamanho do campo, e por fim a quarta posição especifica o número de casas decimais.

Os tipos de campos disponíveis são:
L - Boolean
M - Memorando
D - Data
N - Número
C - Caracteres ( string )

Segue abaixo um exemplo de sua utilização:

<?php
// definindo a estrura
$estruct = array(
    array("data", "D"),
    array("nome", "C", 50),
    array("idade", "N", 3, 0),
    array("email", "C", 128),
    array("membro", "L")
);

// criando o banco de dados
if (!dbase_create('clientes.dbf', $estruct)) {
    print "O banco de dados não pode ser criado.";
}
?>

Obtendo informações do banco de dados

int dbase_numfields (int dbase_identifier)
int dbase_numrecords (int dbase_identifier)

As funções dbase_numfields() e dbase_numrecords() retornam o número de campos e registros respectivamente. O argumento dbase_identifier deve ser um identificador de arquivo dbase válido retornado por uma chamada a dbase_open() ou dbase_create().

Segue abaixo um exemplo de sua utilização:

<?php
$db = dbase_open("clientes.dbf", 0);
printf("clientes.dbf contém %d campos e %d registros\n", dbase_numfields($db), dbase_numrecords($db));
dbase_close($db);
?>

Comentários:

Mostrando 1 - 10 de 22 comentários
Prezados colegas,

Preciso criar uma rotina que lê registros de um arquivo DBF com poucos registros e os mostrar na tela. Alguém poderia me informar como fazer para habilitar meu php para suportar o dbase_create.

Abraços a todos
16/07/2012 3:42pm (~11 anos atrás)

Rapáz, sei que faz um tempinho que acessaram o arquivo, mas para não abrir outro tópico estou escrevendo nesse mesmo.
O problema é que ainda estou recebendo a mensagem de erro quando tento manipular o arquivo .dbf

Fatal error: Call to undefined function dbase_open() in /var/www/site/arquivo.php on line 10

Já fiz a instalação do módulo php-db, mas mesmo assim não identifiquei no php.ini a extension=php-dbase.so (uso linux).
Coloquei a extension na marra e também não funcionou...

Continuo com o problema, alguém tem outra solução?
Grato.
16/09/2010 11:33am (~13 anos atrás)

Existe alguma solução para o caso de acesso concorrente à modificação de registros?

Como pode ser feito um controle para não danificar o banco de dados, ou seja, não permitir modificações concorrentes?

20/12/2005 4:57am (~18 anos atrás)

Walter disse:
Olá, Leonardo, como vai, sou novo na lista e acompanhei o seu artigo e não rodou, abilitei a dll no php.ini e nada, isso offline, onde preciso que rode a aplicação. Uso o easyPHP como servidor interno, no Windows. Um pouco da aplicação, preciso resgatar dados num .DBF de uma outra aplicação pelo php, pelo seu artigo vi que consiguirei, só falta mesmo rodar. o erro que dá é:

Fatal error: Call to undefined function: dbase_open() in c:\arquivos de programas\easyphp1-8\www\teste dbf\index.php on line 2

Se puder ajudar, agradeço

Abraço
10/11/2005 11:19am (~18 anos atrás)

quero saber como eu faco para colocar um registro em ordem alfabetica .. no caso quando esta saindo como resultado de uma busca..
30/10/2005 11:09am (~18 anos atrás)

S@lve,

Alguém poderia me informar como fazer, para habilitar meu php para suportar o dbase_create.

Detalhe: uso a versão 4.0.3 instalado via pacote RPM, e eu não consigo usar a opção ./configure --enable-dbase.

Alguém ja passou por esse problema.

Grato,

Rodrigo
16/08/2004 5:32pm (~19 anos atrás)

Muito bom o artigo, é claro que para utilizar o dbase como banco de dados web não é bom, mas para o meu caso que só preciso ler alguns (poucos) registros e mostrar na tela, funcionou muito bem.
23/11/2003 7:38am (~20 anos atrás)

Caro, tem como criar uma consulta sql? ou é necessário percorrer todo o banco para extrair uma informação
08/11/2003 2:53pm (~20 anos atrás)

É normal essa lentidão, o clipper tem suporte nativo a dbase, ja o php não.
E como eu descreví no artigo, não aconselho a usar a base de dados dbase na web, em vez disso converta seu arquivo dbase em instruções sql com meu scritp que disponibilizei aqui no phpbrasil, convert_dbase_sql .
Boa sorte.
06/09/2003 12:36pm (~20 anos atrás)

Pedro César disse:
Vi suas dicas para acessar o dbase, mas em um banco de dados com cerca de 8 mil registros demora um pouco para aparecer na tela o select (select *), o que nao aontece no clipper (que na mesma situacao e bem rapido) ambos estao locais. E normal? Para acessar a base dbase o php e assim mesmo, tao mais lento que o clipper? ou fiz alguma coisa errada? Se quiser posso mandar o codigo.

Obrigado desde ja
06/09/2003 7:11am (~20 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)