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 cjp » 03 Set 2013 00:51

Amigo,

Na base está tudo em maiúscula.

Já testei digitando em maiúsculas ou em minúsculas. De qualquer forma, aparece todos os registros.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

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

Usando tabelas dBase com PHP

Mensagempor rochinha » 03 Set 2013 02:30

Amiguinho,

Em primeiro lugar de uma revisada no seu código, ele não se parece em nada com o segundo exemplo que lhe passei. O primeiro exemplo do qual voce recortou e colou poderia funcionar para somente um coluna mas para o caso de mais campos e mais colunas o HTML precisa ser formatado.
O meu código:
   echo "<table><tr>";
   echo "<th>Nome</th>";
   echo "<th>Telefone</th></tr>";
   while (odbc_fetch_row($rs))
      {
      $compname=odbc_result($rs,"Nome");
      $conname=odbc_result($rs,"Telefone");
      echo "<tr><td>$compname</td>";
      echo "<td>$conname</td></tr>";
      }
   odbc_close($conn);
   echo "</table>";


O teu código:
   echo "<table><tr>";
   echo "<th>Data     Compromisso    Campo    Hora    Vínculo</th></tr>";
   while (odbc_fetch_row($rs))
      {
      echo "<tr><td>".odbc_result($rs, "data")."</td></tr>";
      echo "<tr><td>".odbc_result($rs, "compr")."</td></tr>";
      echo "<tr><td>".odbc_result($rs, "campo")."</td></tr>";
      echo "<tr><td>".odbc_result($rs, "hora")."</td></tr>";
      echo "<tr><td>".odbc_result($rs, "vinculo")."</td></tr>";
      }
        odbc_close($conn);
        echo "</table>";


Entenda, que programar em HTML não é o mesmo que DOS, não existe a figura da Linha e Coluna, tudo depende muito do estilo de letra que se usa e os espaçamentos entre cada tipo muda muito.

Veja que no meu exemplo eu pego o resultado e coloco em variáveis e depois às insiro nas sentenças. As tags de HTML precisar estar contidas dentro de hierarquias e no teu exemplo voce não montou uma hierarquia de registros(TR) contendo campos(TD) e sim vários(TR) cada um contendo um unico (TD) e o resultado é que voce nunca vai entender o que estará vendo pois tudo aparecerá em-baixo um-do-outro numa lista imensa sem que seja possivel detectar a qual coluna pertence o dado mostrado.

Reveja meu código, trabalho dentro dele e refaça os testes.
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: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Usando tabelas dBase com PHP

Mensagempor cjp » 04 Set 2013 00:49

Entendi, meu caro.

Corrigindo, ficou assim:

<?
$txtEstado = $_POST["Compr"];

$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME']).";";
$conn= odbc_connect($dsn,"","");
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
$sql="SELECT * FROM agcom WHERE compr = '".$txtEstado."'";
echo $dns;
$rs=odbc_exec($conn,$sql);
if (!$rs)
   {exit("Error in SQL");}

      echo "<table><tr>";
      echo "<th>data</th>";
      echo "<th>compr</th></tr>";
      while (odbc_fetch_row($rs))
      {
      $compname=odbc_result($rs,"data");
      $conname=odbc_result($rs,"compr");
      echo "<tr><td>$compname</td>";
      echo "<td>$conname</td></tr>";
      }
      odbc_close($conn);
      echo "</table>";
?>


Mas ainda está aparecendo todos os registros. E logo em seguida está dando erro na página.

Ainda está errado?
Inacio de Carvalho Neto
cjp
Usuário Nível 6

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

Usando tabelas dBase com PHP

Mensagempor rochinha » 04 Set 2013 01:53

Amiguinho,

Qual o provedor que voce está usando?
Qual a URL de acesso ao seu teste, exemplo: http://www.meudominio.com.br/listadb.php(mas a original)

Anexe o .DBF aqui.

Vou testar amanhã.
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: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Usando tabelas dBase com PHP

