Programando em Clipper para WEB - II

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Programando em Clipper para WEB - II

Mensagem por HASA »

:)) Olá pessoal, passeando pelo google achei um poste de 2005 sobre esse assunto, agora 7 anos depois o que será que temos a mais, na época já se falava de ClipWeb, ClipCgi e ClipXnet, o que será que apareceu de novo (Rochinha, Dudu_Xbase e Náufel estavam lá e deram suas dicas), gostaria de algumas novas dicas (atualizadas claro) do que será que mehorou nesses ultimos anos. O post original em https://pctoledo.org/forum/viewtopic.php?t=3188
:)Pos
Hasa
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Programando em Clipper para WEB - II

Mensagem por Pablo César »

gostaria de algumas novas dicas (atualizadas claro) do que será que mehorou nesses ultimos anos.
Desculpa colega, não entendi a sua colocação. Faltou você esclarecer se busca uma solução para Clipper ou em Harbour ?

---

Reditei esta mensagem para adicionar algo que acredito ser pertinente à sua necessidade, veja este outro tópico: https://pctoledo.org/forum/viewto ... 035#p57251
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Programando em Clipper para WEB - II

Mensagem por HASA »

:))
Vixiiii, verdade, é para Xharbour + Minigui(extend) + Bcc55, agora sim,
:)Pos
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Programando em Clipper para WEB - II

Mensagem por HASA »

:-O
Nossa andei conversando com o pessoal onde espedo meu site e quase me bateram quando falei de CGI :P colocaram a lingua pra fora e disseram para eu optar por Java ou PHP talves .Net e por ai a fora CGI não, se alguem tiver alguma dica de PHP me parece o caminho certo eu agradeço.
:xau
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Programando em Clipper para WEB - II

Mensagem por rochinha »

Amiguinho,

CGI não levando ao pé da letra pode ser considerado como qualquer coisa que rode online.

Um CGI pode ser escrito em qualquer linguagem que possa ser interpretada por um servidor WEB, como .CGI, .HTA, .PL, .CFM, .PY, .PHP, .ASP e até .C

Basta que o servidor saiba interpretar tais extensões.

Todo servidor, seja Windows ou Linux, por padrão executa .CGI e .HTA, mas no caso dos outros é necessário ter servidores ADD ONS, como ColdFusion, ChiliASP, que dificilmente são encontráveis nas hospedagens.

Talvez por isto o Max Server Pages não vingou, pois os provedores não queriam um ADD ON que exigisse tanto de suas maquinas e talvez por lobby de outros fornecedores.

Tempos atrás fiz testes com .PHP abrindo direto uma tabela .DBF e acrescentando um registro.

Com .ASP eu já faço em meu site, armazenando dados de contatos e ip de visitantes.

Já testei IRONSpeed, PHPMaker, ASPMaker, etc, realmente cumprem o que promete, mas na época(não sei hoje) se voce fizesse alterações externas, não poderia re-gerar o código pelas ferramentas.

Em relação a .CGI codificado em xBase, sugiro, fortemente usar Harbour em conjunto com um servidor Apache configurado para rodar exes ou executar .HRB com hbRun.

hbScript também lhe serve para isto. Mas nestes dois casos o servidor deverá estar na empresa.

Optando-se por produzir algo usando .PHP, .ASP ou os dois ao mesmo tempo, use-os somente para fazer a conexão ao banco de dados, leitura e salvamento de registros.

Praticamente seu software online tera, apenas 3 scripts.

Veja um exemplo de um script de uso com .ASP para manutenção de registros:

Código: Selecionar todos

<table border=0  width=100%>
<tr width=100%><td width=100% valign=top><h2>Cadastro de Cliente</h2></td></tr>
<% DIM acao,usuario_id, name,adress,country,active,notes,photo
'acao = Request.QueryString("acao")
acao = Request.Form("acao")
'Checa o preenchimento do formulário
If acao="inclusao" OR acao="atualizar" Then
   If (Request.Form("NAME") = "") Then erro = "XX" End If
   If (Request.Form("ADRESS") = "") Then erro = "XX" End If
   If (Request.Form("COUNTRY") = "") Then erro = "XX" End If
   If (Request.Form("ACTIVE") = "") Then erro = "XX" End If
   If (Request.Form("NOTES") = "") Then erro = "XX" End If
   If (Request.Form("PHOTO") = "") Then erro = "XX" End If
   name       = Request.Form("NAME")
   adress     = Request.Form("ADRESS")
   country    = Request.Form("COUNTRY")
   active     = Request.Form("ACTIVE")
   notes      = Request.Form("NOTES")
   photo      = Request.Form("PHOTO")
