Clipper On Line • Ver Tópico - Usando tabelas dBase com PHP

Usando tabelas dBase com PHP

Discussão sobre outras linguagens de programação.

Moderador: Moderadores

 

Usando tabelas dBase com PHP

Mensagempor rochinha » 21 Mai 2014 02:33

Amiguinho,

Pelo que pude notar voce esta criando o nome da tabela on-the-fly usando concatenação. Ocorre que pode acontecer da contatenação acrescentar algum caractere ao nome que seja proibitivo a criação do mesmo como, espaços.

Preveja antes quais os resultados das variaveis de concatenação para sanar o problema.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4313
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 565 vezes
Mens.Curtidas: 192 vezes

Usando tabelas dBase com PHP

Mensagempor cjp » 21 Mai 2014 10:51

A concatenação a que vc se refere é o fato de a base estar sendo criada em uma subpasta? Se for isso, a base está sendo criada corretamente na subpasta esperada, e também estou abrindo (sem problema) a base na subpasta correta. Por que então não seria possível adicionar um campo nessa base?

Ou vc fala de concatenação por estar a base sendo criada com um nome diferente a cada vez? Se for isso, da mesma forma, a base está sendo criada com o nome esperado, também está sendo aberta essa mesma base.

Ou então eu não entendi o que vc quis dizer com concatenação.
Inacio de Carvalho Neto
cjp
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1161
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 6 vezes
Mens.Curtidas: 12 vezes

Usando tabelas dBase com PHP

Mensagempor cjp » 21 Mai 2014 17:11

Apenas para confirmar, fiz sem nada disso, mas continua dando o mesmo erro.

Confira:

<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 = "recado.dbf"; //"recU".date("i").date("s").".dbf"; //+date("H:i");

echo '<br>';

// criando o banco de dados
dbase_create($nmbase, $estruct);
dbase_open($nmbase, 2);
$registro = array("testando 1 2 3", "   ", date("d/m/y"), date("H:i:s"));
dbase_add_record($nmbase, $registro);
echo "Recado criado com sucesso";
dbase_close($nmbase);

?>


O erro tá assim:

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 31


Detalhe: conferi que o arquivo foi realmente criado.

O que seria o "identifier 0" referido no erro?
Inacio de Carvalho Neto
cjp
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1161
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 6 vezes
Mens.Curtidas: 12 vezes

Usando tabelas dBase com PHP

Mensagempor rochinha » 25 Mai 2014 13:39

Amiguinho,

Concatenção é o termo usado para demonstrar a união de palavras para formar uma só, exemplo "Jose" + space(1) + "Carlos" é uma concatenação.

Verifique o resultado da que voce está criando.
Acrescente alguma função que retorne o diretório relativo(Relative Path) de seu website, exemplo RelativePath() . "\inaciobr\" . $NomeDBF pode retornar C:\Inetpub\Wwwroot\inaciobr\criarec.php.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4313
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 565 vezes
Mens.Curtidas: 192 vezes

Usando tabelas dBase com PHP

Mensagempor cjp » 30 Dez 2014 22:40

Amigos, vou precisar novamente da ajuda de vocês nesta questão.

Tinha um PHP rodando sem problemas com acesso à base de dados .dbf.

Mas agora meu provedor resolveu fazer alguma modificação no sistema do meu FTP, eu ainda não entendi bem o que eles fizeram, mas, aparentemente, houve modificação no path do FTP, e agora não consigo mais conectar à base de dados.

Meu PHP está assim:

<html>
<head>
  <title>Consulta</title>
</head>
<body>
<?php
$txtArquivo = "compras.dbf";
$txtCampo = "PRODUTO";
$int = "INTERVALO";
$txtP1 = ($_POST["filtro3"]);
$txtP2 = strtoupper($txtP1);
$txtP3 = strtolower($txtP1);
$txtP4 = ucfirst($txtP1);
$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME'])."/meusarq/agenda/;";
$conn= odbc_connect($dsn,"","");
$merc1= $_POST['$merc1'];
$merc2= $_GET['$merc2'];
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
$sql="SELECT * FROM ".$txtArquivo." WHERE ".$int.">0 and (".$txtCampo." LIKE '%".$txtP1."%' OR ".$txtCampo." LIKE '%".$txtP2."%' OR ".$txtCampo." LIKE '%".$txtP3."%' OR ".$txtCampo." LIKE '%".$txtP4."%')";
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}

