+4

Trabalhando com Banco de Dados DBASE

criado por Leonardo Caitano em 24/08/2003 11:43am
Lendo um registro do banco de dados (parte 1)

array dbase_get_record (int dbase_identifier, int record)

A função dbase_get_record() lê um registro do banco de dados e o retorna em um vetor.

Cada campo é convertido ao tipo de dados apropriado do PHP, exceto:
- Datas que permanecem como strings
- Inteiros que teriam causado um transbordamento (> 32 bits) que seriam devolvidos como string.

Além dos indices numéricos o vetor que contém os dados do registro contém um índice associativo de nome 'deleted' que indica se o registro está marcado ou não, o valor 1 indica que este campo está marcado e 0 caso contrário.

Segue abaixo um exemplo de sua utilização:

<?php
$db = dbase_open("clientes.dbf", 0);
$registro = dbase_get_record($db, 1);

print "data  : $registro[0]<br>";
print "nome  : $registro[1]<br>";
print "idade : $registro[2]<br>";
print "email : $registro[3]<br>";
print "membro: $registro[4]<br>";

// agora verificamos se o registro está marcado
if ($registro['deleted']) {
    print '__DELETADO__';
}
dbase_close($db);
?>

Lendo um registro do banco de dados (parte 2)

array dbase_get_record_with_names (int dbase_identifier, int record)

A função dbase_get_record_with_names() lê um registro do banco de dados e o retorna em um vetor associativo. Essa função é idêntica a dbase_get_record() exceto que o vetor retornado por dbase_get_record_with_names() é associativo, sendo que cada índice do vetor corresponde ao nome de um campo no banco de dados.

Segue abaixo um exemplo de sua utilização:

<?php
$db = dbase_open("clientes.dbf", 0);
$registro = dbase_get_record_with_names($db, 1);

print "data  : $registro[data]<br>";
print "nome  : $registro[nome]<br>";
print "idade : $registro[idade]<br>";
print "email : $registro[email]<br>";
print "membro: $registro[membro]<br>";

// agora verificamos se o registro está marcado
if ($registro['deleted']) {
    print '__DELETADO__';
}
dbase_close($db);
?>

Procurei desenvolver os scripts bem simplificados de forma que facilitasse o entendimento.

Espero ter ajudado, até a próxima.

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 (~12 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 (~14 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 (~19 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 (~19 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 (~19 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 (~20 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 (~21 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 (~21 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 (~21 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 (~21 anos atrás)

Novo Comentário:

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