Mensagempor Toledo » 04 Set 2013 07:51

Amigos, para ser sincero nunca fiz testes com acesso a arquivos DBF em script PHP, meu forte é MySQL. Mas pelo que pude observar, a sintaxe da query de busca é a mesma, então vou fazer uma pequena observação.

Inácio, quem olha o seu código dá a entender que o conteúdo da variável $txtEstado será a sigla de algum Estado (SP,PR,RJ, etc), mas pelo que pude observar no seu site (http://www.inaciocarvalho.com.br/filtrar.php) o conteúdo do campo "compr" é uma string longa que não tem nada a ver com sigla de estado. Então, pela lógica, fica praticamente impossível utilizar o operador = (igual) para se fazer o filtro.

Bom, como já disse, não tenho experiência com arquivos DBF com PHP, mas em uma query SELECT quando não existe nenhum registro que satifaz o filtro, a query teria que retornar vazia. Não sei se o problema está no operador =, mas se o conteúdo do campo compr for mesmo uma string longa, o correto então seria utilizar o operador LIKE no SELECT:

$sql="SELECT * FROM agcom WHERE compr LIKE '%".$txtEstado."%'";


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
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Usando tabelas dBase com PHP

Mensagempor cjp » 04 Set 2013 17:21

De fato, Toledo, o campo "compr" é um campo caracter com 254 posições.

Eu usei a varíavel txtEstado para manter o exemplo que o Rochinha havia postado, fazendo o mínimo de alterações possível nele, pois não entendo muito de php, evitando assim erros.

Tentei fazer do jeito que vc mencionou, com like, mas continua aparecendo todos os campos da base.

Será que estou fazendo algo errado?

A propósito, será que seria mais fácil eu trabalhar com MySQL? Não entendo nada disso. É fácil transformar uma base de dados DBF em MySQL? E dá pra usar MySQL nos meus programas feitos em Harbour?
Inacio de Carvalho Neto
cjp
Usuário Nível 6

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

Usando tabelas dBase com PHP

Mensagempor cjp » 11 Set 2013 00:45

Pessoal, por favor, me ajudem. Alguma luz para resolver este problema?
Inacio de Carvalho Neto
cjp
Usuário Nível 6

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

Usando tabelas dBase com PHP

Mensagempor Toledo » 11 Set 2013 07:38

cjp escreveu:Tentei fazer do jeito que vc mencionou, com like, mas continua aparecendo todos os campos da base.
Será que estou fazendo algo errado?

Inácio, como já lhe disse, eu não tenho nenhuma experiência com uso de arquivos DBF com PHP, então não sei o que pode estar de errado.

cjp escreveu:A propósito, será que seria mais fácil eu trabalhar com MySQL? Não entendo nada disso.

Bom, se com DBF já está complicado, então com MySQL o trabalho será dobrado e você vai depender 100% de ajuda, visto que você "não entende nada disso". E o fora o MySQL, você terá que ter uma boa base de conhecimento de PHP, que também é meio complicado.

cjp escreveu:É fácil transformar uma base de dados DBF em MySQL?

Para converter DBF para MySQL, basta entrar em algum site de busca (Google, Yahoo, etc) e fazer uma busca por "dbf to mysql" ou "dbf to sql", que você vai encontrar varios programas que fazem este tipo de conversão.

cjp escreveu:E dá pra usar MySQL nos meus programas feitos em Harbour?

Sim, veja a pasta \contrib\hbmysql do seu Harbour.

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
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Usando tabelas dBase com PHP

Mensagempor rochinha » 11 Set 2013 16:35

Amiguinho,

Como o Toledo bem explicou, entre dBase e MySQL existem anos luz de avanços e características. O simples conhecimento do dBase e sua linguagem de scripts leva tempo e muita queda de cabelo.

Se voce tem afinidade com xBase e gosta muito do dBase porque sente facilidade de manutenção criação etc, aprender como manusear outros bancos de dados é uma boa, as diferenças são imensas e a curva de aprendizado dependerá do seu tempo disponível.

Eu velejei pelas ondas do Javascript, VBScript, Rubi, PYthon, PHP e ASP e encontrei nos dois últimos facilidades imensas de integrá-los aos meus projetos, mas corri para aprender somente o básico dentro delas como, conectar a uma base, escrever, deletar, recuperar e listar. O resto não me interessou no primeiro momento e com certeza a medida que fosse necessário eu faria uso do "avançado" nestas linguagens.

Trabalhar com dBase é como trabalhar com TXT, está tudo ali é só abrir e mexer.

Usar MySQL, SQL Server, etc exige um conhecimento desde a instalação, onde se deve configurar, modo de acesso, TCP, PIPE, etc, usuários e senhas, permissões e privilégios.

PHP e ASP exigem também o conhecimento de instalação e configuração e são feitas somente pelo lado do servidor, ou seja, pelo técnico de sua hospedagem ou se estiver instalado em sua máquina pelos programas administradores de manutenção do servidor WEB que deve saber que irá rodar e reconhecer estes scripts e seus módulos.

Eu sempre usei Windows Server, pelo fato de o mesmo possuir servidores WEB que eu possa configurar para o meu uso. No caso de ASP uso o servidor do próprio S.O. e no caso do PHP uso o MiniServX o qual para rodar e reconhecer dBase com os exemplos do inicio deste tópico rodaram muito bem.

Os exemplos onde fiz uso de conecção ODBC para ajudá-lo foram testados e rodam em um pequeno aplicativo em uso em um cliente usando o bom e velho dBase suportador pelo .PHP. Por sorte minha hospedagem é muito boa, o suporte é rápido e a configuração impecável.

Assim como um médico não é possivel diagnosticar uma doença sem VER o paciente, por isto, em post anterior PEDI que enviasse seu .DBF e o SEU script para que eu pudesse delinear o código para voce.

Ao desenhar o aplicativo para meu cliente, não havia hipótese de usar outro banco de dados, eu precisava que fosse dBase para não fazer muitas modificações no retaguarda e acabei por desenhar e colocar para rodar a mesma versão do aplicativo usando ASP e PHP e por fim coloquei no ar a versão PHP. Apesar de achar ASP mais bonito.

Então, o que vc está esperando?
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: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Usando tabelas dBase com PHP

Mensagempor cjp » 18 Set 2013 00:16

Desculpe, meu caro, mas eu achei que vc já tinha acessado a base no meu site. Mas então aí vai ela.

Mas este é apenas um exemplo, pois eu gostaria de fazer o mesmo com várias bases.

O que eu preciso é muito simples: filtrar a base, para permitir ao usuário escolher campos que contenham apenas determinadas palavras.

De fato eu acho que não vou conseguir tempo para aprender a usar MySQL. E talvez nem seja necessário. Creio que seja possível fazer isso com a base em DBF mesmo, com a ajuda de vocês.

Desde já agradeço.
Anexos
AGCOM.zip
(36.7 KiB) Baixado 162 vezes
Inacio de Carvalho Neto
cjp
Usuário Nível 6

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

Usando tabelas dBase com PHP

Mensagempor rochinha » 18 Set 2013 00:24

Amiguinho,

Olharei.
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: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Usando tabelas dBase com PHP

Mensagempor cjp » 18 Set 2013 00:40

Muito obrigado.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

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

Usando tabelas dBase com PHP

Mensagempor rochinha » 18 Set 2013 11:29

Amiguinhos,

Conforme os exemplos abaixo foi possivel coletar e filtrar conteúdo da base a partir do que for passado como parâmetros.

Linha de comando 1: http://localhost:60080/agcom/?filtro=PRO
<?
$txtFiltro    = $_GET["filtro"];

$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME']).";";
$conn= odbc_connect($dsn,"","");
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
$sql="SELECT * FROM agcom WHERE compr LIKE '%".$txtFiltro."%'";
echo $sql;
echo $dns;
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}

   echo "<table BORDER=1><tr>";
   echo "<th>data</th>";
   echo "<th>compr</th></tr>";
   while (odbc_fetch_row($rs))
   {
   $compname=odbc_result($rs,"data");
   $conname=odbc_result($rs,"compr");
   echo "<tr><td>$compname</td>";
   echo "<td>$conname</td></tr>";
   }
   odbc_close($conn);
   echo "</tr></table>";
?>


Linha de comando 2: http://localhost:60080/agcom/?filtro=PRO&categoria=Artigos
<?
$txtFiltro    = $_GET["filtro"];
$txtCategoria = $_GET["categoria"];

$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME']).";";
$conn= odbc_connect($dsn,"","");
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
$sql="SELECT * FROM agcom WHERE compr LIKE '%".$txtFiltro."%' and vinculo LIKE '%".$txtCategoria."%'";
echo $sql;
echo $dns;
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}

   echo "<table BORDER=1><tr>";
   echo "<th>data</th>";
   echo "<th>compr</th></tr>";
   while (odbc_fetch_row($rs))
   {
   $compname=odbc_result($rs,"data");
   $conname=odbc_result($rs,"compr");
   echo "<tr><td>$compname</td>";
   echo "<td>$conname</td></tr>";
   }
   odbc_close($conn);
   echo "</tr></table>";
?>


O conteúdo passado para pesquisa nos parâmetros devem estar de acordo com o existente nos campos da base. Se estiverem nos campos da base em maiúsculas os dados dos parâmetros devem ser passados em maiúsculas ou vice-versa.

Para usar um formulário deverá ser trocado no código .PHP o $_GET por $_POST.

Mais dicas de comandos
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: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Usando tabelas dBase com PHP

