Abstração de SGBD no PHP – PEAR::MDB2
Em 26/10/2009 by acalbuquerque
categorizado em Destaques, PHP, Tecnologia
As conexões com um banco de dados SQL estão presentes em quase 100% das páginas que utilizam algum tipo de BD, mas o grande problema é que nem sempre quem escreve esses scripts sabem fazê-las de forma segura e sustentável.
Pensando nisso, um grupo de programadores do *PEAR decidiu criar um package (uma classe) que melhorasse as conexões SQL e ao mesmo tempo fosse compatível e fácil de ser usado em diversos tipos de bancos de dados, assim surgiu o package PEAR::DB que evoluiu para o PEAR::MDB2.
Se você utiliza uma versão do PHP5+ ou um servidor recente, é muito provável que já tenha tanto o PEAR como o pacote MDB2 instalados. Caso não, pesquise no google como instalar o pear e a mdb2, pois existem muitos resultados falando já sobre isso.
*PEAR é um repositório de packages (classes) PHP criado e mantido por centenas de programadores, com o intuito de criar e melhorar a usabilidade do PHP. Eles disponibilizam diversos pacotes que estão em constantes melhorias e cada qual com uma utilidade mais incrível que o outro.
Tamanhas são as utilidades dos pacotes PEAR que as versões mais novas do PHP já são distribuídas com o PEAR e seus pacotes mais usados já instalados.
Mais informações no site www.pear.php.net
- Conexão
A primeira coisa a se observar, é que para podermos usar um package da PEAR é necessário dar um include no arquivo principal deste, no nosso caso, devemos adicionar o arquivo MDB2.php no início de tudo (não é necessária a especificação do caminho):
require_once('MDB2.php');
- Declaração da DSN
Feito isso, devemos nos conectar ao banco de dados. As conexões dos packages da PEAR (DB e MDB2) seguem uma sintaxe um pouco diferente da comumente utilizada pelos famosos mysql_connect, ou pg_connect, etc. Começando por uma DSN, que é uma string que possui uma forma especifica de declaração, englobando os dados da conexão:
phptype://usuario:password@host/database
onde:
phptype = Tipo de DB{
fbsql: FrontBase
ibase: InterBase
mssql: Microsoft SQL Server
mysql: MySQL
mysqli: MySQL Improved
oci8 : Oracle 7/8/9
pgsql: PostgreSQL
querysim: QuerySim
sqlite: SQLite
}
usuario = nome de usuário
password = senha
host = host
database = nome do DB
- Conectando
Declarada a DSN, falta chamar o método de conexão, existem três:
- connect : Era mais usado no package PEAR:biggrin.gifB, mas caiu em desuso com o MDB2 (mas preservado).
- singleton : É usado para evitar que se sejam criadas duas conexões com a mesma DSN. Caso já haja alguma, ele retonará um erro.
- factory : É o mais utilizado e recomendado para a maioria das tarefas
*obs: Para chamá-los devemos precedê-los de MDB2:: e usar como argumento a DSN:
$con =& MDB2::factory($dsn);
ATENÇÃO!
Para que o uso do MDB2 funcione corretamente é necessário o uso de um objeto-referência do objeto original em vez de uma cópia:
- $con =& MDB2::factory($dsn);
e NÃO
- $con = MDB2::factory($dsn);
- Recuperando dados
Para recuperarmos dados da DB (SELECT, SHOW, EXPLAIN, etc) utilizamos o método query().
Ele deve ser chamado através do objeto da conexão:
$result =& $con->query($sql_query);
Será retornado um handler para o resultado, e através dele podem ser usados outros métodos (atente novamente para o uso de referências – &).
$result =& $con->query('SELECT * FROM table WHERE column=1');
//ou
$select = 'SELECT * FROM table WHERE column=1';
$result =& $con->query($select);
Número de linhas Retornadas
Para verificar o número de linhas retornadas devemos usar o método numRows() do objeto-resultado.
$rows = $result->numRows();
Retirando dados do objeto-resultado
Após realizada a query, devemos chamar outro método caso desejemos usar os dados retornados: o fetchRow().
Este método aceita como parâmetro a forma como o resultado deve ser retornado, existem três tipos:
- MDB2_FETCHMODE_ORDERED
Modo padrão, retorna uma array em que cada chave numérica corresponde á coluna mais á esquerda, em ordem crescente e começando pelo 0.
$row =& $result->fetchRow(MDB2_FETCHMODE_ORDERED); //Resultado: Array ( [0] => Valor1 [1] => 1 [2] => Valor3 )
- MDB2_FETCHMODE_ASSOC
Esse modo retorna uma array em que cada chave é o nome da coluna correspondente.
$row =& $result->fetchRow(MDB2_FETCHMODE_ASSOC); //Resultado: Array ( [coluna1] => Valor1 [coluna2] => 1 [coluna3] => Valor3 )
- MDB2_FETCHMODE_OBJECT
-Esse modo retorna um objeto em que cada coluna é tratada como um atributo.
$row =& $result->fetchRow(MDB2_FETCHMODE_OBJECT); //Resultado: stdClass Object ( [coluna1] => Valor1 [coluna2] => 1 [coluna3] => Valor3 )
Alternativamente podemos configurar um FETCHMODE padrão para a conexão com que vamos trabalhar através do método setFetchMode(). Feito isso, caso chamemos, por exemplo, um fetchRow() (sem argumento), a forma retornada seria a indicada nesse método.
$con->setFetchMode(MDB2_FETCHMODE_ORDERED); // ou $con->setFetchMode(MDB2_FETCHMODE_ASSOC); //ou $con->setFetchMode(MDB2_FETCHMODE_OBJECT);
- Método fetchAll()
Esse método retorna uma array bidimensional contendo todas as linhas do objeto-resultado.
$row =& $result->fetchAll(MDB2_FETCHMODE_ASSOC); //resultado Array ( [0] => Array ( [coluna1] => Valor1 [coluna2] => 1 [coluna3] => Valor3 ) [1] => Array ( [coluna1] => V1 [coluna2] => 2 [coluna3] => V3 ) )
Uma maneira mais rápida e prática e fazer isso tudo seria o uso do método queryAll() = query()+fetchAll()
$row =& $con->queryAll("SELECT * FROM test", MDB2_FETCHMODE_ASSOC);
Executando Query´s
Para executar query de manipulação de dados (INSERT, UPDATE, DELETE), não deve ser o usado o método query() e sim o exec()
Esse método retornará um erro caso seja usado com queries que não sejam DMQs, como SELECT.
$sql ="INSERT INTO test(coluna1, coluna2, coluna3) VALUES ('v_col1', 3, 'v_col3')"
$nrows =& $con->exec($sql);
Tratamento de erros
Para evitar problemas tanto no código como de segurança, deve-se sempre fazer uma verificação se a ação não resultou em um erro, para tanto usamos o método PEAR::isError($objeto->resultado).
Verificado que existe um erro, podemos obter a mensagem enviada pelo MDB2 através do método getMessage()
$result =& $cnt->query("SELECT * FROM tabela_inexistente");
if(PEAR::isError($result)) { die($result->getMessage()); }
Referências:
Oficial da PEAR: www.pear.php.net/manual/en/package.database.mdb2.php
CODESCHMIE: codeschmie.de/archives/127-MDB2-Cheatsheet.html
phpied http://www.phpied.com/
jQuery Tools
Em 13/09/2009 by acalbuquerque
categorizado em Destaques, JS/HTML, Tecnologia, jQuery
Esta biblioteca(jQuery Tools) contém seis das ferramentas mais úteis do Javascript disponíveis para um site de hoje. A beleza desta biblioteca é que todas essas ferramentas podem ser usadas juntas. No final, você pode ter centenas de elementos diferentes e novas maneiras de usar a biblioteca.
Esta biblioteca é de código fonte aberto e de licensa dupla, MIT e GPL 2 .
O pacote contém uma série de demos, incluindo:
- Tabs
- Tooltips
- Expose
- Overlay
- Scrollable
- Flashembed
JavaScript Cheat Sheet (Standart, jQuery, MooTools, Prototype …)
Em 25/07/2009 by acalbuquerque
categorizado em AJAX, Destaques, JS/HTML, Tecnologia, jQuery
Seguindo os post´s de guias e referências, segue mais um unindo vários Cheat Sheet´s de frameworks em JS.
- JavaScript Standart Cheat Sheet

Logicamente organizado em métodos DOM, funções, expressões regulares, etc . É fácil de usar e uma grande referência para todos os usos comuns JavaScript. Clique aqui para baixar.
- jQuery Visual Map

Tenho certeza que esse é bastante conhecido. Apenas não pude deixa-lo de fora. Clique aqui para vizualizar.
- MooTools Cheat Sheet

Para aqueles que preferem o MooTools que jQuery, segue esse guia baseado no MooTools 1.2. Clique aqui para vizualizar.
- Prototype Cheat Sheet

É um excelente recurso para aqueles que utilizam Prototype.js e inclui uma referência visual para deslocamentos e dimensões. Clique aqui para vizualizar.
WordPress Cheat Sheet´s Help Reference
Em 25/07/2009 by acalbuquerque
categorizado em Destaques, JS/HTML, PHP, Tecnologia
O WordPress Help Sheet é o mais útil guia se você for um programador de temas para o WP. É um guia de referência rápida para as mais comuns sintaxes utilizadas no WP. Apenas os mais necessários e mais comuns trechos estão incluídos, clique aqui para baixar o pdf.
Já aqueles que criam temas WordPress regularmente, WPCandy criou uma avançada ferramenta de ajuda. Contém os codigos mais utilizados para temas que requerem funcionalidades adicionais. Qualquer criador de temas profissionais deveria ter este guia na mão clique aqui para baixar o pdf.
E para finalizar, segue uma checklist para desenvolvimento de temas WP. A lista abrange tópicos gerais (como informação e imagens), componentes do blog (como feeds RSS), timestamps, bem como a categoria de página navegação.
São no total 9 itens:
- General
- Stylesheets
- Browser Compatibility
- Pages
- Styled Everything?
- Standard CSS Classes
- Validate
- WordPress Code
- Blog Elements
Clique aqui para fazer o download da WP Theme Check-List.
Guia Adobe CS4 Keyboard Shortcuts [parte 1]
Em 25/07/2009 by acalbuquerque
categorizado em Criação, Destaques
Segue abaixo alguns guias de atalhos de alguns* programas da Adobe na versão CS4:
![photoshop cs4 3755372460 b8b34df2f5 o Guia Adobe CS4 Keyboard Shortcuts [parte 1]](http://farm4.static.flickr.com/3472/3755372460_b8b34df2f5_o.jpg)
Adobe Photoshop CS4 keyboard shortcuts : (Windows) – (Mac)
![Flash cs4 3755372554 df2f6ff9c4 o Guia Adobe CS4 Keyboard Shortcuts [parte 1]](http://farm4.static.flickr.com/3480/3755372554_df2f6ff9c4_o.jpg)
Adobe Flash cs4 keyboard shortcuts : (Windows) – (Mac)
![Dw 3755372608 c7641bcecc o Guia Adobe CS4 Keyboard Shortcuts [parte 1]](http://farm4.static.flickr.com/3500/3755372608_c7641bcecc_o.jpg)
DreamWeaver cs4 keyboard shortcuts : (windows)
![InDesign cs4 3755372646 f096f7ef62 o Guia Adobe CS4 Keyboard Shortcuts [parte 1]](http://farm4.static.flickr.com/3520/3755372646_f096f7ef62_o.jpg)
Adobe InDesign CS4 Keyboard Shortcuts (Windows – Mac)
![Ilustrator cs4 3754571689 d4dd057157 o Guia Adobe CS4 Keyboard Shortcuts [parte 1]](http://farm4.static.flickr.com/3524/3754571689_d4dd057157_o.jpg)
Illustrator CS4 Keyboard Shortcuts : (Windows) – (Mac)
*ps: Faltam alguns que tentarei disponibilizar mais tarde em outro post.
Detectar acesso mobile com PHP
Em 14/07/2009 by acalbuquerque
categorizado em Destaques, PHP, Tecnologia
Uma das coisas que estão em alta no momento, é o acesso via celular e smartphones.
Sites criam subdomínios e novos layouts para os acessos via mobile e divulgam o novo endereço para acesso.
Porém e se a URL oficial, que é bem mais divulgada e conhecida, for acessada?
O usuário verá o site oficial e não o mobile certo?
Correto!
Sabendo disso, um grupo de programadores PHP desenvolveu uma biblioteca open-source e bastante eficaz chamada de “Detect Mobile Browsers“ que pode ser baixada clicando aqui ou acessando o site www.detectmobilebrowsers.mobi .
Além disso ela é muito fácil de ser utilizada, pois você pode definir uma página para cada tipo de plataforma e navegador utilizado pelos celulares e smartphones, ou definir uma página padrão para o acesso via todos os dispositivos móveis.
E Pásmem-se!!! Estão sentados??? Mas sentados mesmo ?? Ok… ela também pode definir até mesmo um redirecionamento específico para as plataformas e navegadores comuns em desktops e notebooks.
A biblioteca suporta 8 parametros, ordenadamente são eles:
* iPhone e Ipods – Endereço completo(incluindo http://) ou para o redirecionamento único deixe TRUE ou para não redirecionar deixe FALSE
* Android – Endereço completo(incluindo http://) ou para o redirecionamento único deixe TRUE ou para não redirecionar deixe FALSE
* Opera Mini – Endereço completo(incluindo http://) ou para o redirecionamento único deixe TRUE ou para não redirecionar deixe FALSE
* Blackberry - Endereço completo(incluindo http://) ou para o redirecionamento único deixe TRUE ou para não redirecionar deixe FALSE
* Palm - Endereço completo(incluindo http://) ou para o redirecionamento único deixe TRUE ou para não redirecionar deixe FALSE
* Windows Mobile -Endereço completo(incluindo http://) ou para o redirecionamento único deixe TRUE ou para não redirecionar deixe FALSE
* Mobile Redirect URL – Endereço completo do redirecionamento único (incluindo http://) da página .
* Desktop Redirect URL – Endereço completo(incluindo http://) ou para o redirecionamento único deixe TRUE ou para não redirecionar deixe FALSE
Sem mais enrolation, segue abaixo exemplo de uso:
< ?
// Faz o include do arquivo da Classe PHP
include('mobile_device_detect.php');
// Redireciona todos os acessos via Celular e Smartphone
// para o endereço mobile e os acessos via desktop
// colocamos 'false', para ele carregar está página normalmente.
mobile_device_detect(true,true,true,true,true,true,'http://',false);
?>
Você Sabia?! 3.0
Em 12/07/2009 by acalbuquerque
categorizado em Destaques, Marketing / Publicidade Web, WebNews
Esse vídeo mostra o quanto a Internet já faz parte das nossas vidas e como ela se tornou fundamental.
Algumas frases que me deixaram assustado:
- Os 10 empregos com maiores procuras em 2010 não existiam em 2004
- Se o Myspace fosse um país, seria o quinto maior do mundo com 200 milhões de pessoas
- 31 bilhões de pesquisas são feitas no Google todo mês! sendo que em 2006 esse número era de 2,7 milhões. Há quem estas perguntas eram feitas na era A.G (antes do Google);
- A primeira mensagem de texto(sms) enviada comercialmente foi em 1992. Hoje o número de sms´s enviadas e recebidas por dia ultrapassa o número da população mundial.
- Quantidade de anos que a audiência demorou para chegar a 50 milhões:
Rádio – 38 anos
TV – 13 anos
Internet – 4 anos
Facebook – 2 anos
Assistam o vídeo:
O Papa é POP…
Em 27/05/2009 by acalbuquerque
categorizado em Destaques, Marketing / Publicidade Web, WebNews
Dando continuação à famigerada música de Engenheiros do Hawaii: “…e o POP não poupa ninguem!!”
Em janeiro passado, o papa se tornou uma das pessoas mais velhas a ter seu próprio canal no YouTube: www.youtube.com/vaticanit. E agora parece que o Papa caiu nas graças da Web 2.0 de vez.
Foi lançado o novo site do Vaticano e o mesmo oferece um aplicativo chamado “O papa encontra você no Facebook” , além de outros que permite aos fiéis verem os discursos e as mensagens do papa Bento XVI em iPhones ou iPods.
Usuários do novo site podem baixar “cartões-virtuais” com imagens do papa e mensagens dele sobre fé, amor e vida voltadas especificamente para os jovens além de poder enviá-las para outros usuários.
“Nós reconhecemos que uma igreja que não se comunica deixa de ser uma igreja e muitos jovens hoje não se voltam mais à mídia tradicional para informação e entretenimento. Eles buscam uma cultura de mídia diferente, e esse é nosso esforço para garantir que a Igreja esteja presente nessa cultura de comunicações”, afirmou o monsenhor Paul Tighe, secretário do departamento de Comunicação Social do Vaticano à revista INFO.
Interessante…..vou enviar um convite do orkut para ver se ele me aceita como amigo. =D
Novo release PHP 5.3 antecipa mudanças do PHP 6
Em 27/05/2009 by acalbuquerque
categorizado em Destaques, PHP, Tecnologia
Foi lançado mais um novo candidato release da versão 5.3.0 do PHP. Trata-se do PHP 5.3.0 RC 2 lançado no início do mês.
Essa é a segunda versão candidata e já traz algumas das novas mudanças que o famigerado PHP 6 vai possuir.
Dois recursos que estão presentes na primeira versão de testes do PHP 5.3(PHP 5.3.0 RC 1) continuam sendo aprimorados e com esse segundo canditade, há suporte aos namespaces, enclosures, internacionalização (através da nova extensão intl), manipulação de arquivos phar, suporte melhorado ao SQLite, mysqld e MySQL. Além de possui também várias melhorias de performance e que agora é reservada para o uso da linguagem as palavras “namespace”, “goto” e o nome da classe “clousure”.
A definição do Namespace faz o seguinte:
Todos os nomes de classes e funções dentro são automaticamente prefixadas com o nome do namespace. Em namespace, nomes locais sempre tem precedência sobre nomes globais. Muitos arquivos podem ser usados no mesmo namespace. A declaração do comando namespace precisa ser o primeiro comando no arquivo.
A única exceção é o comando “declare” que pode ser usado antes. Este recurso resolve o problema encontrado principalmente no desenvolvimento de frameworks de desenvolvimento, onde os nomes das classes eram monstruosos para resolver possíveis conflitos de nomes.(*em breve farei um post sobre isso)
Driver nativo MySQL
Nas versões anteriores da linguagem PHP, as interações geralmente ocorriam por meio da biblioteca cliente libmysql. Ela tinha os próprios parâmetros. Agora o driver é o mysqlnd, interno e otimizado para o engine Zend. Um código menor – e, principalmente, mais ágil – garante melhor acoplamento com o banco de dados. Outro ponto é que esse driver agora respeita os parâmetros de memória estabelecidos na configuração do PHP.
*ps: Para acompanhar todas as mudanças, acesse as notas de upgrade.
[Estréia] Nokia APP´s: Ovi Store
Em 26/05/2009 by acalbuquerque
categorizado em Destaques, Marketing / Publicidade Web, WebNews
O donos de celulares Nokia agora não podem mais reclamar!
A gigante dos celulares agora possui sua app-store, a Ovi que prometeu chegar com os “dois pés” e cumpriu!
Nesta terça (26/05), a loja online Ovi estreou com aplicativos, games e conteúdo móvel compatível com mais de 50 modelos de celular. São no total 20 mil aplicativos para os usuários de telefones Nokia, a maior parte deles são gratuitos.
Segundo a Nokia do Brasil, usuários brasileiros conseguem baixar normalmente os produtos da Ovi Store gratuitos e comprar aplicativos pagos, desde que tenham um cartão de crédito internacional. Inicialmente, a OviStore.com conta com versões localizadas para países de língua inglesa e alguns idiomas europeus, como espanhol e italiano, além do finlandês, país de origem da Nokia. Ou seja, o bom e velho PT-BR ainda está por vir mas isso não é motivo de pânico.
O site é bem limpo e direto, facilitando a vida dos internautas e a estreia tão esperada foi muito bem aceita pelo mercado. Acessem!









