Usando ADODB na linguagem PHP
O ADODB é uma biblioteca para PHP que permite conexao a varios bancos de dados de forma que a string do banco de dados (Oracle, MySQL, SQL Server, etc) é apenas mais um parametro, transformando sua aplicação portavel entre estes e outros banco de dados suportados.
Baixe a biblioteca em adodb.sourceforge.net, copie ela para o diretorio /adodb5 da sua aplicacao.
Codigo abaixo:
require("adodb5/adodb.inc.php");
try {
$DB = NewADOConnection('mysql');
$DB -> Connect('localhost', 'login', 'senha', 'nomebase1');
$rs = $DB -> Execute("select * from jos_content");
while (!$rs -> EOF) {
echo $rs -> fields[0] . " - ".$rs -> fields[1] . " - ".$rs -> fields[2] . '
';
$rs -> MoveNext();
}
$rs -> close();
} catch (Exception $e) {
echo 'Erro: '.$e -> getMessage();
}
Referencias
adodb.sourceforge.net
http://phplens.com/lens/adodb/docs-adodb.htm
http://imasters.uol.com.br/artigo/3135/php/abstracao_de_banco_de_dados_-_trabalhando_com_adodb/
Track: http://www.tconibo.org/nucleus/item/183/catid/25
Baixe a biblioteca em adodb.sourceforge.net, copie ela para o diretorio /adodb5 da sua aplicacao.
Codigo abaixo:
require("adodb5/adodb.inc.php");
try {
$DB = NewADOConnection('mysql');
$DB -> Connect('localhost', 'login', 'senha', 'nomebase1');
$rs = $DB -> Execute("select * from jos_content");
while (!$rs -> EOF) {
echo $rs -> fields[0] . " - ".$rs -> fields[1] . " - ".$rs -> fields[2] . '
';
$rs -> MoveNext();
}
$rs -> close();
} catch (Exception $e) {
echo 'Erro: '.$e -> getMessage();
}
Referencias
adodb.sourceforge.net
http://phplens.com/lens/adodb/docs-adodb.htm
http://imasters.uol.com.br/artigo/3135/php/abstracao_de_banco_de_dados_-_trabalhando_com_adodb/
Track: http://www.tconibo.org/nucleus/item/183/catid/25
03/01/10 15:57:03
Script em PERL que calcula a quantidade de horas a se trabalhar ...
Fiz um pequeno script em PERL que calcula a quantidade de horas a se trabalhar em media por dia a partir de uma meta mensal($R) a se atingir. É para uma necessidade muito especifica e tambem para treinar PERL.
#!/usr/bin/perl
print 'Digite algoritmo calcula a quantidade de horas a se trabalhar em media por dia a partir de uma meta mensal($R) a se atingir. \n';
print 'Digite o valor-hora.';
$vhora = <STDIN>
chop($vhora);
print 'Digite o numero de dias trabalhados no mês.';
$diasmes = <STDIN>
chop($diasmes);
print 'Digite o valor da meta(R$) mensal:';
$meta = <STDIN>
chop($meta);
$rs_por_dia = $meta/$diasmes;
$hr_trab_por_dia = $rs_por_dia/$vhora;
print 'Resultado (horas em media a se trabalhar por dia é: )';
print $hr_trab_por_dia;
Salve o conteudo acima num arquivo de nome qhrtrab.pl. Execute no terminal Linux:
perl qhrtrab.pl
Track: http://www.tconibo.org/nucleus/item/182/catid/25
#!/usr/bin/perl
print 'Digite algoritmo calcula a quantidade de horas a se trabalhar em media por dia a partir de uma meta mensal($R) a se atingir. \n';
print 'Digite o valor-hora.';
$vhora = <STDIN>
chop($vhora);
print 'Digite o numero de dias trabalhados no mês.';
$diasmes = <STDIN>
chop($diasmes);
print 'Digite o valor da meta(R$) mensal:';
$meta = <STDIN>
chop($meta);
$rs_por_dia = $meta/$diasmes;
$hr_trab_por_dia = $rs_por_dia/$vhora;
print 'Resultado (horas em media a se trabalhar por dia é: )';
print $hr_trab_por_dia;
Salve o conteudo acima num arquivo de nome qhrtrab.pl. Execute no terminal Linux:
perl qhrtrab.pl
Track: http://www.tconibo.org/nucleus/item/182/catid/25
02/27/10 01:37:43
Recorte de comandos no Ubuntu para configurar o Apache2 para funcionar com PHP 5 e PHPMyAdmin
Segue 'recorte' de comandos no Ubuntu para configurar o Apache2 para funcionar com PHP 5.
a2enmod - apache 2 enable module
a2ensite - apache 2 enable site
a2dismod - apache 2 disable module
a2dissite - apache 2 disable site
# su -
# cd /etc/apache2
# alias ll="ls -lah"
# cat /proc/2723/cmdline
# etc/apache2
# ls -lah
# netstat -lptn
Comando que habilita o site, ex: default é o nome do arquivo default.conf no diretorio /sites-enable.
# a2ensite default-ssl
# a2ensite default
# a2dissite default
# /etc/init.d/nanoweb stop
# df -h
CTRL + R busca ultimos historicos dos comandos digitados.
Comando que verifica syntax de todos arquivos conf do Apache.
# apache2ctrl configtest
updatedb
locate -b php5
# locate php.ini
# apt-get install libapache2-mod-php5
#apt-get install libapache2-mod-php5
Apos instalar este modulo do php5 no Apache, dois arquivos: php5.conf e php5.load, sao colocados no diretorio /mod-available
# /etc/init.d/apache2 restart
# /etc/init.d/apache2 stop
# /etc/init.d/apache2 start
root@everton-laptop:/etc/init.d# ./apache2 start
# ae2enmod php5
# ae2dismod php5
MYSQL no Apache --> Login/Senha --> root/mysql
/usr/share/phpmyadmin
mover para
/home/sites
# chown usuario . /sites
Copiar phpmyadmin.conf para /sites-available
Editar phpmyadmin.conf
# a2ensite phpmyadmin.conf
Track: http://www.tconibo.org/nucleus/item/181/catid/25
a2enmod - apache 2 enable module
a2ensite - apache 2 enable site
a2dismod - apache 2 disable module
a2dissite - apache 2 disable site
# su -
# cd /etc/apache2
# alias ll="ls -lah"
# cat /proc/2723/cmdline
# etc/apache2
# ls -lah
# netstat -lptn
Comando que habilita o site, ex: default é o nome do arquivo default.conf no diretorio /sites-enable.
# a2ensite default-ssl
# a2ensite default
# a2dissite default
# /etc/init.d/nanoweb stop
# df -h
CTRL + R busca ultimos historicos dos comandos digitados.
Comando que verifica syntax de todos arquivos conf do Apache.
# apache2ctrl configtest
updatedb
locate -b php5
# locate php.ini
# apt-get install libapache2-mod-php5
#apt-get install libapache2-mod-php5
Apos instalar este modulo do php5 no Apache, dois arquivos: php5.conf e php5.load, sao colocados no diretorio /mod-available
# /etc/init.d/apache2 restart
# /etc/init.d/apache2 stop
# /etc/init.d/apache2 start
root@everton-laptop:/etc/init.d# ./apache2 start
# ae2enmod php5
# ae2dismod php5
MYSQL no Apache --> Login/Senha --> root/mysql
/usr/share/phpmyadmin
mover para
/home/sites
# chown usuario . /sites
Copiar phpmyadmin.conf para /sites-available
Editar phpmyadmin.conf
# a2ensite phpmyadmin.conf
Track: http://www.tconibo.org/nucleus/item/181/catid/25
02/22/10 23:33:18
Debug no Oracle via ferramenta PL/SQL Developer
O Debug no Oracle via PL/SQL funciona da seguinte maneira :
1) Escolha a Procedure que você quer debugar na Lista da Esquerda (All Objects).
2) Com o botão da direita em cima do objeto, escolla a opção Test.
3) Vai abrir a Tela anexa (link imagem), onde você coloca o conteúdo para cada parâmetro a ser debugado, aí você entra na opção DEBUG do menu e Start (F9).
OBS: Apenas Oracle 7.02 em diante permite o Debug.
Ver imagem Debug no PL/SQL Developer (http://www.tconibo.org/nucleus/media/1/20100212-DebugOracle.JPG)
Escrito por Renato R. Costa
Track: http://www.tconibo.org/nucleus/item/177/catid/25
1) Escolha a Procedure que você quer debugar na Lista da Esquerda (All Objects).
2) Com o botão da direita em cima do objeto, escolla a opção Test.
3) Vai abrir a Tela anexa (link imagem), onde você coloca o conteúdo para cada parâmetro a ser debugado, aí você entra na opção DEBUG do menu e Start (F9).
OBS: Apenas Oracle 7.02 em diante permite o Debug.
Ver imagem Debug no PL/SQL Developer (http://www.tconibo.org/nucleus/media/1/20100212-DebugOracle.JPG)
Escrito por Renato R. Costa
Track: http://www.tconibo.org/nucleus/item/177/catid/25
02/12/10 22:24:13
Instalacao manual do PHPUnit em Xampp com Win
Baixe a ultima versao do PHPUnit em http://pear.phpunit.de/get/
Descompacte no diretorio /xampp/htdocs/PHPUnit-3.4.9/
Edite o arquivo php.ini em "/xampp/apache/bin" a linha, adicionando o caminho do PHPUnit (no caso a versao 3.4.9):
; Windows: "\path1;\path2"
include_path = ".;d:\xampp\htdocs\PHPUnit-3.4.9\PHPUnit-3.4.9\;"
Crie um arquivo de exemplo chamado testcase.php, em \xampp\htdocs\cli\unit\testcase.php
Acesse pelo navegador:
http://localhost/cli/unit/testcase.php
O arquivo testcase.php inicia-se com a seguinte linha:
require_once 'PHPUnit/Framework.php';
Este "require" chama exatamente o arquivo no diretorio que consta no include_path
do arquivo php.ini.
Track: http://www.tconibo.org/nucleus/item/176/catid/25
Descompacte no diretorio /xampp/htdocs/PHPUnit-3.4.9/
Edite o arquivo php.ini em "/xampp/apache/bin" a linha, adicionando o caminho do PHPUnit (no caso a versao 3.4.9):
; Windows: "\path1;\path2"
include_path = ".;d:\xampp\htdocs\PHPUnit-3.4.9\PHPUnit-3.4.9\;"
Crie um arquivo de exemplo chamado testcase.php, em \xampp\htdocs\cli\unit\testcase.php
Acesse pelo navegador:
http://localhost/cli/unit/testcase.php
O arquivo testcase.php inicia-se com a seguinte linha:
require_once 'PHPUnit/Framework.php';
Este "require" chama exatamente o arquivo no diretorio que consta no include_path
do arquivo php.ini.
Track: http://www.tconibo.org/nucleus/item/176/catid/25
02/10/10 14:14:16
PHP CLI com XAMPP
Para que o PHP por linha de comando funcione no Windows adicione as variaveis de ambiente > Path, o caminho para o diretorio onde encontra-se o executavel do PHP. Ex: D:\xampp\php\;
Apos isto vá ao "cmd", prompt de comando e digite: php - v
Sera mostrado a versao do PHP instalado. Com isso pode-se criar um arquivo php e roda-lo atraves da linha de comando.
Exemplo de arquivo php cli, chamado atraves da linha de comando como, C:> php exec.php parametro1 parametro2
// exec.php
//echo 'testando exec.php';
foreach ($argv as $elemento) {
//echo $elemento.'---';
/**
* $argv[0] é o nome do arquivo
* $argv[1] é o primeiro parametro
* $argv[2] é o segundo parametro
* etc
*/
}
$sid = rand();
$exec = "exec.bat '$argv[1]' $sid.txt $argv[2]";
//echo $exec;
//system('cd \\home\\listas\\ead\\cgi-bin\\');
system($exec);
?>
Track: http://www.tconibo.org/nucleus/item/163/catid/25
Apos isto vá ao "cmd", prompt de comando e digite: php - v
Sera mostrado a versao do PHP instalado. Com isso pode-se criar um arquivo php e roda-lo atraves da linha de comando.
Exemplo de arquivo php cli, chamado atraves da linha de comando como, C:> php exec.php parametro1 parametro2
// exec.php
//echo 'testando exec.php';
foreach ($argv as $elemento) {
//echo $elemento.'---';
/**
* $argv[0] é o nome do arquivo
* $argv[1] é o primeiro parametro
* $argv[2] é o segundo parametro
* etc
*/
}
$sid = rand();
$exec = "exec.bat '$argv[1]' $sid.txt $argv[2]";
//echo $exec;
//system('cd \\home\\listas\\ead\\cgi-bin\\');
system($exec);
?>
Track: http://www.tconibo.org/nucleus/item/163/catid/25
08/19/09 09:51:01
Como matar um dragão usando linguagem de programação
Esta mensagem circulou por email e quem é da area de desenvolvimento de software e ja programou com algumas das linguagens abaixo certamente vai se divertir com as definições para "Como matar um dragão usando linguagem de programação". Acrescentei ao texto original que recebi as linguagens ABAP (com ajuda de alguns amigos), Javascript, Python e LaTeX. Eliminei "Analista de Processos" pois não se referia especificamente a nenhuma linguagem de programacao. Bom, caso algum leitor deste blog queira acrescentar ou indicar uma linguagem de programação por favor entre em contato.
ABAP (SAP)
(sap programador abap) - O usuario pede uma coisa simples, mate o dragão
com a espada e case com a princesa. O funcional entende e especifica,
mate o dragão com a princesa e case com a espada. O ABAP desenvolve,
mate a princesa com o dragão e joga a espada fora ja que nao serve
para nada. No fim a princesa casa com a espada e o dragão mata o
funcional e o usuario. Assim acaba o trampo do ABAP.
(sap analista funcional) - Olha só o que o ABAP faria, muito simples.
Ficaria espantado com a princesa, chamaria o funcional para pega-la.
O funcional casa-se com a princesa e o abap casa-se com o Dragão e
engole a espada.
Java
Chega, encontra o dragão. Desenvolve um framework para aniquilamento
de dragões em múltiplas camadas.
Escreve vários artigos sobre o framework, mas não mata o dragão.
.NET
Chega, olha a idéia do Javanês e a copia, tenta matar o dragão, mas é
comido pelo réptil.
Javascript
Desenvolve uma funcao para encontrar o dragao. Por uma
incompatibilidade de visualização vê a princesa ora como um metrossexual
ora como uma drag queen. Desiste de matar o dragão e vai embora
sem a princesa.
ASP
Os componentes necessários para levantar a espada são proprietários e
caros. Outros tantos componentes proprietários para achar a
localização do dragão, e mais outros tantos a localização da
princesa. Chama então seu amigo programador de PHP.
C
Chega, olha para o dragão com olhar de desprezo, puxa seu canivete,
degola o dragão. Encontra a princesa, mas a ignora para ver os
últimos checkins no cvs do kernel do linux.
C++
Cria um canivete básico e vai juntando funcionalidades até ter uma
espada complexa que apenas ele consegue entender … Mata o dragão,
mas trava no meio da ponte por causa dos memory leaks.
COBOL
Chega, olha o dragão, pensa que tá velho demais para conseguir matar
um bicho daquele tamanho e pegar a princesa e, então, vai embora de
volta ao seu mundinho.
ADVPL
O programador tenta de todas as formas eliminar o dragão, porém, nunca obtém sucesso, ja que por ser uma pseudo-linguagem de programação (uma linguagem derivada de outra linguagem) ele se tornou o próprio dragão.
Pascal
Se prepara durante 10 anos para criar um sistema de aniquilamento de
dragão… Chegando lá descobre que o programa só aceita lagartixas
como entrada.
Python
Em poucas linhas encontra e mata o dragao com a espada. Usa algum
framework recem lançado para pegar a princesa, que foge de medo.
LaTeX
Percebe que matar o dragão não leva a nada e prepara um livro enorme
sobre a historia do dragão com a princesa.
VB
Monta uma arma de destruição de dragões a partir de vários
componentes, parte pro pau pra cima do dragão e, na hora H, descobre
que a espada só funciona durante noites chuvosas…
PL/SQL
Coleta dados de outros matadores de dragão, cria tabelas com N
relacionamentos de complexidade ternária, dados em 3 dimensões, OLAP,
demora 15 anos para processar a informação. Enquanto isso a princesa
virou lésbica.
PHP
Pesquisa bancos de scripts e acha as classes de construção de espada,
manuseio da espada, localização da princesa e dragão. Remenda tudo e
coloca umas firúlas próprias. Mata o dragão e casa com a princesa.
Como tudo foi feito com gambiarras, o dragão um dia vai ressuscitar
e comer os dois.
Ruby
Chega com uma p*t* fama, falando que é o melhor faz tudo, quando vai
enfrentar o dragão mostra um videozinho dele matando um dragão … O
dragão come ele de tédio.
Smalltalk
Chega, analisa o dragão e a princesa, vira as costas e vai embora,
pois eles são muito inferiores.
ASSEMBLY
Acha que está fazendo o mais certo e enxuto, porém troca um A por um
D, mata a princesa e transa com o dragão.
Shell
Cria uma arma poderosa para matar os dragões, mas na hora H, não se
lembra como usá-la.
Shell (2)
O cara chega no dragão com um script de 2 linhas que mata, corta,
stripa, pica em pedacinhos e empalha o bicho, mas na hora que ele
roda, o script aumenta, engorda, enfurece e coloca álcool no fogo do dragão.
Fortran
Chega, desenvolve uma solução com 45000 linhas de código, mata o
dragão e vai ao encontro da princesa …
mas esta o chama de tiuzinho e sai correndo atrás do programador java
que era elegante e ficou rico.
FOX PRO
Desenvolve um sistema para matar o dragão, por fora é bonitinho e
funciona, mas por dentro está tudo remendado. Quando ele vai executar
o aniquilador de dragões lembra que esqueceu de indexar os DBF’s.
CLIPPER
Monta uma rotina que carrega um array de codeblocks para insultar o
dragão, cantar a princesa, carregar a espada para memória, moer o
dragão, limpar a sujeira, lascar leite condensado com morangos na
princesa gostosa, transar com a princesa, tomar banho, ligar o carro,
colocar gasolina e voltar pra casa. Na hora de rodar recebe um “Bound
Error: Array Access” e o dragão come ele com farinha.
Track: http://www.tconibo.org/nucleus/item/145/catid/25
ABAP (SAP)
(sap programador abap) - O usuario pede uma coisa simples, mate o dragão
com a espada e case com a princesa. O funcional entende e especifica,
mate o dragão com a princesa e case com a espada. O ABAP desenvolve,
mate a princesa com o dragão e joga a espada fora ja que nao serve
para nada. No fim a princesa casa com a espada e o dragão mata o
funcional e o usuario. Assim acaba o trampo do ABAP.
(sap analista funcional) - Olha só o que o ABAP faria, muito simples.
Ficaria espantado com a princesa, chamaria o funcional para pega-la.
O funcional casa-se com a princesa e o abap casa-se com o Dragão e
engole a espada.
Java
Chega, encontra o dragão. Desenvolve um framework para aniquilamento
de dragões em múltiplas camadas.
Escreve vários artigos sobre o framework, mas não mata o dragão.
.NET
Chega, olha a idéia do Javanês e a copia, tenta matar o dragão, mas é
comido pelo réptil.
Javascript
Desenvolve uma funcao para encontrar o dragao. Por uma
incompatibilidade de visualização vê a princesa ora como um metrossexual
ora como uma drag queen. Desiste de matar o dragão e vai embora
sem a princesa.
ASP
Os componentes necessários para levantar a espada são proprietários e
caros. Outros tantos componentes proprietários para achar a
localização do dragão, e mais outros tantos a localização da
princesa. Chama então seu amigo programador de PHP.
C
Chega, olha para o dragão com olhar de desprezo, puxa seu canivete,
degola o dragão. Encontra a princesa, mas a ignora para ver os
últimos checkins no cvs do kernel do linux.
C++
Cria um canivete básico e vai juntando funcionalidades até ter uma
espada complexa que apenas ele consegue entender … Mata o dragão,
mas trava no meio da ponte por causa dos memory leaks.
COBOL
Chega, olha o dragão, pensa que tá velho demais para conseguir matar
um bicho daquele tamanho e pegar a princesa e, então, vai embora de
volta ao seu mundinho.
ADVPL
O programador tenta de todas as formas eliminar o dragão, porém, nunca obtém sucesso, ja que por ser uma pseudo-linguagem de programação (uma linguagem derivada de outra linguagem) ele se tornou o próprio dragão.
Pascal
Se prepara durante 10 anos para criar um sistema de aniquilamento de
dragão… Chegando lá descobre que o programa só aceita lagartixas
como entrada.
Python
Em poucas linhas encontra e mata o dragao com a espada. Usa algum
framework recem lançado para pegar a princesa, que foge de medo.
LaTeX
Percebe que matar o dragão não leva a nada e prepara um livro enorme
sobre a historia do dragão com a princesa.
VB
Monta uma arma de destruição de dragões a partir de vários
componentes, parte pro pau pra cima do dragão e, na hora H, descobre
que a espada só funciona durante noites chuvosas…
PL/SQL
Coleta dados de outros matadores de dragão, cria tabelas com N
relacionamentos de complexidade ternária, dados em 3 dimensões, OLAP,
demora 15 anos para processar a informação. Enquanto isso a princesa
virou lésbica.
PHP
Pesquisa bancos de scripts e acha as classes de construção de espada,
manuseio da espada, localização da princesa e dragão. Remenda tudo e
coloca umas firúlas próprias. Mata o dragão e casa com a princesa.
Como tudo foi feito com gambiarras, o dragão um dia vai ressuscitar
e comer os dois.
Ruby
Chega com uma p*t* fama, falando que é o melhor faz tudo, quando vai
enfrentar o dragão mostra um videozinho dele matando um dragão … O
dragão come ele de tédio.
Smalltalk
Chega, analisa o dragão e a princesa, vira as costas e vai embora,
pois eles são muito inferiores.
ASSEMBLY
Acha que está fazendo o mais certo e enxuto, porém troca um A por um
D, mata a princesa e transa com o dragão.
Shell
Cria uma arma poderosa para matar os dragões, mas na hora H, não se
lembra como usá-la.
Shell (2)
O cara chega no dragão com um script de 2 linhas que mata, corta,
stripa, pica em pedacinhos e empalha o bicho, mas na hora que ele
roda, o script aumenta, engorda, enfurece e coloca álcool no fogo do dragão.
Fortran
Chega, desenvolve uma solução com 45000 linhas de código, mata o
dragão e vai ao encontro da princesa …
mas esta o chama de tiuzinho e sai correndo atrás do programador java
que era elegante e ficou rico.
FOX PRO
Desenvolve um sistema para matar o dragão, por fora é bonitinho e
funciona, mas por dentro está tudo remendado. Quando ele vai executar
o aniquilador de dragões lembra que esqueceu de indexar os DBF’s.
CLIPPER
Monta uma rotina que carrega um array de codeblocks para insultar o
dragão, cantar a princesa, carregar a espada para memória, moer o
dragão, limpar a sujeira, lascar leite condensado com morangos na
princesa gostosa, transar com a princesa, tomar banho, ligar o carro,
colocar gasolina e voltar pra casa. Na hora de rodar recebe um “Bound
Error: Array Access” e o dragão come ele com farinha.
Track: http://www.tconibo.org/nucleus/item/145/catid/25
04/24/09 12:15:23
Erro no PHP: domdocument::domdocument() expects at least 1 parameter
No PHP 5.2.8 ao instanciar a classe PHP DOMDocument() recebia a mensagem de erro:
Warning: domdocument::domdocument() expects at least 1 parameter, 0 given
O curioso foi que anteriormente funcionava. Lembrei-me que havia feito uma alteração no php.ini, porem nao lembrava qual era.
Alguns foruns diziam para comentar a linha "extension=php_domxml.dll" no php.ini.
Ao comentar a linha o problema resolveu e a classe foi instanciada sem mensagens de erro.
"If you use PHP 5 in windows, you don't need to declare php_domxml.dll in your php.ini file.
so u can give comment in the line php_domxml.dll in your php.ini file.
you only need to comment it out, but do not delete the php_domxml.dll file in the ext directory."
Track: http://www.tconibo.org/nucleus/item/140/catid/25
Warning: domdocument::domdocument() expects at least 1 parameter, 0 given
O curioso foi que anteriormente funcionava. Lembrei-me que havia feito uma alteração no php.ini, porem nao lembrava qual era.
Alguns foruns diziam para comentar a linha "extension=php_domxml.dll" no php.ini.
Ao comentar a linha o problema resolveu e a classe foi instanciada sem mensagens de erro.
"If you use PHP 5 in windows, you don't need to declare php_domxml.dll in your php.ini file.
so u can give comment in the line php_domxml.dll in your php.ini file.
you only need to comment it out, but do not delete the php_domxml.dll file in the ext directory."
Track: http://www.tconibo.org/nucleus/item/140/catid/25
03/19/09 11:22:25
Classe em PHP para Validar XML com Schema XSD
A classe descrita a seguir valida um arquivo xml de nome "982.xml" em relação a um schema de nome "arquivo.xsd". Salve a classe com o nome "valida.php". O arquivo "debuglib.php" é uma bilblioteca que uso bastante para debugar variaveis, ela permite uma visualização mais organizada dos valores retornados.
A função "print_a" da biblioteca debuglib retorna os erros do arquivo xml. Apos debugar deve-se adicionar o retorno de erros a variavel "$ret" para que a classe retorne corretamente os erros encontrados.
require('debuglib.php');
class valida {
/**
* Esta classe ira validar um arquivo xml com um arquivo xsd e ira retornar um array de erros caso
* encontre erros no xml ou retornará a string "OK" caso nao encontre erros
* A função print_a da biblioteca debuglib retorna os erros do arquivo xml
* return @var valida
*/
protected $arquivoXSD = "arquivo.xsd";
protected $arquivoXML;
public function arquivoXML ($arq) {
$this->arquivoXML=$arq;
}
public function verxsd () {
/**
* Ao tentar validar um arquivo XML, se algum erro
* for encontrado a libxml irá gerar Warnings.
*
* 'libxml_use_internal_errors(true)' deve ser chamada antes de
* instanciar qualquer objeto da classe DomDocument!
*
* @return $ret retorna os erros encontrados pelo parser DOM XML
*/
libxml_use_internal_errors(true);
/* Cria um novo objeto da classe DomDocument */
$objDom = new DomDocument();
/* Carrega o arquivo XML */
$oarq = $objDom->load($this->arquivoXML);
$ret = "";
/* Validar os dados utilizando o arquivo XSD */
if ( !$objDom->schemaValidate($this->arquivoXSD) ) {
/**
* Se não foi possível validar, você pode capturar
* todos os erros em um array
* Cada elemento do array $arrayErrors
* será um objeto do tipo LibXmlError
*
*/
$arrayErrors = libxml_get_errors();
/**
* Descomente linha abaixo para visualizar o array completo
* de erros retornados pela funcao libxml_get_errors()
*/
//echo print_a($arrayErrors);
$erro = true;
/**
* Decompondo o objeto $arrayErrors e
* utilizando a função print_a da biblioteca debulib para
* visualização mais organizada do array
*/
foreach ($arrayErrors as $error) {
print_a($error->level)."
";
print_a($error->code)."
";
print_a($error->column)."
";
print_a($error->message)."
";
print_a($error->file)."
";
print_a($error->line)."
";
}
$ret .= "";
libxml_clear_errors();
/* Caso não encontre erros na validação */
} else {
$erro = false;
$ret = "OK";
}
return $ret;
}
}
$valida = new valida;
$valida->arquivoXML('982.xml');
$valida->verxsd();
Track: http://www.tconibo.org/nucleus/item/132/catid/25
A função "print_a" da biblioteca debuglib retorna os erros do arquivo xml. Apos debugar deve-se adicionar o retorno de erros a variavel "$ret" para que a classe retorne corretamente os erros encontrados.
require('debuglib.php');
class valida {
/**
* Esta classe ira validar um arquivo xml com um arquivo xsd e ira retornar um array de erros caso
* encontre erros no xml ou retornará a string "OK" caso nao encontre erros
* A função print_a da biblioteca debuglib retorna os erros do arquivo xml
* return @var valida
*/
protected $arquivoXSD = "arquivo.xsd";
protected $arquivoXML;
public function arquivoXML ($arq) {
$this->arquivoXML=$arq;
}
public function verxsd () {
/**
* Ao tentar validar um arquivo XML, se algum erro
* for encontrado a libxml irá gerar Warnings.
*
* 'libxml_use_internal_errors(true)' deve ser chamada antes de
* instanciar qualquer objeto da classe DomDocument!
*
* @return $ret retorna os erros encontrados pelo parser DOM XML
*/
libxml_use_internal_errors(true);
/* Cria um novo objeto da classe DomDocument */
$objDom = new DomDocument();
/* Carrega o arquivo XML */
$oarq = $objDom->load($this->arquivoXML);
$ret = "";
/* Validar os dados utilizando o arquivo XSD */
if ( !$objDom->schemaValidate($this->arquivoXSD) ) {
/**
* Se não foi possível validar, você pode capturar
* todos os erros em um array
* Cada elemento do array $arrayErrors
* será um objeto do tipo LibXmlError
*
*/
$arrayErrors = libxml_get_errors();
/**
* Descomente linha abaixo para visualizar o array completo
* de erros retornados pela funcao libxml_get_errors()
*/
//echo print_a($arrayErrors);
$erro = true;
/**
* Decompondo o objeto $arrayErrors e
* utilizando a função print_a da biblioteca debulib para
* visualização mais organizada do array
*/
foreach ($arrayErrors as $error) {
print_a($error->level)."
";
print_a($error->code)."
";
print_a($error->column)."
";
print_a($error->message)."
";
print_a($error->file)."
";
print_a($error->line)."
";
}
$ret .= "";
libxml_clear_errors();
/* Caso não encontre erros na validação */
} else {
$erro = false;
$ret = "OK";
}
return $ret;
}
}
$valida = new valida;
$valida->arquivoXML('982.xml');
$valida->verxsd();
Track: http://www.tconibo.org/nucleus/item/132/catid/25
01/28/09 09:14:38
Profiling no PHP: Xdebug com Webgrind
Este artigo demonstra como utilizar o Webgrind com Xdebug para ter profiling no PHP. Webgrind é um sistema web open source de profiling no browser e Xdebug uma extensão (biblioteca) de debug para o PHP.
Instalação
Habilite extensao json e xdebug no php.ini. Baixe o webgrind.zip do site oficial e descompacte na pasta web do seu servidor.
Utilização
Adicione ?XDEBUG_PROFILE=true na URL da pagina que quer executar o profiling, esta pagina web PHP deve ser uma pagina de seu projeto, devendo portanto estar no servidor onde foi instalado o Xdebug e o Webgrind.
Em seguida va ao Webgrind (http://localhost/webgrind/) e verifique a situacao de profiling desta pagina.
No Webgrind selecione a URL da pagina no drop-dow superior direito para visualizar o profiling da URL escolhida para profiling.

Referencias
Profiling PHP with Xdebug and Webgrind -
http://morgamic.com/2008/06/12/profiling-php-with-xdebug-and-webgrind/
Webgrind - http://code.google.com/p/webgrind/
Track: http://www.tconibo.org/nucleus/item/130/catid/25
Instalação
Habilite extensao json e xdebug no php.ini. Baixe o webgrind.zip do site oficial e descompacte na pasta web do seu servidor.
Utilização
Adicione ?XDEBUG_PROFILE=true na URL da pagina que quer executar o profiling, esta pagina web PHP deve ser uma pagina de seu projeto, devendo portanto estar no servidor onde foi instalado o Xdebug e o Webgrind.
Em seguida va ao Webgrind (http://localhost/webgrind/) e verifique a situacao de profiling desta pagina.
No Webgrind selecione a URL da pagina no drop-dow superior direito para visualizar o profiling da URL escolhida para profiling.

Referencias
Profiling PHP with Xdebug and Webgrind -
http://morgamic.com/2008/06/12/profiling-php-with-xdebug-and-webgrind/
Webgrind - http://code.google.com/p/webgrind/
Track: http://www.tconibo.org/nucleus/item/130/catid/25
01/26/09 12:40:25
- Usando ADODB na linguagem PHP
- Script em PERL que calcula a quantidade de horas a se trabalhar ...
- Recorte de comandos no Ubuntu para configurar o Apache2 para funcionar com PHP 5 e PHPMyAdmin
- O Boken e o Jo no Aikido
- Configuração do Apache Tomcat 6.0 no Ubuntu
- Calculo do logaritmo com Javascript e o Navegador (Firefox, IE)
- Debug no Oracle via ferramenta PL/SQL Developer
- Instalacao manual do PHPUnit em Xampp com Win
- COMPRA DE UM IMÓVEL - O QUE AVALIAR
- Um copo vazio - artigo sobre Vegetarianismo e filme Avatar
- Passo a passo para gerar DARFs de tributos para PJ no lucro presumido
- Codigos dos Tributos para PJ e aliquotas






