Mensagempor cjp » 18 Set 2013 18:30

Tentei das duas formas, e em ambas continua aparecendo todos os campos da base.

Será que estou fazendo algo errado? Ou quem sabe o problema é no meu site?

Se vc puder testar diretamente no meu site (www.inaciocarvalho.com.br - Área jurídica - Área restrita; usuário: estagiario; senha: mppr), agradeceria.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

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

Usando tabelas dBase com PHP

Mensagempor rochinha » 18 Set 2013 19:59

Amiguinho,

Você colou o meu post todinho no seu .PHP? Nem chegou a verificar se as variaveis do seu AGENDA.PHP deveriam ser trocadas?

Eu te enviei 2 códigos exemplos:

- o primeiro precisa somente de um campo para pegar parte do que voce precisa.
- o segundo precisa de dois campos onde voce ira inserir o trecho que voce quer pesquisar e a categoria.

Agenda.htm
<html>
    <body>
        <form action="filtrar.php" method="post">
             <label>Pesquisar Compromisso:</label>
             <input type="text" name="filtro" id="filtro" value="Digite aqui parte do texto procurado" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Digite aqui parte do texto procurado';}">
             <input type="submit" id="Pesquisar" value="Pesquisar">
       </form>
    </body>
</html>


Filtrar.php
<?
$txtFiltro    = $_POST["filtro"];

$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME']).";";
$conn= odbc_connect($dsn,"","");
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
$sql="SELECT * FROM agcom WHERE compr LIKE '%".$txtFiltro."%'";
echo $sql;
echo $dns;
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}

   echo "<table BORDER=1><tr>";
   echo "<th>data</th>";
   echo "<th>compr</th></tr>";
   while (odbc_fetch_row($rs))
   {
   $compname=odbc_result($rs,"data");
   $conname=odbc_result($rs,"compr");
   echo "<tr><td>$compname</td>";
   echo "<td>$conname</td></tr>";
   }
   odbc_close($conn);
   echo "</tr></table>";
?>


Não tem como errar. Voce deve SEMPRE revisar os códigos.
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: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 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 5 visitantes


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