$i = 0;
$fieldCount = odbc_num_fields($rs);

echo "Produtos encontrados:";
echo '<br>';
 
while (odbc_fetch_row($rs))
{
  echo "<tr>";
 
 
  $prd=odbc_result($rs,'produto');

      $tid=odbc_result($rs,'codigo');
     echo "<td><a href='dproduto.php?id=".($tid)."' target='_top'>".$prd."</a></td>";
      echo '<br>';
     echo "Preço máximo: ".$prm; //"<td>$compname2</td>";

echo '<br>';
}
odbc_close($conn);
?>
</body>
</html>


Está dando o seguinte erro:

conexao falhou: [Microsoft][ODBC dBase Driver] '(unknown)' is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.

Já conferi que a pasta meusarq existe no FTP, e que a subpasta agenda está dentro da pasta meusarq, e também que o arquivo compras.dbf está dentro da subpasta agenda.

Alguém poderia me ajudar?
Inacio de Carvalho Neto
cjp
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1161
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 6 vezes
Mens.Curtidas: 12 vezes

Usando tabelas dBase com PHP

Mensagempor rochinha » 30 Dez 2014 23:11

Amiguinhos,

Em primeiro lugar você precisa usar uma função PHP que retorne a raiz de seu site e outra função para testar a existência de arquivos nesta raiz e subdiretórios.

A invés de usar FTP://WWW.SEUSITE.COM.BR/SUBPASTA use FTP://123.xxx.xxx.xxx/SUBPASTA, ou seja, use o IP de seu site.

Outro fator importante é a verificação de atributos de pastas. Se a pasta selecionada estiver marcada com atributo que impeça a visão ou manutenção dela, provavelmente não será vista por outros meios mesmo que apareça no FTP.

Verifique com seu provedor ou use o painel de controle para fazer tal mudança.

Crie uma nova pasta e neste momento defina seus atributos e passe a trabalhar com ela.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4313
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 565 vezes
Mens.Curtidas: 192 vezes

Usando tabelas dBase com PHP

Mensagempor cjp » 01 Jan 2015 02:00

Fiz o seguinte teste:

echo "A raiz do site é: " . $_SERVER['SERVER_NAME'];
echo "Nome do PHP: ".$_SERVER['REQUEST_URI'];
echo "<br>";
echo $_SERVER['SCRIPT_FILENAME'];


Que retornou:

A raiz do site é: inaciocarvalho.com.brNome do PHP: /constar.php
C:\inetpub\wwwroot\inaciobr\constar.php


Portanto, parece evidente que o problema é na seguinte linha do meu programa:

$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME'])."/meusarq/agenda/;";


Eu não sei bem o que é o $_SERVER..., mas ele está retornando um caminho que não existe mais no meu FTP.

Tentei trocar por:

$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};"/meusarq/agenda/;";


Mas não funcionou.

Você poderia me dizer como eu devo fazer?
Inacio de Carvalho Neto
cjp
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1161
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 6 vezes
Mens.Curtidas: 12 vezes

Usando tabelas dBase com PHP

Mensagempor cjp » 01 Jan 2015 10:37

Descobri depois que o problema estava na pasta MEUSARQ. Mudando a pasta, funcionou.

Obrigado.
Inacio de Carvalho Neto
cjp
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1161
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 6 vezes
Mens.Curtidas: 12 vezes

Usando tabelas dBase com PHP

Mensagempor JoséQuintas » 02 Jan 2015 12:36

Não sei se ajuda....
Lembre-se que está rodando seu php no seu servidor.
Não pode inventar qualquer nome de pasta/diretório, porque com certeza vai ter restrições de que pastas pode usar.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 15849
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 903 vezes

Usando tabelas dBase com PHP

Mensagempor cjp » 02 Jan 2015 12:55

Sim, mas eu já rodava no servidor, e funcionava perfeitamente a abertura da base dentro de subpasta.

O provedor que fez alguma modificação no meu FTP, e por isso a pasta ficou inacessível. Mas, trocando de pasta, já funcionou.
Inacio de Carvalho Neto
cjp
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1161
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 6 vezes
Mens.Curtidas: 12 vezes

Usando tabelas dBase com PHP