End If
If erro = "XX" Then 
   response.write ("<script>")
   response.write ("      alert('Por favor, preencha todas informações.')")
   response.write ("</script>")
End If
   
'Se há algum erro no formulário volta para edição
If erro = "XX" Then
   Select Case acao
               Case "atualizar"
                    acao = "editar"
               Case "incluir"
                    acao = ""
   End Select
End If
   
'Inclui cliente
If acao = "inclusao" AND erro = "" Then
   pos    = instrrev(lcase(request.servervariables("path_translated")),lcase(scriptrelativefolder) & "\" & lcase(formaction))
   db_dir = left(request.servervariables("path_translated"), pos-1 )
   db     = db_dir & "\"
   set cnn= server.createobject("adodb.connection")
   cnn.open "Driver={Microsoft dBase Driver (*.dbf)};;DBQ=" & db & ";"
   cnn.execute("INSERT INTO clients(name,adress,country,active,notes,photo)" &_
               "VALUES ('"&_
                        NAME&"','"&_
                        ADRESS&"','"&_
                        COUNTRY&"','"&_
                        ACTIVE&"','"&_
                        NOTES&"','"&_
                        PHOTO&"')" )
   set cnn= nothing
   response.write ("<script>")
   response.write ("      alert('Operacao efetuada com sucesso!')")
   response.write ("</script>")
End If
'Atualiza informações
If acao = "atualizar" Then
   pos    = instrrev(lcase(request.servervariables("path_translated")),lcase(scriptrelativefolder) & "\" & lcase(formaction))
   db_dir = left(request.servervariables("path_translated"), pos-1 )
   db     = db_dir & "\"
   set cnn= server.createobject("adodb.connection")
   cnn.open "Driver={Microsoft dBase Driver (*.dbf)};;DBQ=" & db & ";"
   cnn.execute("UPDATE clients set " &_
                    "name='name'" &_
                    "adress='adress'" &_
                    "country='country'" &_
                    "active='active'" &_
                    "notes='notes'" &_
                    "photo='photo' WHERE id=" & Session("usuario_id"))
   set cnn= nothing
   response.write ("<script>")
   response.write ("      alert('Atualizacao efetuada com sucesso!')")
   response.write ("</script>")
End If
%>
Com um script como este voce pode via HTTP produzir manutenção direta em uma tabela, pois estes seriam os comandos básicos.

Portanto, usar programas WEB para produzir para o desktop é perda de tempo e o visual será massacrante.

Opte para produzir algo WEB com apelo visual, mas com foco em resultados como gráficos, relatórios, etc.

Use .PHP ou .ASP(acho até mais próximo do xBase em técnica de programação)
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.
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Programando em Clipper para WEB - II

Mensagem por HASA »

:))
Beleza Rochinha, eu vi o post antigo e queria apenas saber o que melhorou ou mudou nesses ultimos tempos,
:)Pos
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Programando em Clipper para WEB - II

Mensagem por rochinha »

Amiguinho,

Veja um conteúdo de comandos xBase usando PHP.

Outro artigo elucidante:

Código: Selecionar todos

Fala galera!

No 2º artigo da série vamos começar a por a mão na massa. Vocês pensaram que ia ser moleza? (risos).
O que você vai ver nesse artigo ?
1. Configurar o PHP para trabalhar com as funções do Dbase.
2. Criando um arquivo DBF
3. Inserindo dados nesse arquivo
4. Listando os dados
Vamos lá:

1. Configurar o PHP para trabalhar com as funções do Dbase. 

- Vá até o arquivo php.ini e descomente a linha, tirando o ; (ponto e vírgula) do início.
;extension=php_dbase.dll 

Atenção
No php.ini, verifique se a linha extension_dir, está apontando para a pasta onde estão as Dlls.
No meu computador essa linha está assim: c:phpextensions

2. Criando um arquivo DBF

