Pages

Subscribe:

Ads 468x60px

Labels

17/05/2012

Conexao com base externa dentro de Componente Joomla! 1.5.25

Olá a todos(as),

Com base em estudos de como construir um componente para CMS Joomla segue este registro de estudo dos métodos e objetos do Framework Joomla! para desenvolvimento de aplicativos componentes.

Segue aqui para ficar registrado o método de como estabelecer conexao com base de dados externa à session e contexto de um componente Joomla! 1.5.25:

/*
1-   //Acessando uma base de dados Externa dentro do joomla!
2-   $opcoes = array();
3-   $opcoes['host']     = 'localhost';
4-   $opcoes['user']     = 'root'; //usuario mysql
5-   $opcoes['password'] = 'SENHA'; //senha do mysql
6-   $opcoes['database'] = 'riovagas02'; //Nome do banco
7-   $opcoes['prefix']   = '';  //PREFIXO DA TABELA, SE TIVER
8-   $opcoes['driver']   = 'mysql';
9-   //==========================================================
10-  $db = "";

11-  $db =& JDatabase::getInstance( $opcoes );
12-  //Tratando os Erros  -------------------------------------------------------------
13-  if ( JError::isError($db) ) {
14-   jexit('Database Error: ' . $db->toString() );
15-  }

16-  if ($db->getErrorNum() > 0) {
17-     JError::raiseError(500 ,'JDatabase::getInstance: Falha na conexao
'
18-        . 'joomla.library:'.$db->getErrorNum().' - '.$db->getErrorMsg() );
19-  }
*/

Agora basta executarmos uma consulta de exemplo para vermos o resultado de nossa conexão:

/*
20-   $sqlUser = "SELECT `id_Trabalhador` , `nome` , `status` , `nivel_user`, email_corporativo AS email    FROM  #__recrutador   WHERE email_corporativo = '".$usuario->email."'         ORDER BY id_TrabalhadorASC";
21-   $db->setQuery( $sqlUser );
22-   $parents = $db->loadObjectList();

23-   foreach ( $parents as $row ) {
24-       $UsuarioNome = $row->email;
25-       $idTrabalhador = $row->id_Trabalhador;
26-       $nivelDoUsuario = $row->nivel_user;
27-       $userStatus = $row->status;
28-     }
*/

Observe acima que foi montado uma matriz (linhas de 1 a 10) com os dados de sua conexão com a base de dados do Mysql.  Observa-se também  que a conexão é estabelecida pelo objeto "JDatabase" que possui o método herdado (::) de nome "getInstance" que retorna uma referência ao objeto de banco de dados global (linha 11).  Após isso vemos o tratamento de erros de conexão (linhas 12 a 19).
Na linha 20 digitamos o nosso SQL pretendido e através do método "setQuery()" realizamos a execução da consulta SQL, observe que destaquei em vermelho este parâmetro (#__) que é tratado internamente pelo Joomla! para subustitui pelo prefixo da tabela, se houver, caso contrário não precisa colocá-lo.
Para retonarmos na tela com os dados de nossa consulta usaremos o método "loadObjectList()" carregando uma lista de objetos de banco de dados, que ao combinarmos com a função PHP nativa de varredura "foreach" iremos trazer os campos de nosso interesse da tabela em banco.

Esse recurso interno do Framework do Joomla! é sem dúvida uma mão na roda para casos em que estamos desenvolvendo aplicações que consultam bases de dados externas ao nosso CMS.

Espero que ajude alguém de alguma forma, fico a disposição para sugestões e criticas construtivas.

Um abraço a todos(as).

2 comentários:

Unknown disse...

Seria essa mesma lógica se fizesse um script em php para executar essa mesma função?

Roberto disse...

A vantagem de usar o objeto de conexão JDatabase nativo do framework interno do Joomla! seria uma melhor prática do que fazer uma conexão sem usar os métodos do Joomla! Mas o programador tem liberdade para fazer tal procedimento, embora não seja nada recomendado.

Postar um comentário

Todos os comentários serão moderados e postados um tempo depois, comentários ofencivos serão deletados.