Usando tabelas dBase com PHP
Moderador: Moderadores
Usando tabelas dBase com PHP
Galera, tudo bom? sei que o post é antigo e tal, mas to com uma duvida cruel aqui e faz tempo que to quebrando a cabeça pra resolver e nada, sou iniciante ainda nao manjo muito, bom vou explicar,
meu sisteminha php lê um arquivo dbf e mostro ele na tela, porem eu preciso alterar alguns dados exemplo
* meus campos tem
nome, sobre nome, idade, endereço, cidade, etc
e são varios registro, dai quero localizar um atraves do que mostro na tela, e alterar ou incluir algum dado que esta faltando.
como posso fazer isso no php? inserir dados no dbf usando php?
obrigado de coração desde já
abs
meu sisteminha php lê um arquivo dbf e mostro ele na tela, porem eu preciso alterar alguns dados exemplo
* meus campos tem
nome, sobre nome, idade, endereço, cidade, etc
e são varios registro, dai quero localizar um atraves do que mostro na tela, e alterar ou incluir algum dado que esta faltando.
como posso fazer isso no php? inserir dados no dbf usando php?
obrigado de coração desde já
abs
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Usando tabelas dBase com PHP
Amiguinho,
Parece que voce já entrou no trem na penúltima estação. Mas o trem vai volta e portanto pegue carona no primeiro post do tópico para ver alguns exemplos de manuseio dos comandos.
Se voce já lista, abre a tabela etc é porque já tem configurado o módulo em seu servidor web local.
Veja a lista de comandos existentes neste módulo:
Como voce pode ver não tem um comando Seek ou Locate mas voce pode usar o comando dbase_get_record() onde voce define o numero do registro fisico do mesmo.
Em sua lista, inclua uma coluna contendo o numero do registro ou sequencial. Esta informação numérica deverá ficar em formato de link, onde o link executará o comando dbase_get_record(..., numeroDoRegistro ) e depois capturar todos os dados para então preencher os campos que irão receber manutenção.
Pela existencia de poucos comandos voce deve avaliar o uso pesado, pois o .ASP e o .PHP são poderosos o bastante para manipular qualquer base de dados. Mas convenhamos que quebra um galho.
Graças a Deus o tópico permite falar do uso de tabelas dBase por PHP usando não só os comandos nativos como por ODBC.
Analise todos os posts, tire conclusões e dê sugestões.
Parece que voce já entrou no trem na penúltima estação. Mas o trem vai volta e portanto pegue carona no primeiro post do tópico para ver alguns exemplos de manuseio dos comandos.
Se voce já lista, abre a tabela etc é porque já tem configurado o módulo em seu servidor web local.
Veja a lista de comandos existentes neste módulo:
Código: Selecionar todos
dbase_add_record -- Adiciona um registro a um banco de dados dBase
dbase_close -- Fecha um banco de dados dBase
dbase_create -- Cria um banco de dados dBase
dbase_delete_record -- Exclui um registro de um banco de dados dBase
dbase_get_header_info -- Retorna informações do cabeçalho de um banco de dados
dbase_get_record_with_names -- Obtem um registro apartir de um banco de dados dBase em uma matriz associativa
dbase_get_record -- Obtem um registro apartir de um banco de dados dBase
dbase_numfields -- Retorna quantos campos existem em um banco de dados dBase
dbase_numrecords -- Retorna quantos registros existem em um banco de dados dBase
dbase_open -- Abre um banco de dados dBase
dbase_pack -- Apaga permanentemente os registros do banco de dados dBase
dbase_replace_record -- Substitui um registro em um banco de dados dBase
Em sua lista, inclua uma coluna contendo o numero do registro ou sequencial. Esta informação numérica deverá ficar em formato de link, onde o link executará o comando dbase_get_record(..., numeroDoRegistro ) e depois capturar todos os dados para então preencher os campos que irão receber manutenção.
Pela existencia de poucos comandos voce deve avaliar o uso pesado, pois o .ASP e o .PHP são poderosos o bastante para manipular qualquer base de dados. Mas convenhamos que quebra um galho.
Graças a Deus o tópico permite falar do uso de tabelas dBase por PHP usando não só os comandos nativos como por ODBC.
Analise todos os posts, tire conclusões e dê sugestões.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Usando tabelas dBase com PHP
Amigo, agradeço pela resposta desde já!!!
)
)
bom meu codigo segue abaixo para você ter uma ideia do que to fazendo, não entendi muito bem a forma que vou pegar esse registro do dbf,
estou lendo os post novamente e fazendo uns testes aqui para ver se consigo, até agora nao consegui nada ainda... :'(
pelo que entendi, eu tenho que criar no dbf um campo em formato de link esse campo tem que ser sequencial (numerico) isso? nao me xinga que sou novo ainda nisso, rs :%
Meu codigo
bom meu codigo segue abaixo para você ter uma ideia do que to fazendo, não entendi muito bem a forma que vou pegar esse registro do dbf,
estou lendo os post novamente e fazendo uns testes aqui para ver se consigo, até agora nao consegui nada ainda... :'(
pelo que entendi, eu tenho que criar no dbf um campo em formato de link esse campo tem que ser sequencial (numerico) isso? nao me xinga que sou novo ainda nisso, rs :%
Meu codigo
Código: Selecionar todos
//Arquivo DBF
$dbname = "teste.dbf";
//Abre o banco de dados Dbase - 0 – somente leitura, 1 – somente escrita, 2 – leitura/escrita
$con = dbase_open($dbname,2) or die("Erro na Conexão com o arquivo DBF");
//Retorna quantos registros tem no banco de dados
$rows = dbase_numrecords($con);
//Lista os dados da Tabela
for($i=1;$i<=$rows;$i++) {
$registro = dbase_get_record($con,$i);
print $registro[0]; // codigo unico exemplo 0120145, os numeros não se repetem.
print $registro[17]; //nome
print $registro[18]; //idade
print $registro[19]; //cidade
}- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Usando tabelas dBase com PHP
Amiguinho,
Esse é o praxe. Este numero sequencial deverá ser usado como link para a busca do registro, estilo:
Código: Selecionar todos
tem que ser sequencial (numerico) isso?Código: Selecionar todos
for($i=1;$i<=$rows;$i++) {
$registro = dbase_get_record($con,$i);
echo " <a href=AlteraRegistro.php?registro=" . $registro[0] . ">" . $registro[0] . "</a>\n";
print $registro[17]; //nome
print $registro[18]; //idade
print $registro[19]; //cidade
}
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Usando tabelas dBase com PHP
rs, agora entendi o que você quis dizer "em formato de link" rs.
bom no meu dbf eu criei uma tabela sequencial, agora eu dou um print nela junto com os outros campos....
preciso saber todas as colunas que tenho no dbf, ou posso alterar somente uma coluna do DBF, exemplo altero somente o nome ?
esse "AlteraRegistro.php" eu vou mandar pra pagina o numero do registro.
dentro dessa pagina "AlteraRegistro.php eu pego
obrigado desde já pela atenção :)Pos
bom no meu dbf eu criei uma tabela sequencial, agora eu dou um print nela junto com os outros campos....
preciso saber todas as colunas que tenho no dbf, ou posso alterar somente uma coluna do DBF, exemplo altero somente o nome ?
esse "AlteraRegistro.php" eu vou mandar pra pagina o numero do registro.
dentro dessa pagina "AlteraRegistro.php eu pego
Código: Selecionar todos
$registro = $_GET ['registro'];
$db = dbase_open('teste.dbf', '2');
... como funciona essa parte ?
if (!dbase_replace_record($db, ???, ???)) {
print 'Não foi possível alterar registro no banco de dados';
}
dbase_close($db);- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Usando tabelas dBase com PHP
Amiguinho,
Veja o funcionamento do passo 10 do primeiro post.
Voce devera criar um form e dentro dele colocar os input para cada campo que deseja pegar informações e o conteudo de cada campo jogar no parametro value.
Algo como:
Veja o funcionamento do passo 10 do primeiro post.
Voce devera criar um form e dentro dele colocar os input para cada campo que deseja pegar informações e o conteudo de cada campo jogar no parametro value.
Algo como:
Código: Selecionar todos
echo "<FORM ..."
for($i=1;$i<=$rows;$i++) {
$registro = dbase_get_record($con,$i);
echo " <input value=" . $registro[0] . ">\n";
}
echo "</FORM>
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Usando tabelas dBase com PHP
Então, até ai eu entendi, eu crio um form, pego os dados, e mando eles para a pagina de alteração, e la na pagina pego todos os dados que quero alterar, o que não to conseguindo fazer é nessa pagina de alteração, como vou alterar? como fica essa pagina?
outra duvida é se altero somente o nome, o restante dos dados permanecem no dbf normal? para o registro alterado?
outra duvida é se altero somente o nome, o restante dos dados permanecem no dbf normal? para o registro alterado?
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Usando tabelas dBase com PHP
Amiguinho:
Faça mais ou menos assim:
No SalvaRegistro.php voce salva somente os registros apresentados no FORM.
Faça mais ou menos assim:
Código: Selecionar todos
$registro = dbase_get_record($con,$i);
echo "<FORM action=SalvarRegistro.php ..."
echo " <input value=" . $registro[8] . ">\n";
echo " <input value=" . $registro[3] . ">\n";
echo " <input value=" . $registro[4] . ">\n";
echo " <input value=" . $registro[9] . ">\n";
echo "</FORM>
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Usando tabelas dBase com PHP
Amigo, deu certo aqui, AGRADEÇO E MUITO PELA PACIÊNCIA E AJUDA, vlwwww mesmo :{ :)Pos :)Pos :-Y :-Y
se alguem precisar chama ai que o que puder ajudar, to aqui.
abssss
se alguem precisar chama ai que o que puder ajudar, to aqui.
abssss
Usando tabelas dBase com PHP
rochinha ficou com saudades? rs
brincadeira, kra me tira uma duvida, após alterar um registro no dbf, eu consigo atualizar ele? exemplo alterar e logo após atualizar?
eu consigo alterar tudo certinho porem depois quando abro no pelo FoxPro ele da um erro de codificação e erro de índice dai quando eu organizo eu perco o que eu alterei.
vlwwww
brincadeira, kra me tira uma duvida, após alterar um registro no dbf, eu consigo atualizar ele? exemplo alterar e logo após atualizar?
eu consigo alterar tudo certinho porem depois quando abro no pelo FoxPro ele da um erro de codificação e erro de índice dai quando eu organizo eu perco o que eu alterei.
vlwwww
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Usando tabelas dBase com PHP
Amiguinho,
O tratamento de .DBF pelo .PHP não leva em consideração arquivos de indice. Portanto se voce deseja visualizar o arquivo alterado por .PHP no FoxPro deverá reindexar.
Para uma melhor performance ou tratamento de indices voce deverá utilizar abertura de .DBF por meio de ODBC, pois os comandos dBase para .PHP são básicos demais e não oferecem maior estrutura.
O tratamento de .DBF pelo .PHP não leva em consideração arquivos de indice. Portanto se voce deseja visualizar o arquivo alterado por .PHP no FoxPro deverá reindexar.
Para uma melhor performance ou tratamento de indices voce deverá utilizar abertura de .DBF por meio de ODBC, pois os comandos dBase para .PHP são básicos demais e não oferecem maior estrutura.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Usando tabelas dBase com PHP
Amigos,
Estou precisando de ajuda novamente nesta questão: estou tentando criar uma tabela dBase em PHP, mas está dando o seguinte erro:
Minha função está assim:
Será que estou fazendo algo errado?
Estou precisando de ajuda novamente nesta questão: estou tentando criar uma tabela dBase em PHP, mas está dando o seguinte erro:
Código: Selecionar todos
PHP Warning: dbase_create() [<a href='function.dbase-create'>function.dbase-create</a>]: Unable to create database (13): Permission denied in C:\Inetpub\Wwwroot\inaciobr\criarec.php on line 28Código: Selecionar todos
<html>
<head>
<title>Criando recado</title>
</head>
<body>
<?php
$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME'])."/meusarq/agenda/;";
echo $dsn;
$conn= odbc_connect($dsn,"","");
echo $dsn;
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
else
echo "Conectado";
sleep(5);
// definindo a estrutura
$estruct = array(
array("recado", "C", 240),
array("resposta", "C", 240),
array("data", "D"),
array("hora", "C", 8),
);
$nmbase = "rec"+date("H:i");
echo $nmbase;
// criando o banco de dados
if (!dbase_create($nmbase, $estruct)) {
print "O banco de dados não pode ser criado.";
}
?>
Inacio de Carvalho Neto
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Usando tabelas dBase com PHP
cjp escreveu:Será que estou fazendo algo errado?
Código: Selecionar todos
$nmbase = "rec"+date("H:i");
echo $nmbase;Lembrando, que no nome do arquivo não pode conter caracteres especiais, apenas letras e números são permitidos. E também a pasta onde será criado o arquivo tem que ter permissão para gravação, então verifique com o suporte do seu servidor qual o procedimento para dar permissão de gravação para a pasta.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Usando tabelas dBase com PHP
Na verdade esse nome da base era apenas um teste que eu estava fazendo. Quero arrumar um jeito em que o nome da base varie em cada caso, por isso pensei em usar a hora atual como complemento do nome da base a ser criada, para diferenciá-la de outras.
Mas mesmo usando um nome fixo (recado), não está funcionando. Ainda está dando "Permission denied". Então, deve ser a outra questão que vc citou: falta de permissão para gravar na pasta. O estranho é que eu consigo salvar arquivos nessa mesma pasta (/meusarq/agenda) sem problema, tanto pelo FTP do Windows quanto pelo DOS ou pelo Harbour. Será que precisa de uma autorização especial para criar arquivos da forma como estou fazendo aqui?
Mas mesmo usando um nome fixo (recado), não está funcionando. Ainda está dando "Permission denied". Então, deve ser a outra questão que vc citou: falta de permissão para gravar na pasta. O estranho é que eu consigo salvar arquivos nessa mesma pasta (/meusarq/agenda) sem problema, tanto pelo FTP do Windows quanto pelo DOS ou pelo Harbour. Será que precisa de uma autorização especial para criar arquivos da forma como estou fazendo aqui?
Inacio de Carvalho Neto
Usando tabelas dBase com PHP
Caros colegas,
Resolvi a questão no provedor e funcionou a criação da base.
Agora estou tentando adicionar um campo à base criada, mas está dando o seguinte erro:
A minha função está assim:
O erro está dando na linha 29, que é esta:
E na linha 31, que é esta:
Tem algo errado no meu código?
Resolvi a questão no provedor e funcionou a criação da base.
Agora estou tentando adicionar um campo à base criada, mas está dando o seguinte erro:
Código: Selecionar todos
PHP Warning: dbase_add_record() [<a href='function.dbase-add-record'>function.dbase-add-record</a>]: Unable to find database for identifier 0 in C:\Inetpub\Wwwroot\inaciobr\criarec.php on line 29
PHP Warning: dbase_close() [<a href='function.dbase-close'>function.dbase-close</a>]: Unable to find database for identifier 0 in C:\Inetpub\Wwwroot\inaciobr\criarec.php on line 31Código: Selecionar todos
<html>
<head>
<title>Criando recado</title>
</head>
<body>
<?php
$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME'])."/meusarq/agenda/;";
$conn= odbc_connect($dsn,"","");
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
else
//echo "Conectado";
// definindo a estrutura
$estruct = array(
array("recado", "C", 240),
array("resposta", "C", 240),
array("data", "D"),
array("hora", "C", 8),
);
$nmbase = "recU".date("i").date("s").".dbf"; //+date("H:i");
echo '<br>';
// criando o banco de dados
dbase_create("tarefas/marina/".$nmbase, $estruct);
dbase_open("tarefas/marina/".$nmbase, 2);
$registro = array("testando 1 2 3", " ", date("d/m/y"), date("H:i:s"));
dbase_add_record("tarefas/marina/".$nmbase, $registro);
echo "Recado criado com sucesso";
dbase_close($nmbase);
?>
Código: Selecionar todos
dbase_add_record("tarefas/marina/".$nmbase, $registro);Código: Selecionar todos
dbase_close($nmbase);Inacio de Carvalho Neto