Vamos criar o arquivo DBF à partir de um script PHP.

Arquivo cria.php

<?
//Local onde será gravado o arquivo
$dbname = "c:paginadbaseimasters.dbf";

// Definição dos campos
$campos =
    array(
           array("ID","N",3,0),
           array("COLUNISTA","C",50),
           array("MATERIA","C",50),
    );

//Cria o arquivo DBF com os campos acima
if (!dbase_create($dbname, $campos))
   print "<strong>Erro! na criação do Database !</strong>";
else 
   print "BD criado com Sucesso!!!";
?>

Vá até o browser e digite o endereço do arquivo (Exemplo: http://127.0.0.1/pasta/cria.php), se tudo ocorrer bem você deverá ver a mensagem BD Criado com Sucesso!!.

3. Inserindo dados nesse arquivo

Através de um script, vamos inserir alguns itens nesse arquivo.

Arquivo inserir.php

<? 
//Arquivo DBF
$dbname = "c:paginadbaseimasters.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");

//Array com os colunistas do iMasters
$colunista[0] = array("1","Júlio César Martini","PHP / MySQL");
$colunista[1] = array("2","Eduardo Carrega","Fireworks");
$colunista[2] = array("3","Raphael Simas","Dreamweaver");
$colunista[3] = array("4","Rodolpho Gomes","ASP");
$colunista[4] = array("5","Leandro Azevedo","WebMarketing");
$colunista[5] = array("6","Cristiano Trindade","Java");
$colunista[6] = array("7","Mauro Pichiliani","SQL Server");
$colunista[7] = array("8","Igor da Silva Gomes","JSP");

//Lê o array e vai incluindo no arquivo DBF
for($i=0;$i<sizeof($colunista);$i++) {
   dbase_add_record($con,$colunista[$i]);
}
print "<br><br>Dados Inseridos com Sucesso!!!!!";
?>

Como vocês podem ver acima, foi criado um array (colunistas ) e posteriormente eles foram inseridos dentro desse arquivo usando a função dbase_add_record(). 

4. Listando os dados do arquivo

Para terminar esse artigo, vamos desenvolver um script que tem por finalidade, listar os dados do arquivo DBF.

Arquivo listar.php

<? 
//Arquivo DBF
$dbname = "c:paginadbaseimasters.dbf";

//Abre o banco de dados Dbase
//0 - somente leitura
//1 - somente escrita
//2 - leitura / escrita
$con = dbase_open($dbname,0) 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);
  echo $um = $registro[0];
  echo $dois = $registro[1];
  echo "<br>";
}
?>
Fonte: iMaster
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.
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Programando em Clipper para WEB - II

Mensagem por HASA »

:'(

Rochinha, ACHEI um aviso que me deixou triste lá na pagina do PHP veja:

Aviso
Não há suporte para índices ou campos memo. Não há suporte para travas também. Dois processos do servidor web comcorrentes modificando o mesmo banco de dados normalmente irá arruinar o banco de dados .

Nós recomendamos que você não use seus arquivos dbase como seu banco de dados de produção. Escolha ao invés um servidor SQL real; » MySQL ou » Postgres são escolhas comuns com o php. O suporte ao Dbase esta aqui para permitir a você importar e exportar dados para e a partir do seu banco de dados web, porque o formato é normalmente entendido por planilhas e organizadores do Windows.


HASA

:%
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Programando em Clipper para WEB - II

Mensagem por rochinha »

Amiguinho,

No caso de campos memo é passivel de desprezá-los mesmo porque até no desktop ele dá problema.

Para o caso de indices, isto pode ser resolvido usando sintaxe SQL para executar consultas, updates, etc. Não tenho exemplos, mas uma vez que a conexão foi obtida só restaria isto a fazer.

O objetivo de uso de PHP conectando dBase seria para aplicações menos robustas e os comandos precisariam apenas, conectar executar uma ação e fechar a conexão.

Fui a caça e consegui criar um pequeno post para voce tirar suas conclusões.

Usando tabelas dBase com PHP
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.
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Programando em Clipper para WEB - II

Mensagem por HASA »

:{
Rocha você é o cara,
Hasa
:-Y
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Programando em Clipper para WEB - II

Mensagem por rochinha »

Que nada

São seus olhos. He! He! He!
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.
Responder