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).

09/05/2012

Select Oculta os CheckBox

Select Oculta os CheckBox:

Neste artigo de hoje vou compartilhar uma necessidade que tive de implementar em um formulário criado pelo componente RSForm Pro! do Joomla! versão 2.5.
A necessidade veio do momento em que o usuário escolhe por exemplo: - um curso em um select ou combo (dropdow) que nos tráz uma lista de cursos.  Ao escolher um curso específico no combo, mostrará somente os turnos que os cursos estão disponíveis, como por exemplo:

Administração   --------- [ ]Manhã [ ]Tarde [ ]Noite
Fisioterapia        --------- [ ]Manhã [ ]Noite
Psicologia          --------- [ ]Noite

O passo primordial seria usar o Javascript para que este evento não dê refresh na página, para isso o meu amigo Daniel elaborou o seguinte script com JQuery:
----------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------
Este código acima seria colocado no Head do HTML e o abaixo no BODY:
-----------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------
 O resultado final pode ser visto e baixado no arquivo fonte abaixo:

Bom eu achei muito interessante, espero ajudar alguém ou quem quiser melhorar esta ideia e compartilhar o resultado, fiquem a vontade.

Um abraço e até logo. :)

Referências: www.danh.com.br