Mensagempor cjp » 18 Mar 2015 17:15

Meus amigos, novamente preciso da ajuda de vocês com isso. Cada vez que meu provedor faz alguma modificação, este php para de funcionar, e eu não acerto corrigi-lo.

Já testei de todas as formas.

Fazendo este teste:

echo "A raiz do site é: " . $_SERVER['SERVER_NAME'];
echo "<br>";
echo "<br>";
echo "Nome do PHP: ".$_SERVER['REQUEST_URI'];
echo "
";
echo $_SERVER['SCRIPT_FILENAME'];

echo "<br>";
echo "<br>";

$aMat = array(1 => 'CIVIL', 'ADM', 'PENAL', 'CIVIL', 'ADM');
$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME'])."/teste/;";
$conn= odbc_connect($dsn,"","");
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
$sql="SELECT * FROM LEITURA"; // seleciona todos os registros
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}



Está retornando assim:

A raiz do site é: inaciocarvalho.com.br

Nome do PHP: /leitura.php C:\inetpub\wwwroot\inaciobr\leitura.php

conexao falhou: [Microsoft][ODBC dBase Driver] Disk or network error.


Já testei também substituir a pasta por /inaciobr/teste/, mas também não funciona.

Alguém pode me ajudar?
Inacio de Carvalho Neto
cjp
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1161
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 6 vezes
Mens.Curtidas: 12 vezes

Usando tabelas dBase com PHP

Mensagempor Vlademiro » 18 Mar 2015 22:37

Amigo,

Já trabalhei em provedor e sempre que acontece alguma mudança no servidor muitas aplicações param de funcionar. Principalmente aquelas que fogem do "feijão com arroz" . No seu caso solicite ao seu provedor que conceda direitos de leitura e escrita nos arquivos dbf pois eles podem ter trocado o HD ou mudado o seu site de local.

Como a sua aplicação não usa o SQL ela mesma deve ter permissões de escrita e leitura no diretório em questão. Isso é a última coisa que um provedor quer, pois requer permissões de escrita e leitura para o usuário que executa seu script php. No linux o nome dele é nobody ou www-data, mas no windows não sei o nome dele. De qualquer forma o seu provedor deve ter que mudar as permissões.

Não fique mechendo na sua aplicação, veja com eles primeiro. Você só deve mecher na sua aplicação se houver uma atualização no php que irá requerer uma nova forma de programar devido a questões de segurança. Isso aconteceu quando o php saiu da sua versão 3 para a 4 e as variáveis globais tiveram que ser registradas... Lembro que os clientes ficaram p* da vida, o provedor deu um prazo para que eles se adequassem.
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 704
Data de registro: 11 Jul 2005 02:46
Curtiu: 14 vezes
Mens.Curtidas: 53 vezes

Usando tabelas dBase com PHP

Mensagempor cjp » 19 Mar 2015 10:35

Vejam a resposta do provedor:

Olá Inacio,

Primeiramente informamos que não foram feitas alterações no servidor onde seu domínio se encontra hospedado.

Juntamente verificamos as permissões dos arquivos .dbf e os mesmos possuem tais permissão (leitura e escrita).

Sendo assim pedimos que reavalie o problema e, caso possamos ajudá-lo em alguma coisa estaremos a disposição.

Atenciosamente,


Tem algum jeito de testar diretamente se eles estão certos?
Inacio de Carvalho Neto
cjp
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1161
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 6 vezes
Mens.Curtidas: 12 vezes

Usando tabelas dBase com PHP

Mensagempor rochinha » 19 Mar 2015 12:34

Amiguinhos,

Este erro tá mais para falta de espaço do que de acesso. Verifique a cota de espaço que voce pode usar, aumente-a.

Veja que o limite de espaço que voce tem no servidor é a soma do espaço para o site MAIS a soma do espaço para bases de dados MAIS a soma do espaço para caixas de e-mail.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4313
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 565 vezes
Mens.Curtidas: 192 vezes

Usando tabelas dBase com PHP

Mensagempor cjp » 19 Mar 2015 14:47

Creio que não seja espaço, pois o site do provedor indica bastante espaço disponível. Veja:

Imagem
Inacio de Carvalho Neto
cjp
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1161
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 6 vezes
Mens.Curtidas: 12 vezes

Anterior Próximo



Retornar para Outras linguagens de programação

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro