Aldeia Numaboa

  • Increase font size
  • Default font size
  • Decrease font size
Home Informática Tutoriais e Programação Joomla Joomla - Acessando uma base de dados externa

Joomla - Acessando uma base de dados externa

Indique esta página Imprimir PDF
(4 votos, média 5.0 de 5)
Joomla

Neste tutorial vou explicar como usar o objeto database para acessar uma base de dados externa ao Joomla. No meu caso esta necessidade surgiu quando resolvi criar um módulo que mostrasse os post mais recentes dos Blogs Numaboa. Achei que seria a maior complicação e acabei descobrindo que é bico sorriso

Como surgiu a necessidade

Já faz um tempão que procuro um sistema de Blog para o Joomla. Experimentei alguns, mas nenhum deles me convenceu porque nunca chegaram a funcionar direito. Dava muita mão de obra ficar remendando o código fonte e o resultado era questionável. Das duas uma: ou teria que criar um sistema próprio ou procurar alguma coisa focada em blogs.

Como o tempo que tenho disponível não dá para criar um sistema tão complexo, resolvi pesquisar para ver se encontrava alguma coisa do tipo "prato pronto". Lembrei-me do WordPress e fui dar uma espiada. Da última vez em que havia testado este sistema, a coisa estava meio crua. Como este teste havia sido feito há alguns anos e o projeto do WP continuou em plena atividade este tempo todo, nada mais justo do que refazê-lo.

Dei uma espiada no site e fiquei surpresa com a documentação (aliás, bem melhor do que a do Joomla). Resolvi baixar o Wordpress e dar uma olhada na estrutura do sistema e no estilo da programação. GRATA SURPRESA!

Senti firmeza e resolvi instalar o WP num subdiretório do Joomla. Foi a instalação mais indolor de que tenho notícia: rápida (aliás, de uma rapidez meteórica) e extremamente fácil. Como era pra ser apenas um teste, criei uma base de dados exclusiva para o WP no MySQL - melhor não misturar as coisas, foi o que pensei. Comecei a brincar um pouco e, em pouco tempo, decidi ficar com o sistema. Bão, agora seria preciso criar um link no menu principal da Aldeia (Joomla) que chamasse os blogs (WP), coisa muito simples: bastou criar um item de menu do tipo URL com um endereço apontando para o subdiretório onde o WordPress havia sido instalado.

A coisa estava andando de vento em popa, mas... e o módulo do Joomla que mostrava as novidades? Mostrava o que havia de novo no Joomla, só que os posts no WordPress ficavam de fora. And now, pica-pau? Surgia a necessidade do Joomla poder "conversar" com uma base de dados externa piscada

O pulo do gato (ou do pica-pau)

Eu poderia criar um monte de código PHP para acessar a base de dados do WordPress, só que achei por bem dar mais uma revisada no objeto database do Joomla antes de disparar um código do tipo

$db = mysql_connect("localhost", "usuario", "senha");
mysql_select_db("BaseDeDados", $db);
...
mysql_close($db);

Fiquei feliz de ter dado esta chance ao objeto database. O resultado foi excelente e bem ao estilo Joomla. Aqui está o código para criar um novo objeto database com todas as mordomias que este objeto oferece:

$opcoes = array();
$opcoes['host']     = 'localhost';
$opcoes['user']     = 'usuario';
$opcoes['password'] = 'senha';
$opcoes['database'] = 'nomebasedados';
$opcoes['prefix']   = 'prefixo_';
$opcoes['driver']   = 'mysql';
 
$db =& JDatabase::getInstance( $opcoes );

Pronto, é só isto e o objeto database ($db) já está na mão. Se quisermos ser um pouco mais cuidadosos para que caso a conexão com a base de dados falhe, basta adicionar um pouquinho mais de código para receber possíveis mensagens de erro:

if ( JError::isError($db) ) {
   jexit('Database Error: ' . $db->toString() );
}
 
if ($db->getErrorNum() > 0) {
   JError::raiseError(500 ,'JDatabase::getInstance: Falha na conexao<br />'
      . 'joomla.library:'.$db->getErrorNum().' - '.$db->getErrorMsg() );
}

Partindo para o abraço

De posse de uma instância do objeto database do Joomla, agora é só brincar com queries. Como a estrutura do banco de dados do WordPress é um capítulo à parte, não vai ser neste tutorial que vou entrar em detalhes. Afinal de contas, era só para mostrar como fazer uma conexão com uma base de dados externa. Mas, vá lá. Uma das queries poderia ser algo como:

$query = "SELECT DISTINCT post_parent FROM #__posts ORDER BY post_parent DESC";
$db->setQuery( $query );
$parents = $db->loadObjectList();

Como sempre, espero ter ajudado compartilhando minhas tentativas e experiências. Nos vemos uma outra hora quando eu contar algumas coisas que descobri no WP.

Valeu comemora

Atualização Seg, 27.04.2009 14:08  

Na Aldeia

Há 99 visitantes e 1 usuário registrado online

3297 registros
1 hoje
2 nesta semana
34 neste mês

Boas vindas: Jose

Estatística

Artigos: 1063
Leituras: 6026095
Arquivados: 21
Downloads: 533
Baixados: 171988
Glossário: 1208
Bibliografia: 25
Links: 90

Visitas de onde

Top 5:
Brasil flag 73%Brasil (43629)
Portugal flag 5%Portugal (2729)
EUA flag 3%EUA (2014)
Rússia flag 0%Rússia (246)
Holanda flag 0%Holanda (237)
59828 visitas de 99 países

Hoje:2495
Ontem:1791
No mês:34013
Mês passado:25815
Total:59828
Recorde:3037
No dia:04.03.10
Leituras hoje:22572
Leituras Total:261084
Bots hoje:422
Dados desde:16.02.2010

Login

Kanji da hora




Faça contato







Juro por Deus que estou morta de vergonha. Ao invés do nosso presidente ouvir os apelos e tentar ajudar, ele "tira sarro" de prisioneiros políticos perseguidos pelo seu lunático amigo Castro, apreciador do frango ensopado de dona Letícia.

Leia Mais