Aldeia Numaboa

  • Increase font size
  • Default font size
  • Decrease font size
Home Informática Tutoriais e Programação Joomla Entenda o objeto Database do Joomla 1.5

Entenda o objeto Database do Joomla 1.5

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

O objeto database do Joomla 1.5 é uma mão na roda. Possui alguns métodos que facilitam a vida dos programadores de extensões (componentes, módulos e plugins). Como costumo fazer meus hacks e também algumas extensões, fui colecionando ao longo do tempo algumas dicas. Resolvi colocá-las neste tutorial para compartilhar o que aprendi (e também para poder acessar este texto de qualquer lugar quando meu caderno de anotações não estiver comigo sorriso ).

O básico

Bem, o básico do objeto Database é o seguinte: quando o Joomla 1.5 é iniciado, ele precisa fazer uma série de consultas à sua base de dados, senão nem consegue "entrar no ar". Para fazer estas consultas, o sistema cria um objeto database. Se este objeto já existe, não há a necessidade de criar um objeto do mesmo tipo para suprir nossas necessidades - basta chamá-lo por referência. Para invocar qualquer objeto por referência usa-se o marcador &. No caso, para obter este objeto, o código é o seguinte:

   $db =& JFactory::getDBO();

Curtinho e prático, e nosso objeto de desejo está incorporado a $db sorriso

De posse do $db podemos fazer uma porção de estripulias.

Colhendo os frutos

Com o objeto Database à disposição podemos fazer uma query (pergunta) ao banco de dados e depois colher as respostas. Para colocar uma pergunta chama-se (com ->) o método setQuery() através deste objeto. Por exemplo:

   $db->setQuery('SELECT * FROM #__content');

Depois da query colocada, podemos consultar vários resultados. Por exemplo, se quisermos apenas o valor do primeiro campo da primeira linha do conjunto de resultados, é só usar o método loadResult:

   $db =& JFactory::getDBO();
   $db->setQuery('SELECT * FROM #__content');
   $pergunta = $db->loadResult();

Se quisermos todos os campos da primeira linha do conjunto de resultados, então é preciso chamar:

$pergunta = $db->loadResultArray();

que coloca os resultados encontrados num array. Se preferir um objeto cujas propriedades sejam os nomes dos campos, você pode executar a query com:

$objeto = null;
$db->loadObject( $objeto );

Agora $objeto->title é o título do primeiro artigo achado, $objeto->alias é o apelido do artigo e assim por diante. Quando o objeto for null, este método cria o objeto e lhe atribui as propriedades com os valores da primeira linha encontrada.

Mas, se quisermos um array de objetos com todos os artigos da tabela, devemos fazer o seguinte:

   $db =& JFactory::getDBO();
   $db->setQuery('SELECT * FROM #__content');
   $pergunta = $db->loadObjectList();
   foreach( $pergunta as $artigo) {
      echo "$artigo->title: $artigo->alias"
   }

Este trecho de código vai listar todos os títulos e todos os alias dos artigos existentes na tabela de artigos.

Pois bem, e se eu quiser apenas que uma query atualize algum campo de alguma tabela da base de dados? Aí é mais fácil:

   $db =& JFactory::getDBO();
   $query = "UPDATE TABLE #__content SET title='Novo título' WHERE id=1";
   $db->setQuery( $query );
   $db->query();

Observe que a query foi colocada numa variável, a $query. Depois, esta variável foi usada como parâmetro em setQuery(). Isto não é obrigatório, mas deixa o código um pouco mais claro. Uma vez colocada a query, ela pode (e deve) ser acionada pelo método query(). Aí está tudo em riba sorriso

Mais algumas mordomias

Além de buscar resultados de pesquisas, também podemos usar o objeto database para fornecer alguns valores extras. Por exemplo:

$db->getEscaped( "pingo d'água" );

prepara strings com caracteres especiais (como é o caso do apóstrofo) para que sejam aceitas pelo banco de dados sem darem erro. O método acima transforma "pingo d'água" em "pingo d\'água".

O método getNullDate fornece uma "data e hora" zerada, ou seja, 000-00-00 00:00:00

$db->getNullDate();

Se quisermos saber quantas linhas foram produzidas pela última query que foi acionada, o método é:

$db->getNumRows()

Para fazer tratamento de erros podemos usar o seguinte:

if( $db->getErrorNum() ) {
   echo $db->getErrorMsg();
}

Finalmentes

Espero ter ajudado. Façam bom proveito porque eu também costumo pegar uma carona neste meu texto (vós costumam ter alguma dificuldade em memorizar estes pequenos detalhes, sabe como é que é sem graca )

Abraços da vó vovo Vicki

Atualização Sáb, 04.10.2008 20:06  

Na Aldeia

Há 70 visitantes online

3304 registros
0 hoje
9 nesta semana
41 neste mês

Boas vindas: Xico

Estatística

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

Visitas de onde

Top 5:
Brasil flag 73%Brasil (47546)
Portugal flag 5%Portugal (3071)
EUA flag 3%EUA (2134)
Rússia flag 0%Rússia (259)
Holanda flag 0%Holanda (239)
65143 visitas de 100 países

Hoje:151
Ontem:2587
No mês:39328
Mês passado:25815
Total:65143
Recorde:3037
No dia:04.03.10
Leituras hoje:19384
Leituras Total:280936
Bots hoje:85
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